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
# 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