GROMACS version: 2022.4
GROMACS modification: No
Hi! I tried to build GROMACS 2022.4 + hipSYCL on my PC with ROCm 5.3.3 installed. I’m currently stuck at:
libgromacs.so.7: undefined reference to `__kmpc_...'
[ 98%] Built target gmxapi
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/box.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/gmxcalculatorcpu.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/integrator.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/interactions.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/molecules.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/nbnxmsetuphelpers.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/particlesequencer.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/particletype.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/simulationstate.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/topologyhelpers.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/topology.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/tpr.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/virials.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/listed_forces/calculator.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/listed_forces/transformations.cpp.o
[ 98%] Building CXX object api/nblib/CMakeFiles/nblib.dir/listed_forces/conversions.cpp.o
[100%] Building CXX object api/nblib/CMakeFiles/nblib.dir/listed_forces/convertGmxToNblib.cpp.o
[100%] Building CXX object api/nblib/CMakeFiles/nblib.dir/util/setup.cpp.o
[100%] Linking CXX shared library ../../lib/libnblib_gmx.so
[100%] Built target nblib
[100%] Building CXX object api/nblib/samples/CMakeFiles/argon-forces-integration.dir/argon-forces-integration.cpp.o
[100%] Linking CXX executable ../../../bin/argon-forces-integration
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_dispatch_next_4'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_for_static_fini'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_barrier'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_dispatch_fini_4'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_dispatch_init_4'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_for_static_init_4u'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_end_critical'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_for_static_init_8'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_master'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_for_static_init_8u'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_fork_call'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_for_static_init_4'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_ordered'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_push_num_threads'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_global_thread_num'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_critical'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_reduce_nowait'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_end_master'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_single'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_end_single'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_end_ordered'
/usr/bin/ld: /home/labhhc/gromacs-2022.4/build/lib/libgromacs.so.7: undefined reference to `__kmpc_end_reduce_nowait'
collect2: error: ld returned 1 exit status
make[2]: *** [api/nblib/samples/CMakeFiles/argon-forces-integration.dir/build.make:100: bin/argon-forces-integration] Error 1
make[1]: *** [CMakeFiles/Makefile2:4420: api/nblib/samples/CMakeFiles/argon-forces-integration.dir/all] Error 2
make: *** [Makefile:166: all] Error 2
cmake commands i used were:
cmake .. -DCMAKE_C_COMPLIER=/opt/rocm-5.3.3/llvm/bin/clang -DCMAKE_CXX_COMPLIER=/opt/rocm-5.3.3/llvm/bin/clang++ -DGMX_GPU=SYCL -DGMX_SYCL_HIPSYCL=ON -DHIPSYCL_TARGETS='hip:gfx1030' -DGMX_BUILD_OWN_FFTW=ON -DREGRESSIONTEST_DOWNLOAD=ON -DLLVM_DIR=/opt/rocm/llvm/lib/cmake/llvm/
The cmake returned no error.
I tested to see if clang -fopenmp
pointed to ROCm OpenMP. Here is the result:
/opt/rocm/llvm/bin/clang++ -fopenmp main.cpp && readelf -d ./a.out && ldd ./a.out
Dynamic section at offset 0x1168 contains 30 entries:
Tag Type Name/Value
0x000000000000001d (RUNPATH) Library runpath: [/opt/rocm-5.3.3/llvm/bin/../lib]
0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libomp.so]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000015 (DEBUG) 0x0
0x0000000000000007 (RELA) 0x200968
0x0000000000000008 (RELASZ) 72 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x0000000000000017 (JMPREL) 0x2009b0
0x0000000000000002 (PLTRELSZ) 384 (bytes)
0x0000000000000003 (PLTGOT) 0x204368
0x0000000000000014 (PLTREL) RELA
0x0000000000000006 (SYMTAB) 0x2002e8
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000005 (STRTAB) 0x2005e0
0x000000000000000a (STRSZ) 903 (bytes)
0x000000006ffffef5 (GNU_HASH) 0x2005b8
0x0000000000000019 (INIT_ARRAY) 0x203158
0x000000000000001b (INIT_ARRAYSZ) 16 (bytes)
0x000000000000001a (FINI_ARRAY) 0x203150
0x000000000000001c (FINI_ARRAYSZ) 8 (bytes)
0x000000000000000c (INIT) 0x202008
0x000000000000000d (FINI) 0x202024
0x000000006ffffff0 (VERSYM) 0x2004f8
0x000000006ffffffe (VERNEED) 0x200524
0x000000006fffffff (VERNEEDNUM) 3
0x0000000000000000 (NULL) 0x0
linux-vdso.so.1 (0x00007ffcf17bd000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f9cd4969000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9cd481a000)
libomp.so => /opt/rocm-5.3.3/llvm/bin/../lib/libomp.so (0x00007f9cd4727000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f9cd470c000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9cd46e9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9cd44f7000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9cd4b6b000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f9cd44eb000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9cd44e5000)
How can I fix this kmpc linking problem? Thank you!