I've been trying to compile cluster version of MKL FFT (MPI version). I've followed link adviser for 64-bit architecture and used this line:
mpicc -o fftmkl_mpi.out fftmkl_mpi.c -Wl,--start-group $MKLROOT/lib/mic/libmkl_cdft_core.a $MKLROOT/lib/mic/libmkl_intel_ilp64.a $MKLROOT/lib/mic/libmkl_core.a $MKLROOT/lib/mic/libmkl_intel_thread.a -Wl,--end-group $MKLROOT/lib/mic/libmkl_blacs_intelmpi_ilp64.a -lpthread -lm
Mind you that I'm using regular mpicc wrapper, with previously set OMPI_CC=icc variable in order for wrapper to use icc instead of gcc. However the previous compiling line (suggested by linking adviser) produces lots of (almost identical) errors, one of them being:
ld: k1om architecture of input file `/home/sataric/intel/composer_xe_2013_sp1.1.106/mkl/lib/mic/libmkl_core.a(_knc_xcsdft2d.o)' is incompatible with i386:x86-64 output
I have sourced 64-bit compiler variables in script via: source ~/intel/composer_xe_2013_sp1.1.106/bin/compilervars.sh intel64, but it seems that there is some 32-64 bit incompatibility in linking stage, and I don't know why?
Thanks in advance for any help :)