[gmx-users] Compile-time errors with MKL
Mark Abraham
mark.abraham at anu.edu.au
Tue Jul 13 02:29:07 CEST 2010
On 13/07/10 08:20, Elton Carvalho wrote:
> Hello there!
>
>
> I'm trying to compile gromacs 4.0.7 with icc, mkl and openmpi.
>
> The problem is that, when I set the environment to
>
> LDFLAGS=-L/home/opt/intel/cmkl/10.2.5.035/lib/em64t/ -L/usr/lib
> CPPFLAGS=-I/home/opt/intel/cmkl/10.2.5.035/include/
>
> and edit line 26576 of ./config to read
> LIBS="-lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core $LIBS"
> instead of
> LIBS="-lmkl $LIBS",
>
That seems like asking for trouble. Why not set the LIBS environment
variable properly before calling configure?
> I get the following errors in config.log:
>
> ===== START =====
>
> configure:26570: checking for DftiComputeForward in -lmkl
> configure:26614: cc -o conftest -O3 -fomit-frame-pointer
> -finline-functions -Wall -Wno-unused -funroll-all-loops
> -I/home/opt/intel/cmkl/10.2.5.035/include/
> -L/home/opt/intel/cmkl/10.2.5.035/lib/em64t/ -L/usr/lib conftest.c
> -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lm>&5
> /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/bin/ld:
> skipping incompatible /usr/lib/libm.so when searching for -lm
> /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/bin/ld:
> skipping incompatible /usr/lib/libm.a when searching for -lm
> /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/bin/ld:
> skipping incompatible /usr/lib/libc.so when searching for -lc
> /usr/lib64/gcc/x86_64-suse-linux/4.4/../../../../x86_64-suse-linux/bin/ld:
> skipping incompatible /usr/lib/libc.a when searching for -lc
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_ok_to_fork'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_end_single'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_ordered'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_for_static_init_8'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `omp_get_thread_num'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_barrier'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `omp_get_num_threads'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `omp_get_num_procs'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_dispatch_next_4'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_end_reduce_nowait'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_critical'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_dispatch_fini_8'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_serialized_parallel'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_end_critical'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_dispatch_init_8'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `ompc_set_nested'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `omp_get_nested'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_dispatch_fini_4'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `omp_in_parallel'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_push_num_threads'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_reduce_nowait'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `omp_get_max_threads'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_for_static_init_4'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_end_serialized_parallel'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_flush'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_single'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_dispatch_next_8'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_dispatch_init_4'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_global_thread_num'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_end_ordered'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_fork_call'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_atomic_fixed8_add'
> /home/opt/intel/cmkl/10.2.5.035/lib/em64t//libmkl_intel_thread.so:
> undefined reference to `__kmpc_for_static_fini'
> collect2: ld returned 1 exit status
>
> ===== END =====
>
> All other setups of CPPFLAGS and LDFLAGS, also with -lmkl in
> ./configure give "mkl not found" sort of errors. This one seems to be
> the setup that got most far.
>
> Any ideas to solve this? I have mkl versions 11.1/072 and 10.2.5.035.
> Linking to each of them gives similar errors.
>
You need to provide the support libraries in the right order. The MKL
docs for your platform should make the correct order clear.
Otherwise, since there's a nearly insignificant advantage to icc+mkl
over gcc+FFTW3, use the latter.
Mark
More information about the gromacs.org_gmx-users
mailing list