-
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