Skip to content
Snippets Groups Projects
  • Ben Cumming's avatar
    Seperable compilation of mechanism kernels on GPU (#353) · 3c283219
    Ben Cumming authored and Sam Yates's avatar Sam Yates committed
    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`, comprising the definition of the mechanism-specific 'X_ParamParck' struct used to pass function arguments to the CUDA kernels.
    * Write the CUDA kernels and C wrappers to `X_impl.cu`.
    * Write the public C++ mechanism interface (with calls to implementation wrappers) to `X.hpp`.
    * Modify modcc driver to support multiple generated output files.
    3c283219
.gitignore 647 B