DigiCortex Engine v0.95 comes with the first preview of CUDA compute plug-in, with the CUDA compute engine written by Ana Balevic. Modern GPUs such as NVIDIA GeForce and Tesla are a great match for massively parallel simulations of the biological neural circuits, since they incorporate a number of multiprocessors, each being less complex than a traditional CPU, but able to execute very high number of threads in parallel.
The massive parallelism of the GPU architecture does not come for free: it is necessary to write dedicated parallel code which is designed to take advantage of the GPU architecture. The DigiCortex Engine architecture allows each compute plug-in to manage its own memory and store neural and synaptic data in any way it sees fit for the purpose. Communication protocol between different plug-ins is based on spike delivery. For example, the CudaCompute plug-in holds the synaptic and compartment data inside the global memory of the GPU and not in the system RAM.
To test CUDA compute in DigiCortex:
1. Install DigiCortex
2. Rename DigiCortexConfig.cuda to DigiCortexConfig.xml
3. DigiCortex CUDA plug-in requires CUDA 5.0 and a NVIDIA GPU with at least Compute Capability 2.0 (Fermi and later, mostly starting from GTX 5xx)
DigiCortex v0.95 CUDA has following limitations:
- CUDA support is working in 64-bit version of DigiCortex only
- It is not yet possible to combine multiple compute nodes (e.g. CPU and GPU)
- Only one GPU is supported at the moment, behavior on systems with multiple CUDA cards is undefined
- No Long Term Plasticity (STDP) is implemented yet
- Neuron current injection is not implemented yet
- Only Izhikevich (Adaptive Quadratic Integrate and Fire) model is implemented. AdEx model will be implemented soon
- Code is not fully optimized, further speedups are expected in the future versions of DigiCortex
Most of the limitations above are due to the early implementation stage of DigiCortex CUDA engine. These features will be implemented in the upcoming versions of DigiCortex.
However, despite the fact that DigiCortex CUDA Compute plug-in is in a very early stage, it is already showing great potential power, for larger simulations GPU code is more than 7 times faster compared to the optimized CPU code. Click here for a more detailed benchmark results comparing simulation performance on NVidia GK110 GPU with dual Intel Xeon E5 2687W CPU.
About Ana Balevic
Ana is currently completing her PhD at Leiden University in Netherlands, where she is researching novel compile-time techniques for multi-level parallelization in the polyhedral model targeting heterogeneous platforms. Ana's work on DigiCortex engine includes CUDA compute plug-in which is already several times faster than the optimized CPU-only code.
Find us @GTC2013
Would you like to see a live demo? Get in touch with us at the GPU Technology Conference 2013 which takes place from March 18th to March 21st in San Jose, California. You can contact us at firstname.lastname@example.org, or contact Ana or Ivan directly at: ana / ivan AT digicortex.net
NOTE: All trademarks are belonging to their respective owners.