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

Commit c664748

Browse files
authored
Setup pnttype2presyn in main thread to avoid race condition (#447)
1 parent 3a0e1bc commit c664748

File tree

2 files changed

+10
-7
lines changed

2 files changed

+10
-7
lines changed

coreneuron/io/nrn_setup.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,16 @@ void nrn_setup(const char* filesdat,
448448
// Note that rank with 0 dataset/cellgroup works fine
449449
nrn_threads_create(userParams.ngroup <= 1 ? 2 : userParams.ngroup);
450450

451+
// from nrn_has_net_event create pnttype2presyn for use in phase2.
452+
auto& memb_func = corenrn.get_memb_funcs();
453+
auto& pnttype2presyn = corenrn.get_pnttype2presyn();
454+
auto& nrn_has_net_event_ = corenrn.get_has_net_event();
455+
pnttype2presyn.clear();
456+
pnttype2presyn.resize(memb_func.size(), -1);
457+
for (size_t i = 0; i < nrn_has_net_event_.size(); ++i) {
458+
pnttype2presyn[nrn_has_net_event_[i]] = i;
459+
}
460+
451461
nrnthread_chkpnt = new NrnThreadChkpnt[nrn_nthread];
452462

453463
if (nrn_nthread > 1) {

coreneuron/io/phase2.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,13 +1082,6 @@ void Phase2::populate(NrnThread& nt, const UserParams& userParams) {
10821082
}
10831083
auto& pnttype2presyn = corenrn.get_pnttype2presyn();
10841084
auto& nrn_has_net_event_ = corenrn.get_has_net_event();
1085-
// from nrn_has_net_event create pnttype2presyn.
1086-
if (pnttype2presyn.empty()) {
1087-
pnttype2presyn.resize(memb_func.size(), -1);
1088-
}
1089-
for (size_t i = 0; i < nrn_has_net_event_.size(); ++i) {
1090-
pnttype2presyn[nrn_has_net_event_[i]] = i;
1091-
}
10921085
// create the nt.pnt2presyn_ix array of arrays.
10931086
nt.pnt2presyn_ix = (int**)ecalloc(nrn_has_net_event_.size(), sizeof(int*));
10941087
for (size_t i = 0; i < nrn_has_net_event_.size(); ++i) {

0 commit comments

Comments
 (0)