MKL on a 16-core Linux machine

MKL on a 16-core Linux machine

I'm having trouble getting MKL 10.0.1 to exploit more than 1 core on a 16 core Xeon machine. Im running gcc 4.1.2 and Linux 2.6.18-53.1.4.el5.

What I do know:
1. The same code successfully exploits 4 cores on an XP machine
2. Other OpenMP code on the Linux machine successfully exploits all 16 cores.
3. omp_get_num_threads() returns 16.
4. omp_set_num_threads(16) causes a seg fault. (smaller values don't work either)
5. Im the only one on the machine.
6. The BLAS examples that come with MKL also only use 1 core and seg fault when I try omp_set_num_threads().

I suspect Im linking wrong. Ive tried both static linking:

MKLLIB = /opt/intel/mkl/10.0.1.014/lib/em64t
LDFLAGS = -L${MKLLIB} -lguide -liomp5 -lmkl lm lpthread

And dynamic linking:

MKLLIB = /opt/intel/mkl/10.0.1.014/lib/em64t
LDFLAGS = -L${MKLLIB} ${MKLLIB}/libmkl.so ${MKLLIB}/libiomp5.so -lm lpthread

Neither makes a difference. Is there something obvious Im missing?

Any advice would be appreciated,

Ted

1 post / 0 new
For more complete information about compiler optimizations, see our Optimization Notice.