Brian can parallelize simulations over multiple processor cores by making use of the OpenMP framework. However, in its current state Brian does not yet make full use of the parallelization potential. In addition, there are some corner cases where activating parallelization can lead to incorrect results (this is why OpenMP support is still marked as "experimental").
The aim of this project is to finalize the OpenMP support, by:
- deciding whether parallelization can be safely used based on information about the respective code fragment (which variables are read/written in what way)
- identifying and implementing additional opportunities for parallelization
- extensive testing
- Optional ("stretch goal"): transferring the OpenMP support to other code generation targets (Cython, C++ via weave)
Skills: C++ and Python programming, experience with OpenMP or other parallelization techniques helpful
Mentors: Marcel Stimberg, Dan Goodman