Feature/gpu validation issue #68 (#84)
Fixes #68 Corresponding feature: #67 * Reproduce the hh-soma validation test on GPU. * Reproduce the ball and stick model on GPU. * Reproduce miniapp spike chains. * Add `cell_group` unit test to the cuda unit tests: builds simple ball and stick model and integrates for 50ms and records how many spikes occur; it is a simple early warning that something is broken, but is no substitute for the validation tests. * Update the `validate_soma`, `validate_ball_and_stick` and `validate_synapses` validation tests for the GPU backend: * refactor individual tests into test runner functions that are templated on lowered cell type; * for each of the original validation tests add a cuda (.cu) implementation, and write an additional "backend" field to the validation trace metadata. * Use a `CPrinter` to generate the same `net_receive` block that is used for the multicore backend. Note: this is not efficient, because each read/write requires a cuda memcpy between host and device memory, however it allows us to pass all unit and validation tests. A more efficient GPU-specific implementation is left for later optimization work. * Make paths to `gtest.h`, `test_common_cells.hpp` etc. in test sources consistent relative paths, and remove the `tests/` directory from the include path.
Showing
- modcc/cprinter.cpp 9 additions, 18 deletionsmodcc/cprinter.cpp
- modcc/cprinter.hpp 3 additions, 0 deletionsmodcc/cprinter.hpp
- modcc/cudaprinter.cpp 36 additions, 32 deletionsmodcc/cudaprinter.cpp
- modcc/textbuffer.cpp 7 additions, 0 deletionsmodcc/textbuffer.cpp
- modcc/textbuffer.hpp 3 additions, 0 deletionsmodcc/textbuffer.hpp
- src/backends/fvm_multicore.hpp 1 addition, 1 deletionsrc/backends/fvm_multicore.hpp
- tests/CMakeLists.txt 0 additions, 3 deletionstests/CMakeLists.txt
- tests/global_communication/mpi_listener.hpp 2 additions, 2 deletionstests/global_communication/mpi_listener.hpp
- tests/global_communication/test.cpp 1 addition, 1 deletiontests/global_communication/test.cpp
- tests/global_communication/test_communicator.cpp 1 addition, 1 deletiontests/global_communication/test_communicator.cpp
- tests/global_communication/test_exporter_spike_file.cpp 1 addition, 1 deletiontests/global_communication/test_exporter_spike_file.cpp
- tests/global_communication/test_mpi_gather_all.cpp 2 additions, 2 deletionstests/global_communication/test_mpi_gather_all.cpp
- tests/modcc/test.hpp 1 addition, 1 deletiontests/modcc/test.hpp
- tests/unit/CMakeLists.txt 1 addition, 0 deletionstests/unit/CMakeLists.txt
- tests/unit/test_cell_group.cu 36 additions, 0 deletionstests/unit/test_cell_group.cu
- tests/unit/test_filter.cpp 2 additions, 2 deletionstests/unit/test_filter.cpp
- tests/validation/CMakeLists.txt 23 additions, 12 deletionstests/validation/CMakeLists.txt
- tests/validation/convergence_test.hpp 2 additions, 1 deletiontests/validation/convergence_test.hpp
- tests/validation/tinyopt.hpp 1 addition, 1 deletiontests/validation/tinyopt.hpp
- tests/validation/trace_analysis.cpp 1 addition, 1 deletiontests/validation/trace_analysis.cpp
Please register or sign in to comment