Skip to content

Commit f3d25c8

Browse files
LuLu
authored andcommitted
fix bugs, initialize variables before use
Also, optimize the structure of the compute function
1 parent 6b3a6c6 commit f3d25c8

File tree

2 files changed

+59
-50
lines changed

2 files changed

+59
-50
lines changed

source/lib/src/NNPInter.cc

Lines changed: 56 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -854,6 +854,14 @@ init (const string & model, const int & gpu_rank)
854854
if (dfparam < 0) dfparam = 0;
855855
if (daparam < 0) daparam = 0;
856856
inited = true;
857+
858+
init_nbor = false;
859+
array_int = NULL;
860+
array_double = NULL;
861+
array_longlong = NULL;
862+
ilist = NULL; jrange = NULL; jlist = NULL;
863+
ilist_size = 0; jrange_size = 0; jlist_size = 0;
864+
arr_int_size = 0; arr_ll_size = 0; arr_dou_size = 0;
857865
}
858866
#else
859867
void
@@ -881,6 +889,14 @@ init (const string & model, const int & gpu_rank)
881889
// ntypes = get_ntypes();
882890
// dfparam = get_dfparam();
883891
inited = true;
892+
893+
init_nbor = false;
894+
array_int = NULL;
895+
array_double = NULL;
896+
array_longlong = NULL;
897+
ilist = NULL; jrange = NULL; jlist = NULL;
898+
ilist_size = 0; jrange_size = 0; jlist_size = 0;
899+
arr_int_size = 0; arr_ll_size = 0; arr_dou_size = 0;
884900
}
885901
#endif
886902

@@ -1015,6 +1031,7 @@ compute (ENERGYTYPE & dener,
10151031
int nall = dcoord_.size() / 3;
10161032
int nloc = nall - nghost;
10171033
validate_fparam_aparam(nloc, fparam, aparam);
1034+
std::vector<std::pair<string, Tensor>> input_tensors;
10181035

10191036
// agp == 0 means that the LAMMPS nbor list has been updated
10201037
if (ago == 0) {
@@ -1024,28 +1041,24 @@ compute (ENERGYTYPE & dener,
10241041
// InternalNeighborList nlist;
10251042
convert_nlist_lmp_internal (nlist, lmp_list);
10261043
shuffle_nlist (nlist, nnpmap);
1027-
std::vector<std::pair<string, Tensor>> input_tensors;
10281044
#ifdef USE_CUDA_TOOLKIT
10291045
update_nbor(nlist, nloc);
10301046
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, ilist, jrange, jlist, array_int, array_longlong, array_double, fparam, aparam, nnpmap, nghost);
10311047
#else
10321048
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, nlist, fparam, aparam, nnpmap, nghost);
10331049
#endif
10341050

1035-
assert (nloc == ret);
1036-
run_model (dener, dforce_, dvirial, session, input_tensors, nnpmap, nghost);
10371051
}
10381052
else {
1039-
std::vector<std::pair<string, Tensor>> input_tensors;
10401053
#ifdef USE_CUDA_TOOLKIT
10411054
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, ilist, jrange, jlist, array_int, array_longlong, array_double, fparam, aparam, nnpmap, nghost);
10421055
#else
10431056
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, nlist, fparam, aparam, nnpmap, nghost);
10441057
#endif
10451058

1046-
assert (nloc == ret);
1047-
run_model (dener, dforce_, dvirial, session, input_tensors, nnpmap, nghost);
10481059
}
1060+
assert (nloc == ret);
1061+
run_model (dener, dforce_, dvirial, session, input_tensors, nnpmap, nghost);
10491062
}
10501063

10511064

@@ -1092,6 +1105,7 @@ compute (ENERGYTYPE & dener,
10921105
int nall = dcoord_.size() / 3;
10931106
int nloc = nall - nghost;
10941107
validate_fparam_aparam(nloc, fparam, aparam);
1108+
std::vector<std::pair<string, Tensor>> input_tensors;
10951109

10961110
if (ago == 0) {
10971111
nnpmap = NNPAtomMap<VALUETYPE> (datype_.begin(), datype_.begin() + nloc);
@@ -1100,28 +1114,24 @@ compute (ENERGYTYPE & dener,
11001114
// InternalNeighborList nlist;
11011115
convert_nlist_lmp_internal (nlist, lmp_list);
11021116
shuffle_nlist (nlist, nnpmap);
1103-
std::vector<std::pair<string, Tensor>> input_tensors;
11041117
#ifdef USE_CUDA_TOOLKIT
11051118
update_nbor(nlist, nloc);
11061119
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, ilist, jrange, jlist, array_int, array_longlong, array_double, fparam, aparam, nnpmap, nghost);
11071120
#else
11081121
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, nlist, fparam, aparam, nnpmap, nghost);
11091122
#endif
11101123

1111-
assert (nloc == ret);
1112-
run_model (dener, dforce_, dvirial, datom_energy_, datom_virial_, session, input_tensors, nnpmap, nghost);
11131124
}
11141125
else {
1115-
std::vector<std::pair<string, Tensor>> input_tensors;
11161126
#ifdef USE_CUDA_TOOLKIT
11171127
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, ilist, jrange, jlist, array_int, array_longlong, array_double, fparam, aparam, nnpmap, nghost);
11181128
#else
11191129
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, nlist, fparam, aparam, nnpmap, nghost);
11201130
#endif
11211131

1122-
assert (nloc == ret);
1123-
run_model (dener, dforce_, dvirial, datom_energy_, datom_virial_, session, input_tensors, nnpmap, nghost);
11241132
}
1133+
assert (nloc == ret);
1134+
run_model (dener, dforce_, dvirial, datom_energy_, datom_virial_, session, input_tensors, nnpmap, nghost);
11251135
}
11261136

11271137

@@ -1203,6 +1213,14 @@ init (const vector<string> & models, const int & gpu_rank)
12031213
// cell_size = rcut;
12041214
// ntypes = get_ntypes();
12051215
inited = true;
1216+
1217+
init_nbor = false;
1218+
array_int = NULL;
1219+
array_double = NULL;
1220+
array_longlong = NULL;
1221+
ilist = NULL; jrange = NULL; jlist = NULL;
1222+
ilist_size = 0; jrange_size = 0; jlist_size = 0;
1223+
arr_int_size = 0; arr_ll_size = 0; arr_dou_size = 0;
12061224
}
12071225
#else
12081226
void
@@ -1232,6 +1250,14 @@ init (const vector<string> & models, const int & gpu_rank)
12321250
// cell_size = rcut;
12331251
// ntypes = get_ntypes();
12341252
inited = true;
1253+
1254+
init_nbor = false;
1255+
array_int = NULL;
1256+
array_double = NULL;
1257+
array_longlong = NULL;
1258+
ilist = NULL; jrange = NULL; jlist = NULL;
1259+
ilist_size = 0; jrange_size = 0; jlist_size = 0;
1260+
arr_int_size = 0; arr_ll_size = 0; arr_dou_size = 0;
12351261
}
12361262
#endif
12371263

@@ -1460,6 +1486,7 @@ compute (vector<ENERGYTYPE> & all_energy,
14601486
int nall = dcoord_.size() / 3;
14611487
int nloc = nall - nghost;
14621488
validate_fparam_aparam(nloc, fparam, aparam);
1489+
std::vector<std::pair<string, Tensor>> input_tensors;
14631490

14641491
// agp == 0 means that the LAMMPS nbor list has been updated
14651492
if (ago == 0) {
@@ -1469,38 +1496,28 @@ compute (vector<ENERGYTYPE> & all_energy,
14691496
// InternalNeighborList nlist;
14701497
convert_nlist_lmp_internal (nlist, lmp_list);
14711498
shuffle_nlist (nlist, nnpmap);
1472-
std::vector<std::pair<string, Tensor>> input_tensors;
14731499
#ifdef USE_CUDA_TOOLKIT
14741500
update_nbor(nlist, nloc);
14751501
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, ilist, jrange, jlist, array_int, array_longlong, array_double, fparam, aparam, nnpmap, nghost);
14761502
#else
14771503
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, nlist, fparam, aparam, nnpmap, nghost);
14781504
#endif
14791505

1480-
all_energy.resize (numb_models);
1481-
all_force.resize (numb_models);
1482-
all_virial.resize (numb_models);
1483-
assert (nloc == ret);
1484-
for (unsigned ii = 0; ii < numb_models; ++ii) {
1485-
run_model (all_energy[ii], all_force[ii], all_virial[ii], sessions[ii], input_tensors, nnpmap, nghost);
1486-
}
14871506
}
14881507
else {
1489-
std::vector<std::pair<string, Tensor>> input_tensors;
14901508
#ifdef USE_CUDA_TOOLKIT
14911509
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, ilist, jrange, jlist, array_int, array_longlong, array_double, fparam, aparam, nnpmap, nghost);
14921510
#else
14931511
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, nlist, fparam, aparam, nnpmap, nghost);
14941512
#endif
14951513

1496-
all_energy.resize (numb_models);
1497-
all_force.resize (numb_models);
1498-
all_virial.resize (numb_models);
1499-
1500-
assert (nloc == ret);
1501-
for (unsigned ii = 0; ii < numb_models; ++ii) {
1502-
run_model (all_energy[ii], all_force[ii], all_virial[ii], sessions[ii], input_tensors, nnpmap, nghost);
1503-
}
1514+
}
1515+
all_energy.resize (numb_models);
1516+
all_force.resize (numb_models);
1517+
all_virial.resize (numb_models)
1518+
assert (nloc == ret);
1519+
for (unsigned ii = 0; ii < numb_models; ++ii) {
1520+
run_model (all_energy[ii], all_force[ii], all_virial[ii], sessions[ii], input_tensors, nnpmap, nghost);
15041521
}
15051522
}
15061523

@@ -1524,6 +1541,7 @@ compute (vector<ENERGYTYPE> & all_energy,
15241541
int nall = dcoord_.size() / 3;
15251542
int nloc = nall - nghost;
15261543
validate_fparam_aparam(nloc, fparam, aparam);
1544+
std::vector<std::pair<string, Tensor>> input_tensors;
15271545

15281546
// agp == 0 means that the LAMMPS nbor list has been updated
15291547
if (ago == 0) {
@@ -1533,24 +1551,13 @@ compute (vector<ENERGYTYPE> & all_energy,
15331551
// InternalNeighborList nlist;
15341552
convert_nlist_lmp_internal (nlist, lmp_list);
15351553
shuffle_nlist (nlist, nnpmap);
1536-
std::vector<std::pair<string, Tensor>> input_tensors;
15371554
#ifdef USE_CUDA_TOOLKIT
15381555
update_nbor(nlist, nloc);
15391556
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, ilist, jrange, jlist, array_int, array_longlong, array_double, fparam, aparam, nnpmap, nghost);
15401557
#else
15411558
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, nlist, fparam, aparam, nnpmap, nghost);
15421559
#endif
15431560

1544-
all_energy.resize (numb_models);
1545-
all_force .resize (numb_models);
1546-
all_virial.resize (numb_models);
1547-
all_atom_energy.resize (numb_models);
1548-
all_atom_virial.resize (numb_models);
1549-
assert (nloc == ret);
1550-
1551-
for (unsigned ii = 0; ii < numb_models; ++ii) {
1552-
run_model (all_energy[ii], all_force[ii], all_virial[ii], all_atom_energy[ii], all_atom_virial[ii], sessions[ii], input_tensors, nnpmap, nghost);
1553-
}
15541561
}
15551562
else {
15561563
std::vector<std::pair<string, Tensor>> input_tensors;
@@ -1560,15 +1567,15 @@ compute (vector<ENERGYTYPE> & all_energy,
15601567
int ret = make_input_tensors (input_tensors, dcoord_, ntypes, datype_, dbox, nlist, fparam, aparam, nnpmap, nghost);
15611568
#endif
15621569

1563-
all_energy.resize (numb_models);
1564-
all_force .resize (numb_models);
1565-
all_virial.resize (numb_models);
1566-
all_atom_energy.resize (numb_models);
1567-
all_atom_virial.resize (numb_models);
1568-
assert (nloc == ret);
1569-
for (unsigned ii = 0; ii < numb_models; ++ii) {
1570-
run_model (all_energy[ii], all_force[ii], all_virial[ii], all_atom_energy[ii], all_atom_virial[ii], sessions[ii], input_tensors, nnpmap, nghost);
1571-
}
1570+
}
1571+
all_energy.resize (numb_models);
1572+
all_force .resize (numb_models);
1573+
all_virial.resize (numb_models);
1574+
all_atom_energy.resize (numb_models);
1575+
all_atom_virial.resize (numb_models);
1576+
assert (nloc == ret);
1577+
for (unsigned ii = 0; ii < numb_models; ++ii) {
1578+
run_model (all_energy[ii], all_force[ii], all_virial[ii], all_atom_energy[ii], all_atom_virial[ii], sessions[ii], input_tensors, nnpmap, nghost);
15721579
}
15731580
}
15741581

source/lmp/pair_nnp.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,9 @@ PairNNP::PairNNP(LAMMPS *lmp)
194194
eps = 0.;
195195
scale = NULL;
196196
do_ttm = false;
197-
197+
single_model = false;
198+
multi_models_mod_devi = false;
199+
multi_models_no_mod_devi = false;
198200
// set comm size needed by this Pair
199201
comm_reverse = 1;
200202

0 commit comments

Comments
 (0)