# NeuroGPU + BBP TTPC Example
## Prerequisites
- CUDA > 10
- NEURON > 7.6.7
- Makefile
- GCC > 8.3.0
- see requirements.txt for other python requirments
## Getting Started
There are a few steps for porting NEURON models to NeuroGPU:
1. Upload hoc/mod files to a directory (like BBP_TTPC_Example folder).
2. Compile with `nrnivmodl`.
3. run `python extractModel.py`to build a directory called `PyNeuroGPU_Unix`.
4. run `moveFiles.sh` to copy files into `PyNeuroGPU_Unix`.
5. chdir to `PyNeuroGPU_Unix/python`
6. Inside that directory you run `python extractModel.py` again.
7. Then run `python extractModel_mappings.py`.
8. Now you can run NeuroGPU by running `python runBBP.py`
## Moving the Model
- We commonly move the simulation (NeuroGPU executable in `PyNeuroGPU_Unix` folder) to other repos / places for convienence.
- To do this you can just move the whole `PyNeuroGPU_Unix` folder to wherever you want to run the simulation.
- NeuroGPU requires that:
- If you change the params you use `allparams_from_mapping(param_values)`.
- There needs to be two folders available one directory up from the directory `NeuroGPU` is being called from -- `Data` and `src`. `Data` contains files NeuroGPU needs to accesss and `src` contains the source code for the CUDA model.
## Building Out from the Example
- To use another model one just needs to replace the hoc/mod files in BBP_TTPC_Example folder.
- Not all hoc and mod files are supported.
Please reach out to zladd@berkeley.edu or rbenshalom@ucdavis.edu if you encounter any issues. Or you can open an issue in https://github.com/roybens/NeuroGPU.
## Changelog
2022-12: MOD-C-2-CPP: Compatibility fixed for NEURON 9.0, 8.2 and 8.1
2023-04: Remove generated C files and hidden files. Update branching.mod for
compatibility with new data structures coming in NEURON 9.0.