Kokkos unit testing with gpu on

using “-D PKG_KOKKOS=yes” (which is where my new styles need to be unit tested) adds “-Xcudafe;–diag_suppress=unrecognized_pragma” but also using “-D ENABLE_TESTING=on” switches compiler from nvc++ to g++ so i get “unrecognized command-line option ‘-Xcudafe’” and “unrecognized command-line option ‘–diag_suppress=unrecognized_pragma’” errors

mkdir tmp; cd tmp
git clone GitHub - lammps/lammps: Public development project of the LAMMPS MD software package
mkdir lammps/build; cd lammps/build
cmake …/cmake -D ENABLE_TESTING=on
-D PKG_KOKKOS=yes -D Kokkos_ENABLE_CUDA=yes
-D Kokkos_ARCH_HOSTARCH=POWER9 -D Kokkos_ARCH_GPUARCH=VOLTA70
-D Kokkos_ENABLE_OPENMP=yes -D BUILD_OMP=yes
-D Kokkos_ENABLE_SERIAL=yes -DKokkos_ARCH_VOLTA70=ON
-D PKG_MOLECULE=yes -D PKG_KSPACE=yes ;
cmake --build .

[ 72%] Building CXX object CMakeFiles/lammps.dir/home/t/tperkins/mmurp027/scratch/tmp/lammps/src/KOKKOS/region_block_kokkos.cpp.o
[ 72%] Linking CXX static library liblammps.a
[ 72%] Built target lammps
[ 73%] Building CXX object CMakeFiles/lmp.dir/home/t/tperkins/mmurp027/scratch/tmp/lammps/src/main.cpp.o
[ 73%] Linking CXX executable lmp
[ 73%] Built target lmp
[ 73%] Built target gtest
[ 73%] Building CXX object _deps/googletest-build/googlemock/CMakeFiles/gmock.dir/src/gmock-all.cc.o
[ 73%] Linking CXX static library ../../../lib/libgmock.a
[ 73%] Built target gmock
[ 73%] Building CXX object _deps/googletest-build/googlemock/CMakeFiles/gmock_main.dir/src/gmock_main.cc.o
[ 73%] Linking CXX static library ../../../lib/libgmock_main.a
[ 73%] Built target gmock_main
[ 74%] Building CXX object _deps/googletest-build/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
[ 74%] Linking CXX static library ../../../lib/libgtest_main.a
[ 74%] Built target gtest_main
[ 74%] Building CXX object unittest/utils/CMakeFiles/test_tokenizer.dir/test_tokenizer.cpp.o
g++: error: unrecognized command-line option ‘-Xcudafe’
g++: error: unrecognized command-line option ‘--diag_suppress=unrecognized_pragma’
gmake[2]: *** [unittest/utils/CMakeFiles/test_tokenizer.dir/build.make:76: unittest/utils/CMakeFiles/test_tokenizer.dir/test_tokenizer.cpp.o] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:3025: unittest/utils/CMakeFiles/test_tokenizer.dir/all] Error 2
gmake: *** [Makefile:146: all] Error 2

i dont see a ctest executable in build dir yet. how are kokkos pair and dihedral styles unit tested with gpu on ? am i doing something wrong with cmake ??

The ctest executable is just a wrapper to run the tests and provided by CMake.

This is currently not supported in the unittest tree. To make it work, quite a bit more programming in the test harnesses would be required which in turn depends on introspection APIs in the KOKKOS package that would allow to reliably determine the type and number of supported GPUs. We currently only support KOKKOS acceleration with OpenMP since we can depend on threads being always available and an API to test for OpenMP availability in the KOKKOS package has been added.