-
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
# executables
*.exe
*.out
# compiler output
*.o
*.a
*.so
# intermediate python files
*.pyc
# graphviz files generated by executables
*.dot
# vim temporaries
*.swp
*.swo
*.swn
*.swq
*.swm
*.swl
# tar files
*.tar
# json files
*.json
# generated when making on os x
*.dSYM
# output of visualizing cell structures
*.dot
*.pdf
*.jpg
*.dat
# latex output
*.aux
*.log
*.out
*.pdf
*.toc
*.blg
# cmake
CMakeFiles
CMakeCache.txt
cmake_install.cmake
Makefile
# mechanisms generated from .mod files
mechanisms/multicore/*.hpp
mechanisms/gpu/*.hpp
mechanisms/gpu/*.cu
# build path
build*
commit.msg
# eclipse remote sync folders
.ptp-sync-folder