BlueBrain / CoreNeuron

Simulator optimized for large scale neural network simulations.
BSD 3-Clause "New" or "Revised" License
135 stars 39 forks source link

Different spikes with online and offline CoreNEURON execution (NetPyNE M1) #352

Open iomaganaris opened 4 years ago

iomaganaris commented 4 years ago

When CoreNEURON is executed in online mode (from inside NEURON with pc.psolve()) and offline mod (using special-core) with the M1 NetPyNE model it generates different spikes. To reproduce the issue I have created scripts for installing the proper versions, building the needed packages and running the sims in:

/gpfs/bbp.cscs.ch/home/magkanar/proj16/netpyne_cns_benchmark/clone_repos.sh # clones all the needed repos (CoreNEURON: master, NMODL: master, netpyne: my fork of coreneuron branch)
/gpfs/bbp.cscs.ch/home/magkanar/proj16/netpyne_cns_benchmark/build_for_ispc.sh # builds CoreNEURON with NMODL with ISPC support
/gpfs/bbp.cscs.ch/home/magkanar/proj16/netpyne_cns_benchmark/build_default.sh # needs NMODL installed by build_for_ispc.sh. Installs CoreNEURON with mod2c and NMODL for CPU without any code optimization
/gpfs/bbp.cscs.ch/home/magkanar/proj16/netpyne_cns_benchmark/run_sim_mod2c_separate.sh # compares spieks of CoreNEURON w/ mod2c with online and offline modes and also NEURON
/gpfs/bbp.cscs.ch/home/magkanar/proj16/netpyne_cns_benchmark/run_sim_nmodl_separate.sh # same as above but with NMODL and ISPC backend

cc: @pramodk

iomaganaris commented 4 years ago

The source of this issue was that CoreNEURON in online mode was using cell_permute 1, which generates different results than NEURON. https://github.com/neuronsimulator/nrn/commit/674dbac2390529e24071488563b3201f004279a3 I update my branch in netpyne to use cell_permute 0 to have the same results as NEURON and CoreNEURON in offline mode. https://github.com/iomaganaris/netpyne/commit/b80b3f5ab8ec34104274acc9f5517353afde94c7