UWB-Biocomputing / BrainGrid

A project to facilitate construction of high-performance neural simulations.
https://uwb-biocomputing.github.io/BrainGrid/
Apache License 2.0
32 stars 17 forks source link

Unnecessary inter-clusters events handling on single cluster simulation #251

Closed fumik closed 5 years ago

fumik commented 5 years ago

What kind of issue is this?

What is affected by this?

How do we replicate the issue/how would it work?

Expected behavior (i.e. solution or outline of what it would look like)

Other Comments

fumik commented 5 years ago

Inter-clusters events handlers, processInterClustersOutgoingSpikes and processInterClustersIncomingSpikes, are called when a single clusters simulation is running. These methods are called once per every synaptic transmission delay period (about 10 simulation steps). One processInterClustersIncomingSpikes method calls 2 cudaMalloc API and 3 cudaMemcpy (D->H) API, and one processInterClustersIncomingSpikes method calls 1 cudaMalloc API and 2 cudaMemcpy (D->H, H->D) ,API.

fumik commented 5 years ago

Skipping these methods when single cluster simulation is running results in 6~7% performance improvement (100x100 neurons, connected, 100sx2 epochs).