Skip to content
This repository was archived by the owner on Mar 20, 2023. It is now read-only.

Commit 5fd38f6

Browse files
authored
Update and cleanup documentation (#463)
* Update and cleanup documentation * remove unnecessary info from README * remove .gitreview from gerrit * CREDIT.txt is no longer required * added .gitignore * update mod2c to master * address review - do not add editor specific files
1 parent 190b7ea commit 5fd38f6

File tree

5 files changed

+31
-88
lines changed

5 files changed

+31
-88
lines changed

.gitignore

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
cmake-build-debug*
2+
*build*
3+
spconfig.*
4+
*~
5+
.DS_Store
6+
*.swp
7+
*.srctrl*
8+
9+
# HPC coding conventions
10+
.clang-format
11+
.clang-tidy
12+
.cmake-format.yaml
13+
.pre-commit-config.yaml

.gitreview

Lines changed: 0 additions & 6 deletions
This file was deleted.

CREDIT.txt

Lines changed: 0 additions & 52 deletions
This file was deleted.

README.md

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
[![Build Status](https://travis-ci.org/BlueBrain/CoreNeuron.svg?branch=master)](https://travis-ci.org/BlueBrain/CoreNeuron)
1+
[![Build Status](https://travis-ci.org/BlueBrain/CoreNeuron.svg?branch=master)](https://travis-ci.org/BlueBrain/CoreNeuron) ![CoreNEURON CI](https://github.com/BlueBrain/CoreNeuron/workflows/CoreNEURON%20CI/badge.svg)
22

33
# CoreNEURON
4-
> Optimised simulator engine for [NEURON](https://www.neuron.yale.edu/neuron/)
4+
> Optimised simulator engine for [NEURON](https://github.com/neuronsimulator/nrn)
55
66
CoreNEURON is a compute engine for the [NEURON](https://www.neuron.yale.edu/neuron/) simulator optimised for both memory usage and computational speed. Its goal is to simulate large cell networks with small memory footprint and optimal performance.
77

8-
## Features / Compatibility
8+
## NEURON Models Compatibility
99

1010
CoreNEURON is designed as a library within the NEURON simulator and can transparently handle all spiking network simulations including gap junction coupling with the **fixed time step method**. In order to run a NEURON model with CoreNEURON:
1111

1212
* MOD files should be THREADSAFE
1313
* If random number generator is used then Random123 should be used instead of MCellRan4
14-
* POINTER variables need to be converted to BBCOREPOINTER ([details here](http://bluebrain.github.io/CoreNeuron/index.html))
14+
* POINTER variables need to be converted to BBCOREPOINTER ([details here](docs/userdoc/MemoryManagement/bbcorepointer.md))
1515

1616
## Dependencies
1717
* [CMake 3.7+](https://cmake.org)
@@ -41,7 +41,8 @@ CoreNEURON is now integrated into the development version of the NEURON simulato
4141

4242
3. Load software dependencies
4343

44-
Currently CoreNEURON relies on compiler auto-vectorisation and hence we advise to use one of Intel, Cray, or PGI compilers to ensure vectorized code is generated. This constraint will be removed in the near future with the integration of the [NMODL](https://github.com/BlueBrain/nmodl) project.
44+
Currently CoreNEURON relies on compiler auto-vectorisation and hence we advise to use one of Intel, Cray, or PGI compilers to ensure vectorized code is generated. These compilers are able to vectorize the code better than **GCC** or **Clang**, achieving the best possible performance gains. Note that Intel compiler can be installed by downloading [oneAPI HPC Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/hpc-toolkit.html). CoreNEURON supports GPU execution using **OpenACC** programming model. Currently the best supported compiler for the **OpenACC** backend is **PGI** (available via [NVIDIA-HPC-SDK](https://developer.nvidia.com/hpc-sdk)) and this is the recommended one for compilation.
45+
4546

4647
HPC systems often use a module system to select software. For example, you can load the compiler, cmake, and python dependencies using module as follows:
4748

@@ -63,6 +64,8 @@ Note that if you are building on Cray system with the GNU toolchain, you have to
6364
-DNRN_ENABLE_INTERVIEWS=OFF \
6465
-DNRN_ENABLE_RX3D=OFF \
6566
-DCMAKE_INSTALL_PREFIX=$HOME/install
67+
-DCMAKE_C_COMPILER=icc \
68+
-DCMAKE_CXX_COMPILER=icpc
6669
```
6770

6871
4. If you would like to enable GPU support with OpenACC, make sure to use `-DCORENRN_ENABLE_GPU=ON` option and use the PGI/NVIDIA HPC SDK compilers with CUDA. For example,
@@ -227,20 +230,11 @@ cmake .. -DCMAKE_CXX_FLAGS="-O3 -g" \
227230

228231
By default, OpenMP threading is enabled. You can disable it with `-DCORENRN_ENABLE_OPENMP=OFF`
229232

230-
#### GPU enabled build is failing with inlining related errors, what to do?
231-
232-
If there are large functions / procedures in the MOD file that are not inlined by the compiler, you may need to pass additional C++ flags to PGI compiler. You can try following CXX flags:
233-
234-
```
235-
-DCMAKE_CXX_FLAGS="-O2 -Minline=size:1000,levels:100,totalsize:40000,maxsize:4000"
236-
```
237-
238233
For other errors, please [open an issue](https://github.com/BlueBrain/CoreNeuron/issues).
239234

240-
241235
## Developer Build
242236

243-
##### Building standalone CoreNEURON
237+
#### Building standalone CoreNEURON without NEURON
244238

245239
If you want to build the standalone CoreNEURON version, first download the repository as:
246240

@@ -263,7 +257,7 @@ If you don't have MPI, you can disable the MPI dependency using the CMake option
263257
make test
264258
```
265259

266-
##### Compiling MOD files
260+
#### Compiling MOD files
267261

268262
In order to compile mod files, one can use **nrnivmodl-core** as:
269263

@@ -273,7 +267,7 @@ In order to compile mod files, one can use **nrnivmodl-core** as:
273267

274268
This will create a `special-core` executable under `<arch>` directory.
275269

276-
##### Building with GPU support
270+
#### Building with GPU support
277271

278272
CoreNEURON has support for GPUs using the OpenACC programming model when enabled with `-DCORENRN_ENABLE_GPU=ON`. Below are the steps to compile with PGI compiler:
279273

@@ -284,12 +278,6 @@ cmake .. -DCORENRN_ENABLE_GPU=ON -DCMAKE_INSTALL_PREFIX=$HOME/install -DCMAKE_C_
284278
make -j && make install
285279
```
286280

287-
Note that the CUDA Toolkit version should be compatible with the PGI compiler installed on your system. Otherwise, you have to add extra C/C++ flags. For example, if we are using CUDA Toolkit 9.0 installation but PGI default target is CUDA 8.0 then we have to add :
288-
289-
```bash
290-
-DCMAKE_C_FLAGS:STRING="-O2 -ta=tesla:cuda9.0" -DCMAKE_CXX_FLAGS:STRING="-O2 -ta=tesla:cuda9.0"
291-
```
292-
293281
You have to run GPU executable with the `--gpu` flag. Make sure to enable cell re-ordering mechanism to improve GPU performance using `--cell_permute` option (permutation types : 2 or 1):
294282

295283
```bash
@@ -299,7 +287,7 @@ mpirun -n 1 ./bin/nrniv-core --mpi --gpu --tstop 100 --datpath ../tests/integrat
299287
Note: If your model is using Random123 random number generator, you cannot use the same executable for CPU and GPU runs. We suggest to install separate NEURON with CoreNEURON for CPU and GPU simulations. This will be fixed in future releases.
300288

301289

302-
##### Running tests with SLURM
290+
#### Running tests with SLURM
303291

304292
If you have a different mpi launcher (than `mpirun`), you can specify it during cmake configuration as:
305293

@@ -316,11 +304,11 @@ You can disable tests using with options:
316304
cmake .. -CORENRN_ENABLE_UNIT_TESTS=OFF
317305
```
318306

319-
##### CLI Options
307+
#### CLI Options
320308

321309
To see all CLI options for CoreNEURON, see `./bin/nrniv-core -h`.
322310

323-
##### Formatting CMake and C++ Code
311+
#### Formatting CMake and C++ Code
324312

325313
In order to format code with `cmake-format` and `clang-format` tools, before creating a PR, enable below CMake options:
326314

@@ -336,14 +324,14 @@ make cmake-format
336324
make clang-format
337325
```
338326

339-
### Citation
327+
## Citation
340328

341329
If you would like to know more about CoreNEURON or would like to cite it, then use the following paper:
342330

343331
* Pramod Kumbhar, Michael Hines, Jeremy Fouriaux, Aleksandr Ovcharenko, James King, Fabien Delalondre and Felix Schürmann. CoreNEURON : An Optimized Compute Engine for the NEURON Simulator ([doi.org/10.3389/fninf.2019.00063](https://doi.org/10.3389/fninf.2019.00063))
344332

345333

346-
### Support / Contribuition
334+
## Support / Contribuition
347335

348336
If you see any issue, feel free to [raise a ticket](https://github.com/BlueBrain/CoreNeuron/issues/new). If you would like to improve this library, see [open issues](https://github.com/BlueBrain/CoreNeuron/issues).
349337

@@ -352,7 +340,7 @@ You can see current [contributors here](https://github.com/BlueBrain/CoreNeuron/
352340

353341
## License
354342
* See LICENSE.txt
355-
* See [NEURON](https://www.neuron.yale.edu/neuron/)
343+
* See [NEURON](https://github.com/neuronsimulator/nrn)
356344

357345

358346
## Funding

external/mod2c

0 commit comments

Comments
 (0)