Skip to content

Commit 171675b

Browse files
restore
1 parent e30b7cc commit 171675b

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

source/api_cc/src/DeepPotPD.cc

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -164,23 +164,15 @@ inline void enableTimestamp(bool enable = true) {
164164
}
165165
} // namespace logg
166166

167-
void fillNlistTensor(const std::vector<std::vector<int>>& data,
168-
std::unique_ptr<paddle_infer::Tensor>& flat_tensor) {
169-
size_t total_size = 0;
167+
std::vector<int> createNlistTensorPD(
168+
const std::vector<std::vector<int>>& data) {
169+
std::vector<int> ret;
170170
for (const auto& row : data) {
171-
total_size += row.size();
171+
ret.insert(ret.end(), row.begin(), row.end());
172172
}
173-
std::vector<int> flat_data;
174-
flat_data.reserve(total_size);
175-
for (const auto& row : data) {
176-
flat_data.insert(flat_data.end(), row.begin(), row.end());
177-
}
178-
179-
int nloc = data.size();
180-
int nnei = nloc > 0 ? total_size / nloc : 0;
181-
flat_tensor->Reshape({1, nloc, nnei});
182-
flat_tensor->CopyFromCpu(flat_data.data());
173+
return ret;
183174
}
175+
184176
DeepPotPD::DeepPotPD() : inited(false) {}
185177
DeepPotPD::DeepPotPD(const std::string& model,
186178
const int& gpu_rank,
@@ -383,14 +375,16 @@ void DeepPotPD::compute(ENERGYVTYPE& ener,
383375
auto coord_wrapped_Tensor = predictor_fl->GetInputHandle("coord");
384376
coord_wrapped_Tensor->Reshape({1, nall_real, 3});
385377
coord_wrapped_Tensor->CopyFromCpu(coord_wrapped.data());
378+
386379
auto atype_Tensor = predictor_fl->GetInputHandle("atype");
387380
atype_Tensor->Reshape({1, nall_real});
388381
atype_Tensor->CopyFromCpu(datype.data());
382+
389383
if (ago == 0) {
390-
nlist_data.copy_from_nlist(lmp_list, nall - nghost);
384+
nlist_data.copy_from_nlist(lmp_list);
391385
nlist_data.shuffle_exclude_empty(fwd_map);
392386
nlist_data.padding();
393-
if (do_message_passing) {
387+
if (do_message_passing == 1 && nghost > 0) {
394388
auto sendproc_tensor = predictor_fl->GetInputHandle("send_proc");
395389
auto recvproc_tensor = predictor_fl->GetInputHandle("recv_proc");
396390
auto recvnum_tensor = predictor_fl->GetInputHandle("recv_num");
@@ -452,17 +446,20 @@ void DeepPotPD::compute(ENERGYVTYPE& ener,
452446
this->mapping_tensor->CopyFromCpu(mapping.data());
453447
}
454448
}
449+
std::vector<int> firstneigh = createNlistTensorPD(nlist_data.jlist);
455450
this->firstneigh_tensor = predictor_fl->GetInputHandle("nlist");
456-
fillNlistTensor(nlist_data.jlist, this->firstneigh_tensor);
451+
this->firstneigh_tensor->Reshape(
452+
{1, nloc, (int)firstneigh.size() / (int)nloc});
453+
this->firstneigh_tensor->CopyFromCpu(firstneigh.data());
457454
bool do_atom_virial_tensor = atomic;
458-
std::unique_ptr<paddle_infer::Tensor> fparam_tensor;
459455
if (!fparam.empty()) {
456+
std::unique_ptr<paddle_infer::Tensor> fparam_tensor;
460457
fparam_tensor = predictor_fl->GetInputHandle("fparam");
461458
fparam_tensor->Reshape({1, static_cast<int>(fparam.size())});
462459
fparam_tensor->CopyFromCpu(fparam.data());
463460
}
464-
std::unique_ptr<paddle_infer::Tensor> aparam_tensor;
465461
if (!aparam_.empty()) {
462+
std::unique_ptr<paddle_infer::Tensor> aparam_tensor;
466463
aparam_tensor = predictor_fl->GetInputHandle("aparam");
467464
aparam_tensor->Reshape(
468465
{1, lmp_list.inum, static_cast<int>(aparam_.size()) / lmp_list.inum});
@@ -513,7 +510,7 @@ void DeepPotPD::compute(ENERGYVTYPE& ener,
513510
}
514511
}
515512
template void DeepPotPD::compute<double, std::vector<ENERGYTYPE>>(
516-
std::vector<ENERGYTYPE>& ener,
513+
std::vector<ENERGYTYPE>& dener,
517514
std::vector<double>& force,
518515
std::vector<double>& virial,
519516
std::vector<double>& atom_energy,
@@ -525,10 +522,11 @@ template void DeepPotPD::compute<double, std::vector<ENERGYTYPE>>(
525522
const InputNlist& lmp_list,
526523
const int& ago,
527524
const std::vector<double>& fparam,
528-
const std::vector<double>& aparam,
525+
const std::vector<double>& aparam_,
529526
const bool atomic);
527+
530528
template void DeepPotPD::compute<float, std::vector<ENERGYTYPE>>(
531-
std::vector<ENERGYTYPE>& ener,
529+
std::vector<ENERGYTYPE>& dener,
532530
std::vector<float>& force,
533531
std::vector<float>& virial,
534532
std::vector<float>& atom_energy,
@@ -540,8 +538,9 @@ template void DeepPotPD::compute<float, std::vector<ENERGYTYPE>>(
540538
const InputNlist& lmp_list,
541539
const int& ago,
542540
const std::vector<float>& fparam,
543-
const std::vector<float>& aparam,
541+
const std::vector<float>& aparam_,
544542
const bool atomic);
543+
545544
// ENERGYVTYPE: std::vector<ENERGYTYPE> or ENERGYTYPE
546545
template <typename VALUETYPE, typename ENERGYVTYPE>
547546
void DeepPotPD::compute(ENERGYVTYPE& ener,
@@ -563,9 +562,10 @@ void DeepPotPD::compute(ENERGYVTYPE& ener,
563562
coord_wrapped_Tensor->Reshape({1, natoms, 3});
564563
coord_wrapped_Tensor->CopyFromCpu(coord_wrapped.data());
565564

565+
std::vector<std::int64_t> atype_64(atype.begin(), atype.end());
566566
auto atype_Tensor = predictor->GetInputHandle("atype");
567567
atype_Tensor->Reshape({1, natoms});
568-
atype_Tensor->CopyFromCpu(atype.data());
568+
atype_Tensor->CopyFromCpu(atype_64.data());
569569

570570
std::unique_ptr<paddle_infer::Tensor> box_Tensor;
571571
if (!box.empty()) {
@@ -575,13 +575,13 @@ void DeepPotPD::compute(ENERGYVTYPE& ener,
575575
}
576576
std::unique_ptr<paddle_infer::Tensor> fparam_tensor;
577577
if (!fparam.empty()) {
578-
fparam_tensor = predictor->GetInputHandle("fparam");
578+
fparam_tensor = predictor->GetInputHandle("box");
579579
fparam_tensor->Reshape({1, static_cast<int>(fparam.size())});
580580
fparam_tensor->CopyFromCpu((fparam.data()));
581581
}
582582
std::unique_ptr<paddle_infer::Tensor> aparam_tensor;
583583
if (!aparam.empty()) {
584-
aparam_tensor = predictor->GetInputHandle("aparam");
584+
aparam_tensor = predictor->GetInputHandle("box");
585585
aparam_tensor->Reshape(
586586
{1, natoms, static_cast<int>(aparam.size()) / natoms});
587587
aparam_tensor->CopyFromCpu((aparam.data()));
@@ -628,11 +628,11 @@ void DeepPotPD::compute(ENERGYVTYPE& ener,
628628

629629
template void DeepPotPD::compute<double, std::vector<ENERGYTYPE>>(
630630
std::vector<ENERGYTYPE>& ener,
631-
std::vector<double>& force,
631+
std::vector<double>& dforce,
632632
std::vector<double>& virial,
633633
std::vector<double>& atom_energy,
634634
std::vector<double>& atom_virial,
635-
const std::vector<double>& coord,
635+
const std::vector<double>& dcoord,
636636
const std::vector<int>& atype,
637637
const std::vector<double>& box,
638638
const std::vector<double>& fparam,
@@ -645,7 +645,7 @@ template void DeepPotPD::compute<float, std::vector<ENERGYTYPE>>(
645645
std::vector<float>& virial,
646646
std::vector<float>& atom_energy,
647647
std::vector<float>& atom_virial,
648-
const std::vector<float>& coord,
648+
const std::vector<float>& dcoord,
649649
const std::vector<int>& atype,
650650
const std::vector<float>& box,
651651
const std::vector<float>& fparam,

0 commit comments

Comments
 (0)