- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Greetings -- I'm compiling the same Fortran code with or without OpenMP on my Mac OSX Core Duo MacBook with 32-bit prescott CPU. Works fine without -openmp. When I try to exploit OpenMP, which the application allows, here's what happens:
zsh: illegal hardware instruction ./example.DARWIN_ICC_IA32.x < netflix-double-rra.in
-- now I make sure I use ifort as
IFORT=/opt/intel/fc/10.1.012/bin/ifort
and other options are
# Compiler flags
OPENMP = -openmp
OPTIMIZE = -O3 -ipo $(CPUOPT)
FFLAGS = -w95 -cm -assume buffered_io -vec_report0 $(OPTIMIZE) $(OPENMP)
-- where CPUOPT is not specified for ifort, I use -march-prescott for gfortran. (Which architecture could I use for the 32-bit Core Duo with ifort?)
My MKL is used as follows:
BLAS = -L/Library/Frameworks/Intel_MKL.framework/Libraries/32 -lmkl_intel -lmkl_intel_thread -lmkl_lapack -lmkl_core
-- as you can see, I get 32-bit throughout. What's up with the illegal instruction?
zsh: illegal hardware instruction ./example.DARWIN_ICC_IA32.x < netflix-double-rra.in
-- now I make sure I use ifort as
IFORT=/opt/intel/fc/10.1.012/bin/ifort
and other options are
# Compiler flags
OPENMP = -openmp
OPTIMIZE = -O3 -ipo $(CPUOPT)
FFLAGS = -w95 -cm -assume buffered_io -vec_report0 $(OPTIMIZE) $(OPENMP)
-- where CPUOPT is not specified for ifort, I use -march-prescott for gfortran. (Which architecture could I use for the 32-bit Core Duo with ifort?)
My MKL is used as follows:
BLAS = -L/Library/Frameworks/Intel_MKL.framework/Libraries/32 -lmkl_intel -lmkl_intel_thread -lmkl_lapack -lmkl_core
-- as you can see, I get 32-bit throughout. What's up with the illegal instruction?
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Same result occurs if I link with Veclib or Goto BLAS -- when OpenMP is enabled. Without OpenMP, ifort_mkl works fine. I process a very large matrix which takes up 1.1 GB. Same code compiled with OpenMP works fine with a small matrix. I increase ulimit -x unlimited for all x's reported by ulimit -a.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't have any experience with 32-bit Core Duo, but it doesn't have a reputation for effective OpenMP support. I can't find -march=prescott in the documentation (-xP would be the usual equivalent). -march=pentium4 should be OK.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You most certainly do NOT have any kind of "Prescott" in a Mac. That was the first 90nm Pentium 4 desktop processor. Core Duo in a MacBook would be Dothan. But for the purpose of generated code selection, Prescott is compatible. 32-bit ifort will default to that so there's nothing to specify.
It would be helpful to know where in the application this illegal instruction fault is happening.
It would be helpful to know where in the application this illegal instruction fault is happening.

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page