Seperable compilation of mechanism kernels on GPU (#353)
Separable compilation of the CUDA kernels generated by modcc from NMODL files. CMake scripts: * Update the `build_modules()` helper function to cleanly handle calls to modcc that generate multiple output files. * Add a new library target `gpu_mechanisms` for the separately compiled CUDA kernels and the implementation of their C wrappers. * Reduce verbosity of compilation messages. * Simplify mechanism C++ namespace use: move everything in nest::mc::mechanisms::gpu::_mechanism-name_ into `nest::mc::gpu`, and similarly for multicore mechanism implementations, ions. * Remove template parameters for `value_type` and `size_type` from all of the mechanism implementations, and use `fvm_value_type` and `fvm_size_type` everywhere instead. modcc changes: * Modify `CUDAPrinter` to keep track of 3 text buffers, one each for "implementation", "interface" and "implementation interface": * Write the CUDA implementation interface to `X_impl.hpp...
Showing
- .gitignore 1 addition, 3 deletions.gitignore
- CMakeLists.txt 3 additions, 3 deletionsCMakeLists.txt
- mechanisms/BuildModules.cmake 12 additions, 7 deletionsmechanisms/BuildModules.cmake
- mechanisms/CMakeLists.txt 26 additions, 3 deletionsmechanisms/CMakeLists.txt
- modcc/cprinter.cpp 2 additions, 2 deletionsmodcc/cprinter.cpp
- modcc/cudaprinter.cpp 494 additions, 438 deletionsmodcc/cudaprinter.cpp
- modcc/cudaprinter.hpp 29 additions, 13 deletionsmodcc/cudaprinter.hpp
- modcc/modcc.cpp 52 additions, 46 deletionsmodcc/modcc.cpp
- modcc/module.cpp 2 additions, 2 deletionsmodcc/module.cpp
- src/CMakeLists.txt 1 addition, 1 deletionsrc/CMakeLists.txt
- src/backends/gpu/fvm.cu 6 additions, 6 deletionssrc/backends/gpu/fvm.cu
- src/backends/gpu/fvm.hpp 4 additions, 4 deletionssrc/backends/gpu/fvm.hpp
- src/backends/gpu/kernels/detail.hpp 0 additions, 5 deletionssrc/backends/gpu/kernels/detail.hpp
- src/backends/gpu/stimulus.hpp 0 additions, 2 deletionssrc/backends/gpu/stimulus.hpp
- src/backends/multicore/fvm.cpp 6 additions, 6 deletionssrc/backends/multicore/fvm.cpp
- src/backends/multicore/fvm.hpp 4 additions, 4 deletionssrc/backends/multicore/fvm.hpp
- src/backends/multicore/stimulus.hpp 6 additions, 9 deletionssrc/backends/multicore/stimulus.hpp
- src/fvm_multicell.hpp 11 additions, 11 deletionssrc/fvm_multicell.hpp
- src/ion.hpp 0 additions, 2 deletionssrc/ion.hpp
- src/mechanism.hpp 0 additions, 2 deletionssrc/mechanism.hpp
Please register or sign in to comment