Skip to content

Kokkos kernels

Pre-release
Pre-release
Compare
Choose a tag to compare
@diehlpk diehlpk released this 12 Jul 16:33
· 972 commits to master since this release
e8c225c

Changes and added features:

Reworked gravity module
--> Got rid of the thread_local buffers
--> Got rid of temporary result buffers ( ~ 10% less memory consumption overall)
--> Added (better) kernels for edge cases (root sub-grid, p2m interactions)

Added Kokkos gravity kernels
--> Work on both GPU (tested with CUDA) and CPUs
--> using kokkos/simd-math for portable SIMD instructions
--> Able to use new Kokkos HPX backend via cmake flags (default OFF)

Added optimized complete AMR handling
--> Added optimized version
--> Added Vc version
--> Added CUDA version

Added CUDA hydro module
--> Ported flux to CUDA
--> Ported reconstruct to CUDA
--> Ported various auxiliary methods to CUDA to avoid data movements

Added Kokkos hydro module
--> Ported flux to KOKKOS
--> Ported reconstruct to KOKKOS
--> Ported auxiliary methods to KOKKOS
--> Work on both GPU (tested with CUDA) and CPUs

Better tests
--> Raised number of tests from 11 to 478
--> Added submodule to handle the silo testa-data better
--> Also added tests not depending on silo
--> Added tests for different sub-grid sizes (8 and 16)
--> Added Jenkins to automatically run all tests in different configurations (g++, clang, with/without-cuda, with/without-kokkos)
--> Fixed CircleCI tests

Misc
--> Fixed compilation with HPX 1.5.0 and newer
--> Fixed compilation for newer compiler versions
--> Fixed compilation on Power architecture (for Summit in particular)
--> Removed (most) Vc dependencies from crucial files, allowing easier GPU builds
--> Added support for clang compilation
--> Better parameter checks

New Dependencies
--> CPPuddle https://github.com/SC-SGS/CPPuddle
--> [Optional] kokkos hpx-kokkos kokkos/simd-math
--> [Optional as submodule] https://github.com/G-071/octotiger-testdata
--> Move from HPX <= 1.4.0 to >= 1.5.0
--> Move to Boost >= 1.73

Changed/New runtime parameters
--> multipole_host_kernel_type
--> multipole_device_kernel_type
--> monopole_host_kernel_type
--> monopole_device_kernel_type
--> hydro_host_kernel_type
--> hydro_device_kernel_type
--> amr_boundary_kernel_type
--> Checkout octotiger --help for more information about the parameters!