From d0fe13cbd8a305f08c23cef703c62d323313b2b8 Mon Sep 17 00:00:00 2001 From: Lysithea <52808607+CaRoLZhangxy@users.noreply.github.com> Date: Wed, 1 May 2024 03:18:55 +0800 Subject: [PATCH] pt: support dpa2 model parallel inference (#3657) Signed-off-by: Jinzhe Zeng Signed-off-by: Lysithea <52808607+CaRoLZhangxy@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Jinzhe Zeng Co-authored-by: Han Wang <92130845+wanghan-iapcm@users.noreply.github.com> --- .github/workflows/test_cuda.yml | 2 +- deepmd/pt/entrypoints/main.py | 6 +- .../model/atomic_model/base_atomic_model.py | 4 + .../pt/model/atomic_model/dp_atomic_model.py | 2 + .../model/atomic_model/linear_atomic_model.py | 1 + .../atomic_model/pairtab_atomic_model.py | 1 + deepmd/pt/model/descriptor/dpa1.py | 4 + deepmd/pt/model/descriptor/dpa2.py | 19 +- deepmd/pt/model/descriptor/hybrid.py | 4 + deepmd/pt/model/descriptor/repformers.py | 70 +- deepmd/pt/model/descriptor/se_a.py | 3 + deepmd/pt/model/model/ener_model.py | 2 + deepmd/pt/model/model/make_model.py | 4 + source/api_c/include/c_api.h | 39 +- source/api_c/include/deepmd.hpp | 28 + source/api_c/src/c_api.cc | 19 +- source/api_cc/include/DeepPotPT.h | 2 + source/api_cc/src/DeepPotPT.cc | 65 +- source/api_cc/tests/test_deeppot_dpa_pt.cc | 144 ++++ source/lib/include/neighbor_list.h | 64 +- source/lmp/pair_deepmd.cpp | 12 +- source/lmp/pair_deepmd.h | 7 +- source/lmp/tests/test_lammps_dpa_pt.py | 721 ++++++++++++++++++ source/op/pt/CMakeLists.txt | 3 +- source/op/pt/comm.cc | 362 +++++++++ source/tests/infer/deeppot_dpa.pth | Bin 0 -> 294005 bytes 26 files changed, 1553 insertions(+), 35 deletions(-) create mode 100644 source/api_cc/tests/test_deeppot_dpa_pt.cc create mode 100644 source/lmp/tests/test_lammps_dpa_pt.py create mode 100644 source/op/pt/comm.cc create mode 100644 source/tests/infer/deeppot_dpa.pth diff --git a/.github/workflows/test_cuda.yml b/.github/workflows/test_cuda.yml index db6b6bbbaa..3cb75ecf1a 100644 --- a/.github/workflows/test_cuda.yml +++ b/.github/workflows/test_cuda.yml @@ -76,7 +76,7 @@ jobs: - run: | export LD_LIBRARY_PATH=$GITHUB_WORKSPACE/dp_test/lib:$GITHUB_WORKSPACE/libtorch/lib:$CUDA_PATH/lib64:$LD_LIBRARY_PATH export PATH=$GITHUB_WORKSPACE/dp_test/bin:$PATH - python -m pytest source/lmp/tests + python -m pytest -s source/lmp/tests || (cat log.lammps && exit 1) python -m pytest source/ipi/tests env: OMP_NUM_THREADS: 1 diff --git a/deepmd/pt/entrypoints/main.py b/deepmd/pt/entrypoints/main.py index 63463ceeef..eafce67e84 100644 --- a/deepmd/pt/entrypoints/main.py +++ b/deepmd/pt/entrypoints/main.py @@ -286,10 +286,14 @@ def train(FLAGS): def freeze(FLAGS): model = torch.jit.script(inference.Tester(FLAGS.model, head=FLAGS.head).model) + if '"type": "dpa2"' in model.model_def_script: + extra_files = {"type": "dpa2"} + else: + extra_files = {"type": "else"} torch.jit.save( model, FLAGS.output, - {}, + extra_files, ) diff --git a/deepmd/pt/model/atomic_model/base_atomic_model.py b/deepmd/pt/model/atomic_model/base_atomic_model.py index 10fa2a7bd9..3be052919d 100644 --- a/deepmd/pt/model/atomic_model/base_atomic_model.py +++ b/deepmd/pt/model/atomic_model/base_atomic_model.py @@ -186,6 +186,7 @@ def forward_common_atomic( mapping: Optional[torch.Tensor] = None, fparam: Optional[torch.Tensor] = None, aparam: Optional[torch.Tensor] = None, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ) -> Dict[str, torch.Tensor]: """Common interface for atomic inference. @@ -207,6 +208,8 @@ def forward_common_atomic( frame parameters, shape: nf x dim_fparam aparam atomic parameter, shape: nf x nloc x dim_aparam + comm_dict + The data needed for communication for parallel inference. Returns ------- @@ -234,6 +237,7 @@ def forward_common_atomic( mapping=mapping, fparam=fparam, aparam=aparam, + comm_dict=comm_dict, ) ret_dict = self.apply_out_stat(ret_dict, atype) diff --git a/deepmd/pt/model/atomic_model/dp_atomic_model.py b/deepmd/pt/model/atomic_model/dp_atomic_model.py index 182196aca5..3d9a57bf70 100644 --- a/deepmd/pt/model/atomic_model/dp_atomic_model.py +++ b/deepmd/pt/model/atomic_model/dp_atomic_model.py @@ -130,6 +130,7 @@ def forward_atomic( mapping: Optional[torch.Tensor] = None, fparam: Optional[torch.Tensor] = None, aparam: Optional[torch.Tensor] = None, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ) -> Dict[str, torch.Tensor]: """Return atomic prediction. @@ -163,6 +164,7 @@ def forward_atomic( extended_atype, nlist, mapping=mapping, + comm_dict=comm_dict, ) assert descriptor is not None # energy, force diff --git a/deepmd/pt/model/atomic_model/linear_atomic_model.py b/deepmd/pt/model/atomic_model/linear_atomic_model.py index b58594d3ce..bf03a68f31 100644 --- a/deepmd/pt/model/atomic_model/linear_atomic_model.py +++ b/deepmd/pt/model/atomic_model/linear_atomic_model.py @@ -144,6 +144,7 @@ def forward_atomic( mapping: Optional[torch.Tensor] = None, fparam: Optional[torch.Tensor] = None, aparam: Optional[torch.Tensor] = None, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ) -> Dict[str, torch.Tensor]: """Return atomic prediction. diff --git a/deepmd/pt/model/atomic_model/pairtab_atomic_model.py b/deepmd/pt/model/atomic_model/pairtab_atomic_model.py index 4f8bce78e1..3a0700be4f 100644 --- a/deepmd/pt/model/atomic_model/pairtab_atomic_model.py +++ b/deepmd/pt/model/atomic_model/pairtab_atomic_model.py @@ -228,6 +228,7 @@ def forward_atomic( fparam: Optional[torch.Tensor] = None, aparam: Optional[torch.Tensor] = None, do_atomic_virial: bool = False, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ) -> Dict[str, torch.Tensor]: nframes, nloc, nnei = nlist.shape extended_coord = extended_coord.view(nframes, -1, 3) diff --git a/deepmd/pt/model/descriptor/dpa1.py b/deepmd/pt/model/descriptor/dpa1.py index 852e08403c..71c8a13f46 100644 --- a/deepmd/pt/model/descriptor/dpa1.py +++ b/deepmd/pt/model/descriptor/dpa1.py @@ -1,6 +1,7 @@ # SPDX-License-Identifier: LGPL-3.0-or-later from typing import ( Callable, + Dict, List, Optional, Tuple, @@ -453,6 +454,7 @@ def forward( extended_atype: torch.Tensor, nlist: torch.Tensor, mapping: Optional[torch.Tensor] = None, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ): """Compute the descriptor. @@ -466,6 +468,8 @@ def forward( The neighbor list. shape: nf x nloc x nnei mapping The index mapping, not required by this descriptor. + comm_dict + The data needed for communication for parallel inference. Returns ------- diff --git a/deepmd/pt/model/descriptor/dpa2.py b/deepmd/pt/model/descriptor/dpa2.py index fb792a51e2..2bf4d193f3 100644 --- a/deepmd/pt/model/descriptor/dpa2.py +++ b/deepmd/pt/model/descriptor/dpa2.py @@ -1,6 +1,7 @@ # SPDX-License-Identifier: LGPL-3.0-or-later from typing import ( Callable, + Dict, List, Optional, Tuple, @@ -395,6 +396,7 @@ def forward( extended_atype: torch.Tensor, nlist: torch.Tensor, mapping: Optional[torch.Tensor] = None, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ): """Compute the descriptor. @@ -408,6 +410,8 @@ def forward( The neighbor list. shape: nf x nloc x nnei mapping The index mapping, mapps extended region index to local region. + comm_dict + The data needed for communication for parallel inference. Returns ------- @@ -450,11 +454,13 @@ def forward( # linear to change shape g1 = self.g1_shape_tranform(g1) # mapping g1 - assert mapping is not None - mapping_ext = ( - mapping.view(nframes, nall).unsqueeze(-1).expand(-1, -1, g1.shape[-1]) - ) - g1_ext = torch.gather(g1, 1, mapping_ext) + if comm_dict is None: + assert mapping is not None + mapping_ext = ( + mapping.view(nframes, nall).unsqueeze(-1).expand(-1, -1, g1.shape[-1]) + ) + g1_ext = torch.gather(g1, 1, mapping_ext) + g1 = g1_ext # repformer g1, g2, h2, rot_mat, sw = self.repformers( nlist_dict[ @@ -464,8 +470,9 @@ def forward( ], extended_coord, extended_atype, - g1_ext, + g1, mapping, + comm_dict, ) if self.concat_output_tebd: g1 = torch.cat([g1, g1_inp], dim=-1) diff --git a/deepmd/pt/model/descriptor/hybrid.py b/deepmd/pt/model/descriptor/hybrid.py index 204ca7589d..731971f056 100644 --- a/deepmd/pt/model/descriptor/hybrid.py +++ b/deepmd/pt/model/descriptor/hybrid.py @@ -168,6 +168,7 @@ def forward( atype_ext: torch.Tensor, nlist: torch.Tensor, mapping: Optional[torch.Tensor] = None, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ): """Compute the descriptor. @@ -181,6 +182,8 @@ def forward( The neighbor list. shape: nf x nloc x nnei mapping The index mapping, not required by this descriptor. + comm_dict + The data needed for communication for parallel inference. Returns ------- @@ -443,6 +446,7 @@ def forward( extended_atype: torch.Tensor, extended_atype_embd: Optional[torch.Tensor] = None, mapping: Optional[torch.Tensor] = None, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ): """Calculate decoded embedding for each atom. diff --git a/deepmd/pt/model/descriptor/repformers.py b/deepmd/pt/model/descriptor/repformers.py index 16a38052b1..c91ca8056b 100644 --- a/deepmd/pt/model/descriptor/repformers.py +++ b/deepmd/pt/model/descriptor/repformers.py @@ -54,6 +54,27 @@ def torch_linear(*args, **kwargs): mylinear = simple_linear +if not hasattr(torch.ops.deepmd, "border_op"): + + def border_op( + argument0, + argument1, + argument2, + argument3, + argument4, + argument5, + argument6, + argument7, + argument8, + ) -> torch.Tensor: + raise NotImplementedError( + "border_op is not available since customized PyTorch OP library is not built when freezing the model." + ) + + # Note: this hack cannot actually save a model that can be runned using LAMMPS. + torch.ops.deepmd.border_op = border_op + + @DescriptorBlock.register("se_repformer") @DescriptorBlock.register("se_uni") class DescrptBlockRepformers(DescriptorBlock): @@ -234,9 +255,11 @@ def forward( extended_atype: torch.Tensor, extended_atype_embd: Optional[torch.Tensor] = None, mapping: Optional[torch.Tensor] = None, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ): - assert mapping is not None - assert extended_atype_embd is not None + if comm_dict is None: + assert mapping is not None + assert extended_atype_embd is not None nframes, nloc, nnei = nlist.shape nall = extended_coord.view(nframes, -1).shape[1] // 3 atype = extended_atype[:, :nloc] @@ -257,9 +280,13 @@ def forward( sw = sw.masked_fill(~nlist_mask, 0.0) # [nframes, nloc, tebd_dim] - atype_embd = extended_atype_embd[:, :nloc, :] - assert list(atype_embd.shape) == [nframes, nloc, self.g1_dim] - + if comm_dict is None: + assert isinstance(extended_atype_embd, torch.Tensor) # for jit + atype_embd = extended_atype_embd[:, :nloc, :] + assert list(atype_embd.shape) == [nframes, nloc, self.g1_dim] + else: + atype_embd = extended_atype_embd + assert isinstance(atype_embd, torch.Tensor) # for jit g1 = self.act(atype_embd) # nb x nloc x nnei x 1, nb x nloc x nnei x 3 if not self.direct_dist: @@ -275,11 +302,40 @@ def forward( # if the a neighbor is real or not is indicated by nlist_mask nlist[nlist == -1] = 0 # nb x nall x ng1 - mapping = mapping.view(nframes, nall).unsqueeze(-1).expand(-1, -1, self.g1_dim) + if comm_dict is None: + assert mapping is not None + mapping = ( + mapping.view(nframes, nall).unsqueeze(-1).expand(-1, -1, self.g1_dim) + ) for idx, ll in enumerate(self.layers): # g1: nb x nloc x ng1 # g1_ext: nb x nall x ng1 - g1_ext = torch.gather(g1, 1, mapping) + if comm_dict is None: + assert mapping is not None + g1_ext = torch.gather(g1, 1, mapping) + else: + n_padding = nall - nloc + g1 = torch.nn.functional.pad( + g1.squeeze(0), (0, 0, 0, n_padding), value=0.0 + ) + assert "send_list" in comm_dict + assert "send_proc" in comm_dict + assert "recv_proc" in comm_dict + assert "send_num" in comm_dict + assert "recv_num" in comm_dict + assert "communicator" in comm_dict + ret = torch.ops.deepmd.border_op( + comm_dict["send_list"], + comm_dict["send_proc"], + comm_dict["recv_proc"], + comm_dict["send_num"], + comm_dict["recv_num"], + g1, + comm_dict["communicator"], + torch.tensor(nloc), + torch.tensor(nall - nloc), + ) + g1_ext = ret[0].unsqueeze(0) g1, g2, h2 = ll.forward( g1_ext, g2, diff --git a/deepmd/pt/model/descriptor/se_a.py b/deepmd/pt/model/descriptor/se_a.py index 8b83f0d27b..3316ed5de7 100644 --- a/deepmd/pt/model/descriptor/se_a.py +++ b/deepmd/pt/model/descriptor/se_a.py @@ -191,6 +191,7 @@ def forward( atype_ext: torch.Tensor, nlist: torch.Tensor, mapping: Optional[torch.Tensor] = None, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ): """Compute the descriptor. @@ -204,6 +205,8 @@ def forward( The neighbor list. shape: nf x nloc x nnei mapping The index mapping, not required by this descriptor. + comm_dict + The data needed for communication for parallel inference. Returns ------- diff --git a/deepmd/pt/model/model/ener_model.py b/deepmd/pt/model/model/ener_model.py index 4a0eb49945..5256e42bb3 100644 --- a/deepmd/pt/model/model/ener_model.py +++ b/deepmd/pt/model/model/ener_model.py @@ -83,6 +83,7 @@ def forward_lower( fparam: Optional[torch.Tensor] = None, aparam: Optional[torch.Tensor] = None, do_atomic_virial: bool = False, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ): model_ret = self.forward_common_lower( extended_coord, @@ -92,6 +93,7 @@ def forward_lower( fparam=fparam, aparam=aparam, do_atomic_virial=do_atomic_virial, + comm_dict=comm_dict, ) if self.get_fitting_net() is not None: model_predict = {} diff --git a/deepmd/pt/model/model/make_model.py b/deepmd/pt/model/model/make_model.py index 386b5e14f9..989789c201 100644 --- a/deepmd/pt/model/model/make_model.py +++ b/deepmd/pt/model/model/make_model.py @@ -211,6 +211,7 @@ def forward_common_lower( fparam: Optional[torch.Tensor] = None, aparam: Optional[torch.Tensor] = None, do_atomic_virial: bool = False, + comm_dict: Optional[Dict[str, torch.Tensor]] = None, ): """Return model prediction. Lower interface that takes extended atomic coordinates and types, nlist, and mapping @@ -233,6 +234,8 @@ def forward_common_lower( atomic parameter. nf x nloc x nda do_atomic_virial whether calculate atomic virial. + comm_dict + The data needed for communication for parallel inference. Returns ------- @@ -254,6 +257,7 @@ def forward_common_lower( mapping=mapping, fparam=fp, aparam=ap, + comm_dict=comm_dict, ) model_predict = fit_output_to_model_output( atomic_ret, diff --git a/source/api_c/include/c_api.h b/source/api_c/include/c_api.h index cac6de377a..3ba5b5e107 100644 --- a/source/api_c/include/c_api.h +++ b/source/api_c/include/c_api.h @@ -24,12 +24,49 @@ extern DP_Nlist* DP_NewNlist(int inum_, int* ilist_, int* numneigh_, int** firstneigh_); +/* + * @brief Create a new neighbor list with communication capabilities. + * @details This function extends DP_NewNlist by adding support for parallel + * communication, allowing the neighbor list to be used in distributed + * environments. + * @param[in] inum_ Number of core region atoms. + * @param[in] ilist_ Array storing the core region atom's index. + * @param[in] numneigh_ Array storing the core region atom's neighbor atom + * number. + * @param[in] firstneigh_ Array storing the core region atom's neighbor index. + * @param[in] nswap Number of swaps to be performed in communication. + * @param[in] sendnum Array storing the number of atoms to send for each swap. + * @param[in] recvnum Array storing the number of atoms to receive for each + * swap. + * @param[in] firstrecv Index of the first receive operation for each swap. + * @param[in] sendlist List of atoms to be sent for each swap. + * @param[in] sendproc Array of processor IDs to send atoms to for each swap. + * @param[in] recvproc Array of processor IDs from which atoms are received for + * each swap. + * @param[in] world Pointer to the MPI communicator or similar communication + * world used for the operation. + * @returns A pointer to the initialized neighbor list with communication + * capabilities. + */ +extern DP_Nlist* DP_NewNlist_comm(int inum_, + int* ilist_, + int* numneigh_, + int** firstneigh_, + int nswap, + int* sendnum, + int* recvnum, + int* firstrecv, + int** sendlist, + int* sendproc, + int* recvproc, + void* world); /** * @brief Delete a neighbor list. * * @param nl Neighbor list to delete. - */ + * + **/ extern void DP_DeleteNlist(DP_Nlist* nl); /** diff --git a/source/api_c/include/deepmd.hpp b/source/api_c/include/deepmd.hpp index 059612f7af..9d0310d99a 100644 --- a/source/api_c/include/deepmd.hpp +++ b/source/api_c/include/deepmd.hpp @@ -572,6 +572,34 @@ struct InputNlist { nl(DP_NewNlist(inum_, ilist_, numneigh_, firstneigh_)) { DP_CHECK_OK(DP_NlistCheckOK, nl); }; + InputNlist(int inum_, + int *ilist_, + int *numneigh_, + int **firstneigh_, + int nswap, + int *sendnum, + int *recvnum, + int *firstrecv, + int **sendlist, + int *sendproc, + int *recvproc, + void *world) + : inum(inum_), + ilist(ilist_), + numneigh(numneigh_), + firstneigh(firstneigh_), + nl(DP_NewNlist_comm(inum_, + ilist_, + numneigh_, + firstneigh_, + nswap, + sendnum, + recvnum, + firstrecv, + sendlist, + sendproc, + recvproc, + world)) {}; ~InputNlist() { DP_DeleteNlist(nl); }; /// @brief C API neighbor list. DP_Nlist *nl; diff --git a/source/api_c/src/c_api.cc b/source/api_c/src/c_api.cc index e21cd48ffa..77b74a58d1 100644 --- a/source/api_c/src/c_api.cc +++ b/source/api_c/src/c_api.cc @@ -24,7 +24,24 @@ DP_Nlist* DP_NewNlist(int inum_, deepmd::InputNlist nl(inum_, ilist_, numneigh_, firstneigh_); DP_Nlist* new_nl = new DP_Nlist(nl); return new_nl;) } - +DP_Nlist* DP_NewNlist_comm(int inum_, + int* ilist_, + int* numneigh_, + int** firstneigh_, + int nswap, + int* sendnum, + int* recvnum, + int* firstrecv, + int** sendlist, + int* sendproc, + int* recvproc, + void* world) { + deepmd::InputNlist nl(inum_, ilist_, numneigh_, firstneigh_, nswap, sendnum, + recvnum, firstrecv, sendlist, sendproc, recvproc, + world); + DP_Nlist* new_nl = new DP_Nlist(nl); + return new_nl; +} void DP_DeleteNlist(DP_Nlist* nl) { delete nl; } DP_DeepPot::DP_DeepPot() {} diff --git a/source/api_cc/include/DeepPotPT.h b/source/api_cc/include/DeepPotPT.h index a7fc910b46..dade7129e1 100644 --- a/source/api_cc/include/DeepPotPT.h +++ b/source/api_cc/include/DeepPotPT.h @@ -325,8 +325,10 @@ class DeepPotPT : public DeepPotBase { NeighborListData nlist_data; int max_num_neighbors; int gpu_id; + int do_message_passing; // 1:dpa2 model 0:others bool gpu_enabled; at::Tensor firstneigh_tensor; + torch::Dict comm_dict; }; } // namespace deepmd diff --git a/source/api_cc/src/DeepPotPT.cc b/source/api_cc/src/DeepPotPT.cc index b4631b5e46..af8a0c0252 100644 --- a/source/api_cc/src/DeepPotPT.cc +++ b/source/api_cc/src/DeepPotPT.cc @@ -53,8 +53,15 @@ void DeepPotPT::init(const std::string& model, std::cout << "load model from: " << model << " to gpu " << gpu_id << std::endl; } - module = torch::jit::load(model, device); - + std::unordered_map metadata = {{"type", ""}}; + module = torch::jit::load(model, device, metadata); + // TODO: This should be fixed after implement api to decide whether need to + // message passing and rename this metadata + if (metadata["type"] == "dpa2") { + do_message_passing = 1; + } else { + do_message_passing = 0; + } torch::jit::FusionStrategy strategy; strategy = {{torch::jit::FusionBehavior::DYNAMIC, 10}}; torch::jit::setFusionStrategy(strategy); @@ -111,8 +118,10 @@ void DeepPotPT::compute(ENERGYVTYPE& ener, options = torch::TensorOptions().dtype(torch::kFloat32); floatType = torch::kFloat32; } - auto int_options = torch::TensorOptions().dtype(torch::kInt64); - auto int32_options = torch::TensorOptions().dtype(torch::kInt32); + auto int32_option = + torch::TensorOptions().device(torch::kCPU).dtype(torch::kInt32); + auto int_option = + torch::TensorOptions().device(torch::kCPU).dtype(torch::kInt64); // select real atoms std::vector dcoord, dforce, aparam_, datom_energy, datom_virial; std::vector datype, fwd_map, bkw_map; @@ -123,6 +132,8 @@ void DeepPotPT::compute(ENERGYVTYPE& ener, nghost, ntypes, 1, daparam, nall, aparam_nall); int nloc = nall_real - nghost_real; int nframes = 1; + // TODO: dpa2 model may need a fake communication op to deal with nloc == 0. + // this should be fixed after wrapping comm op as a pure c++ implementation. if (nloc == 0) { // no backward map needed ener.resize(nframes); @@ -146,11 +157,39 @@ void DeepPotPT::compute(ENERGYVTYPE& ener, .to(device); std::vector atype_64(datype.begin(), datype.end()); at::Tensor atype_Tensor = - torch::from_blob(atype_64.data(), {1, nall_real}, int_options).to(device); + torch::from_blob(atype_64.data(), {1, nall_real}, int_option).to(device); if (ago == 0) { nlist_data.copy_from_nlist(lmp_list); nlist_data.shuffle_exclude_empty(fwd_map); nlist_data.padding(); + if (do_message_passing == 1) { + int nswap = lmp_list.nswap; + torch::Tensor sendproc_tensor = + torch::from_blob(lmp_list.sendproc, {nswap}, int32_option); + torch::Tensor recvproc_tensor = + torch::from_blob(lmp_list.recvproc, {nswap}, int32_option); + torch::Tensor firstrecv_tensor = + torch::from_blob(lmp_list.firstrecv, {nswap}, int32_option); + torch::Tensor recvnum_tensor = + torch::from_blob(lmp_list.recvnum, {nswap}, int32_option); + torch::Tensor sendnum_tensor = + torch::from_blob(lmp_list.sendnum, {nswap}, int32_option); + torch::Tensor communicator_tensor = torch::from_blob( + const_cast(lmp_list.world), {1}, torch::kInt64); + // torch::Tensor communicator_tensor = + // torch::tensor(lmp_list.world, int32_option); + torch::Tensor nswap_tensor = torch::tensor(nswap, int32_option); + int total_send = + std::accumulate(lmp_list.sendnum, lmp_list.sendnum + nswap, 0); + torch::Tensor sendlist_tensor = + torch::from_blob(lmp_list.sendlist, {total_send}, int32_option); + comm_dict.insert("send_list", sendlist_tensor); + comm_dict.insert("send_proc", sendproc_tensor); + comm_dict.insert("recv_proc", recvproc_tensor); + comm_dict.insert("send_num", sendnum_tensor); + comm_dict.insert("recv_num", recvnum_tensor); + comm_dict.insert("communicator", communicator_tensor); + } } at::Tensor firstneigh = createNlistTensor(nlist_data.jlist); firstneigh_tensor = firstneigh.to(torch::kInt64).to(device); @@ -173,11 +212,17 @@ void DeepPotPT::compute(ENERGYVTYPE& ener, .to(device); } c10::Dict outputs = - module - .run_method("forward_lower", coord_wrapped_Tensor, atype_Tensor, - firstneigh_tensor, optional_tensor, fparam_tensor, - aparam_tensor, do_atom_virial_tensor) - .toGenericDict(); + (do_message_passing == 1) + ? module + .run_method("forward_lower", coord_wrapped_Tensor, atype_Tensor, + firstneigh_tensor, optional_tensor, fparam_tensor, + aparam_tensor, do_atom_virial_tensor, comm_dict) + .toGenericDict() + : module + .run_method("forward_lower", coord_wrapped_Tensor, atype_Tensor, + firstneigh_tensor, optional_tensor, fparam_tensor, + aparam_tensor, do_atom_virial_tensor) + .toGenericDict(); c10::IValue energy_ = outputs.at("energy"); c10::IValue force_ = outputs.at("extended_force"); c10::IValue virial_ = outputs.at("virial"); diff --git a/source/api_cc/tests/test_deeppot_dpa_pt.cc b/source/api_cc/tests/test_deeppot_dpa_pt.cc new file mode 100644 index 0000000000..416802cd20 --- /dev/null +++ b/source/api_cc/tests/test_deeppot_dpa_pt.cc @@ -0,0 +1,144 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "DeepPot.h" +#include "neighbor_list.h" +#include "test_utils.h" + +// 1e-10 cannot pass; unclear bug or not +#undef EPSILON +#define EPSILON (std::is_same::value ? 1e-7 : 1e-1) + +template +class TestInferDeepPotDpaPt : public ::testing::Test { + protected: + std::vector coord = {12.83, 2.56, 2.18, 12.09, 2.87, 2.74, + 00.25, 3.32, 1.68, 3.36, 3.00, 1.81, + 3.51, 2.51, 2.60, 4.27, 3.22, 1.56}; + std::vector atype = {0, 1, 1, 0, 1, 1}; + std::vector box = {13., 0., 0., 0., 13., 0., 0., 0., 13.}; + std::vector expected_e = {-93.295296030283, -186.548183879333, + -186.988827037855, -93.295307298571, + -186.799369383945, -186.507754447584}; + std::vector expected_f = { + 4.964133039248, -0.542378158452, -0.381267990914, -0.563388054735, + 0.340320322541, 0.473406268590, 0.159774831398, 0.684651816874, + -0.377008867620, -4.718603033927, -0.012604322920, -0.425121993870, + -0.500302936762, -0.637586419292, 0.930351899011, 0.658386154778, + 0.167596761250, -0.220359315197}; + std::vector expected_v = { + -5.055176133632, -0.743392222876, 0.330846378467, -0.031111229868, + 0.018004461517, 0.170047655301, -0.063087726831, -0.004361215202, + -0.042920299661, 3.624188578021, -0.252818122305, -0.026516806138, + -0.014510755893, 0.103726553937, 0.181001311123, -0.508673535094, + 0.142101134395, 0.135339636607, -0.460067993361, 0.120541583338, + -0.206396390140, -0.630991740522, 0.397670086144, -0.427022150075, + 0.656463775044, -0.209989614377, 0.288974239790, -7.603428707029, + -0.912313971544, 0.882084544041, -0.807760666057, -0.070519570327, + 0.022164414763, 0.569448616709, 0.028522950109, 0.051641619288, + -1.452133900157, 0.037653156584, -0.144421326931, -0.308825789350, + 0.302020522568, -0.446073217801, 0.313539058423, -0.461052923736, + 0.678235442273, 1.429780276456, 0.080472825760, -0.103424652500, + 0.123343430648, 0.011879908277, -0.018897229721, -0.235518441452, + -0.013999547600, 0.027007016662}; + int natoms; + double expected_tot_e; + std::vector expected_tot_v; + + deepmd::DeepPot dp; + + void SetUp() override { + dp.init("../../tests/infer/deeppot_dpa.pth"); + + natoms = expected_e.size(); + EXPECT_EQ(natoms * 3, expected_f.size()); + EXPECT_EQ(natoms * 9, expected_v.size()); + expected_tot_e = 0.; + expected_tot_v.resize(9); + std::fill(expected_tot_v.begin(), expected_tot_v.end(), 0.); + for (int ii = 0; ii < natoms; ++ii) { + expected_tot_e += expected_e[ii]; + } + for (int ii = 0; ii < natoms; ++ii) { + for (int dd = 0; dd < 9; ++dd) { + expected_tot_v[dd] += expected_v[ii * 9 + dd]; + } + } + }; + + void TearDown() override { remove("deeppot.pb"); }; +}; + +TYPED_TEST_SUITE(TestInferDeepPotDpaPt, ValueTypes); + +TYPED_TEST(TestInferDeepPotDpaPt, cpu_build_nlist) { + using VALUETYPE = TypeParam; + std::vector& coord = this->coord; + std::vector& atype = this->atype; + std::vector& box = this->box; + std::vector& expected_e = this->expected_e; + std::vector& expected_f = this->expected_f; + std::vector& expected_v = this->expected_v; + int& natoms = this->natoms; + double& expected_tot_e = this->expected_tot_e; + std::vector& expected_tot_v = this->expected_tot_v; + deepmd::DeepPot& dp = this->dp; + double ener; + std::vector force, virial; + dp.compute(ener, force, virial, coord, atype, box); + + EXPECT_EQ(force.size(), natoms * 3); + EXPECT_EQ(virial.size(), 9); + + EXPECT_LT(fabs(ener - expected_tot_e), EPSILON); + for (int ii = 0; ii < natoms * 3; ++ii) { + EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON); + } + for (int ii = 0; ii < 3 * 3; ++ii) { + EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON); + } +} + +TYPED_TEST(TestInferDeepPotDpaPt, cpu_build_nlist_atomic) { + using VALUETYPE = TypeParam; + std::vector& coord = this->coord; + std::vector& atype = this->atype; + std::vector& box = this->box; + std::vector& expected_e = this->expected_e; + std::vector& expected_f = this->expected_f; + std::vector& expected_v = this->expected_v; + int& natoms = this->natoms; + double& expected_tot_e = this->expected_tot_e; + std::vector& expected_tot_v = this->expected_tot_v; + deepmd::DeepPot& dp = this->dp; + double ener; + std::vector force, virial, atom_ener, atom_vir; + dp.compute(ener, force, virial, atom_ener, atom_vir, coord, atype, box); + + EXPECT_EQ(force.size(), natoms * 3); + EXPECT_EQ(virial.size(), 9); + EXPECT_EQ(atom_ener.size(), natoms); + EXPECT_EQ(atom_vir.size(), natoms * 9); + + EXPECT_LT(fabs(ener - expected_tot_e), EPSILON); + for (int ii = 0; ii < natoms * 3; ++ii) { + EXPECT_LT(fabs(force[ii] - expected_f[ii]), EPSILON); + } + for (int ii = 0; ii < 3 * 3; ++ii) { + EXPECT_LT(fabs(virial[ii] - expected_tot_v[ii]), EPSILON); + } + for (int ii = 0; ii < natoms; ++ii) { + EXPECT_LT(fabs(atom_ener[ii] - expected_e[ii]), EPSILON); + } + for (int ii = 0; ii < natoms * 9; ++ii) { + EXPECT_LT(fabs(atom_vir[ii] - expected_v[ii]), EPSILON); + } +} diff --git a/source/lib/include/neighbor_list.h b/source/lib/include/neighbor_list.h index 39c2064b56..b99827b552 100644 --- a/source/lib/include/neighbor_list.h +++ b/source/lib/include/neighbor_list.h @@ -26,12 +26,72 @@ struct InputNlist { int* numneigh; /// Array stores the core region atom's neighbor index int** firstneigh; - InputNlist() : inum(0), ilist(NULL), numneigh(NULL), firstneigh(NULL) {}; + /// # of swaps to perform = sum of maxneed + int nswap; + /// # of atoms to send in each swap + int* sendnum; + /// # of atoms to recv in each swap + int* recvnum; + /// where to put 1st recv atom in each swap + int* firstrecv; + /// list of atoms to send in each swap + int** sendlist; + /// proc to send to at each swap + int* sendproc; + /// proc to recv from at each swap + int* recvproc; + /// MPI_comm data in lmp + void* world; + InputNlist() + : inum(0), + ilist(NULL), + numneigh(NULL), + firstneigh(NULL), + nswap(0), + sendnum(nullptr), + recvnum(nullptr), + firstrecv(nullptr), + sendlist(nullptr), + sendproc(nullptr), + recvproc(nullptr), + world(0) {}; InputNlist(int inum_, int* ilist_, int* numneigh_, int** firstneigh_) : inum(inum_), ilist(ilist_), numneigh(numneigh_), - firstneigh(firstneigh_) {}; + firstneigh(firstneigh_), + nswap(0), + sendnum(nullptr), + recvnum(nullptr), + firstrecv(nullptr), + sendlist(nullptr), + sendproc(nullptr), + recvproc(nullptr), + world(0) {}; + InputNlist(int inum_, + int* ilist_, + int* numneigh_, + int** firstneigh_, + int nswap, + int* sendnum, + int* recvnum, + int* firstrecv, + int** sendlist, + int* sendproc, + int* recvproc, + void* world) + : inum(inum_), + ilist(ilist_), + numneigh(numneigh_), + firstneigh(firstneigh_), + nswap(nswap), + sendnum(sendnum), + recvnum(recvnum), + firstrecv(firstrecv), + sendlist(sendlist), + sendproc(sendproc), + recvproc(recvproc), + world(world) {}; ~InputNlist() {}; }; diff --git a/source/lmp/pair_deepmd.cpp b/source/lmp/pair_deepmd.cpp index 90aa453143..c5dc8ecb48 100644 --- a/source/lmp/pair_deepmd.cpp +++ b/source/lmp/pair_deepmd.cpp @@ -1,6 +1,7 @@ // SPDX-License-Identifier: LGPL-3.0-or-later #include +#include #include #include #include @@ -459,7 +460,9 @@ void PairDeepMD::compute(int eflag, int vflag) { "centroid/stress/atom command for 9-element atomic virial."); } bool do_ghost = true; - + assert(sizeof(MPI_Comm) == sizeof(int)); + // dpa2 communication + commdata_ = (CommBrickDeepMD *)comm; double **x = atom->x; double **f = atom->f; int *type = atom->type; @@ -550,8 +553,11 @@ void PairDeepMD::compute(int eflag, int vflag) { multi_models_mod_devi = (numb_models > 1 && (out_freq > 0 && update->ntimestep % out_freq == 0)); if (do_ghost) { - deepmd_compat::InputNlist lmp_list(list->inum, list->ilist, list->numneigh, - list->firstneigh); + deepmd_compat::InputNlist lmp_list( + list->inum, list->ilist, list->numneigh, list->firstneigh, + commdata_->nswap, commdata_->sendnum, commdata_->recvnum, + commdata_->firstrecv, commdata_->sendlist, commdata_->sendproc, + commdata_->recvproc, &world); deepmd_compat::InputNlist extend_lmp_list; if (atom->sp_flag) { extend(extend_inum, extend_ilist, extend_numneigh, extend_neigh, diff --git a/source/lmp/pair_deepmd.h b/source/lmp/pair_deepmd.h index cd72dc7b2a..a3f6717a3b 100644 --- a/source/lmp/pair_deepmd.h +++ b/source/lmp/pair_deepmd.h @@ -32,10 +32,13 @@ namespace deepmd_compat = deepmd::hpp; #include #include +#include "comm_brick.h" #define FLOAT_PREC double namespace LAMMPS_NS { - +class CommBrickDeepMD : public CommBrick { + friend class PairDeepMD; +}; class PairDeepMD : public Pair { public: PairDeepMD(class LAMMPS *); @@ -137,6 +140,8 @@ class PairDeepMD : public Pair { tagint *tagsend, *tagrecv; double *stdfsend, *stdfrecv; std::vector type_idx_map; + + CommBrickDeepMD *commdata_; }; } // namespace LAMMPS_NS diff --git a/source/lmp/tests/test_lammps_dpa_pt.py b/source/lmp/tests/test_lammps_dpa_pt.py new file mode 100644 index 0000000000..a4e2f93014 --- /dev/null +++ b/source/lmp/tests/test_lammps_dpa_pt.py @@ -0,0 +1,721 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +import importlib +import os +import shutil +import subprocess as sp +import sys +import tempfile +from pathlib import ( + Path, +) + +import constants +import numpy as np +import pytest +from lammps import ( + PyLammps, +) +from write_lmp_data import ( + write_lmp_data, +) + +pbtxt_file2 = ( + Path(__file__).parent.parent.parent / "tests" / "infer" / "deeppot-1.pbtxt" +) +pb_file = Path(__file__).parent.parent.parent / "tests" / "infer" / "deeppot_dpa.pth" +pb_file2 = Path(__file__).parent / "graph2.pb" +system_file = Path(__file__).parent.parent.parent / "tests" +data_file = Path(__file__).parent / "data.lmp" +data_file_si = Path(__file__).parent / "data.si" +data_type_map_file = Path(__file__).parent / "data_type_map.lmp" +md_file = Path(__file__).parent / "md.out" + +# this is as the same as python and c++ tests, test_deeppot_a.py +expected_ae = np.array( + [ + -93.295296030283, + -186.548183879333, + -186.988827037855, + -93.295307298571, + -186.799369383945, + -186.507754447584, + ] +) +expected_e = np.sum(expected_ae) +expected_f = np.array( + [ + 4.964133039248, + -0.542378158452, + -0.381267990914, + -0.563388054735, + 0.340320322541, + 0.473406268590, + 0.159774831398, + 0.684651816874, + -0.377008867620, + -4.718603033927, + -0.012604322920, + -0.425121993870, + -0.500302936762, + -0.637586419292, + 0.930351899011, + 0.658386154778, + 0.167596761250, + -0.220359315197, + ] +).reshape(6, 3) + +expected_f2 = np.array( + [ + [-0.6454949, 1.72457783, 0.18897958], + [1.68936514, -0.36995299, -1.36044464], + [-1.09902692, -1.35487928, 1.17416702], + [1.68426111, -0.50835585, 0.98340415], + [0.05771758, 1.12515818, -1.77561531], + [-1.686822, -0.61654789, 0.78950921], + ] +) + +expected_v = -np.array( + [ + -5.055176133632, + -0.743392222876, + 0.330846378467, + -0.031111229868, + 0.018004461517, + 0.170047655301, + -0.063087726831, + -0.004361215202, + -0.042920299661, + 3.624188578021, + -0.252818122305, + -0.026516806138, + -0.014510755893, + 0.103726553937, + 0.181001311123, + -0.508673535094, + 0.142101134395, + 0.135339636607, + -0.460067993361, + 0.120541583338, + -0.206396390140, + -0.630991740522, + 0.397670086144, + -0.427022150075, + 0.656463775044, + -0.209989614377, + 0.288974239790, + -7.603428707029, + -0.912313971544, + 0.882084544041, + -0.807760666057, + -0.070519570327, + 0.022164414763, + 0.569448616709, + 0.028522950109, + 0.051641619288, + -1.452133900157, + 0.037653156584, + -0.144421326931, + -0.308825789350, + 0.302020522568, + -0.446073217801, + 0.313539058423, + -0.461052923736, + 0.678235442273, + 1.429780276456, + 0.080472825760, + -0.103424652500, + 0.123343430648, + 0.011879908277, + -0.018897229721, + -0.235518441452, + -0.013999547600, + 0.027007016662, + ] +).reshape(6, 9) +expected_v2 = -np.array( + [ + [ + -0.70008436, + -0.06399891, + 0.63678391, + -0.07642171, + -0.70580035, + 0.20506145, + 0.64098364, + 0.20305781, + -0.57906794, + ], + [ + -0.6372635, + 0.14315552, + 0.51952246, + 0.04604049, + -0.06003681, + -0.02688702, + 0.54489318, + -0.10951559, + -0.43730539, + ], + [ + -0.25090748, + -0.37466262, + 0.34085833, + -0.26690852, + -0.37676917, + 0.29080825, + 0.31600481, + 0.37558276, + -0.33251064, + ], + [ + -0.80195614, + -0.10273138, + 0.06935364, + -0.10429256, + -0.29693811, + 0.45643496, + 0.07247872, + 0.45604679, + -0.71048816, + ], + [ + -0.03840668, + -0.07680205, + 0.10940472, + -0.02374189, + -0.27610266, + 0.4336071, + 0.02465248, + 0.4290638, + -0.67496763, + ], + [ + -0.61475065, + -0.21163135, + 0.26652929, + -0.26134659, + -0.11560267, + 0.15415902, + 0.34343952, + 0.1589482, + -0.21370642, + ], + ] +).reshape(6, 9) + +box = np.array([0, 13, 0, 13, 0, 13, 0, 0, 0]) +coord = np.array( + [ + [12.83, 2.56, 2.18], + [12.09, 2.87, 2.74], + [0.25, 3.32, 1.68], + [3.36, 3.00, 1.81], + [3.51, 2.51, 2.60], + [4.27, 3.22, 1.56], + ] +) +type_OH = np.array([1, 2, 2, 1, 2, 2]) +type_HO = np.array([2, 1, 1, 2, 1, 1]) + + +sp.check_output( + f"{sys.executable} -m deepmd convert-from pbtxt -i {pbtxt_file2.resolve()} -o {pb_file2.resolve()}".split() +) + + +def setup_module(): + write_lmp_data(box, coord, type_OH, data_file) + write_lmp_data(box, coord, type_HO, data_type_map_file) + write_lmp_data( + box * constants.dist_metal2si, + coord * constants.dist_metal2si, + type_OH, + data_file_si, + ) + + +def teardown_module(): + os.remove(data_file) + os.remove(data_type_map_file) + + +def _lammps(data_file, units="metal") -> PyLammps: + lammps = PyLammps() + lammps.units(units) + lammps.boundary("p p p") + lammps.atom_style("atomic") + if units == "metal" or units == "real": + lammps.neighbor("2.0 bin") + elif units == "si": + lammps.neighbor("2.0e-10 bin") + else: + raise ValueError("units should be metal, real, or si") + lammps.neigh_modify("every 10 delay 0 check no") + lammps.read_data(data_file.resolve()) + if units == "metal" or units == "real": + lammps.mass("1 16") + lammps.mass("2 2") + elif units == "si": + lammps.mass("1 %.10e" % (16 * constants.mass_metal2si)) + lammps.mass("2 %.10e" % (2 * constants.mass_metal2si)) + else: + raise ValueError("units should be metal, real, or si") + if units == "metal": + lammps.timestep(0.0005) + elif units == "real": + lammps.timestep(0.5) + elif units == "si": + lammps.timestep(5e-16) + else: + raise ValueError("units should be metal, real, or si") + lammps.fix("1 all nve") + return lammps + + +@pytest.fixture +def lammps(): + lmp = _lammps(data_file=data_file) + yield lmp + lmp.close() + + +@pytest.fixture +def lammps_type_map(): + lmp = _lammps(data_file=data_type_map_file) + yield lmp + lmp.close() + + +@pytest.fixture +def lammps_real(): + lmp = _lammps(data_file=data_file, units="real") + yield lmp + lmp.close() + + +@pytest.fixture +def lammps_si(): + lmp = _lammps(data_file=data_file_si, units="si") + yield lmp + lmp.close() + + +def test_pair_deepmd(lammps): + lammps.pair_style(f"deepmd {pb_file.resolve()}") + lammps.pair_coeff("* *") + lammps.run(0) + assert lammps.eval("pe") == pytest.approx(expected_e) + for ii in range(6): + assert lammps.atoms[ii].force == pytest.approx( + expected_f[lammps.atoms[ii].id - 1] + ) + lammps.run(1) + + +def test_pair_deepmd_virial(lammps): + lammps.pair_style(f"deepmd {pb_file.resolve()}") + lammps.pair_coeff("* *") + lammps.compute("virial all centroid/stress/atom NULL pair") + for ii in range(9): + jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii] + lammps.variable(f"virial{jj} atom c_virial[{ii+1}]") + lammps.dump( + "1 all custom 1 dump id " + " ".join([f"v_virial{ii}" for ii in range(9)]) + ) + lammps.run(0) + assert lammps.eval("pe") == pytest.approx(expected_e) + for ii in range(6): + assert lammps.atoms[ii].force == pytest.approx( + expected_f[lammps.atoms[ii].id - 1] + ) + idx_map = lammps.lmp.numpy.extract_atom("id") - 1 + for ii in range(9): + assert np.array( + lammps.variables[f"virial{ii}"].value + ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii]) + + +def test_pair_deepmd_model_devi(lammps): + lammps.pair_style( + f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" + ) + lammps.pair_coeff("* *") + lammps.run(0) + assert lammps.eval("pe") == pytest.approx(expected_e) + for ii in range(6): + assert lammps.atoms[ii].force == pytest.approx( + expected_f[lammps.atoms[ii].id - 1] + ) + # load model devi + md = np.loadtxt(md_file.resolve()) + expected_md_f = np.linalg.norm(np.std([expected_f, expected_f2], axis=0), axis=1) + assert md[7:] == pytest.approx(expected_md_f) + assert md[4] == pytest.approx(np.max(expected_md_f)) + assert md[5] == pytest.approx(np.min(expected_md_f)) + assert md[6] == pytest.approx(np.mean(expected_md_f)) + expected_md_v = ( + np.std([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) / 6 + ) + assert md[1] == pytest.approx(np.max(expected_md_v)) + assert md[2] == pytest.approx(np.min(expected_md_v)) + assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) + + +def test_pair_deepmd_model_devi_virial(lammps): + lammps.pair_style( + f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" + ) + lammps.pair_coeff("* *") + lammps.compute("virial all centroid/stress/atom NULL pair") + for ii in range(9): + jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii] + lammps.variable(f"virial{jj} atom c_virial[{ii+1}]") + lammps.dump( + "1 all custom 1 dump id " + " ".join([f"v_virial{ii}" for ii in range(9)]) + ) + lammps.run(0) + assert lammps.eval("pe") == pytest.approx(expected_e) + for ii in range(6): + assert lammps.atoms[ii].force == pytest.approx( + expected_f[lammps.atoms[ii].id - 1] + ) + idx_map = lammps.lmp.numpy.extract_atom("id") - 1 + for ii in range(9): + assert np.array( + lammps.variables[f"virial{ii}"].value + ) / constants.nktv2p == pytest.approx(expected_v[idx_map, ii]) + # load model devi + md = np.loadtxt(md_file.resolve()) + expected_md_f = np.linalg.norm(np.std([expected_f, expected_f2], axis=0), axis=1) + assert md[7:] == pytest.approx(expected_md_f) + assert md[4] == pytest.approx(np.max(expected_md_f)) + assert md[5] == pytest.approx(np.min(expected_md_f)) + assert md[6] == pytest.approx(np.mean(expected_md_f)) + expected_md_v = ( + np.std([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) / 6 + ) + assert md[1] == pytest.approx(np.max(expected_md_v)) + assert md[2] == pytest.approx(np.min(expected_md_v)) + assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) + + +def test_pair_deepmd_model_devi_atomic_relative(lammps): + relative = 1.0 + lammps.pair_style( + f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic relative {relative}" + ) + lammps.pair_coeff("* *") + lammps.run(0) + assert lammps.eval("pe") == pytest.approx(expected_e) + for ii in range(6): + assert lammps.atoms[ii].force == pytest.approx( + expected_f[lammps.atoms[ii].id - 1] + ) + # load model devi + md = np.loadtxt(md_file.resolve()) + norm = np.linalg.norm(np.mean([expected_f, expected_f2], axis=0), axis=1) + expected_md_f = np.linalg.norm(np.std([expected_f, expected_f2], axis=0), axis=1) + expected_md_f /= norm + relative + assert md[7:] == pytest.approx(expected_md_f) + assert md[4] == pytest.approx(np.max(expected_md_f)) + assert md[5] == pytest.approx(np.min(expected_md_f)) + assert md[6] == pytest.approx(np.mean(expected_md_f)) + expected_md_v = ( + np.std([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) / 6 + ) + assert md[1] == pytest.approx(np.max(expected_md_v)) + assert md[2] == pytest.approx(np.min(expected_md_v)) + assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) + + +def test_pair_deepmd_model_devi_atomic_relative_v(lammps): + relative = 1.0 + lammps.pair_style( + f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic relative_v {relative}" + ) + lammps.pair_coeff("* *") + lammps.run(0) + assert lammps.eval("pe") == pytest.approx(expected_e) + for ii in range(6): + assert lammps.atoms[ii].force == pytest.approx( + expected_f[lammps.atoms[ii].id - 1] + ) + md = np.loadtxt(md_file.resolve()) + expected_md_f = np.linalg.norm(np.std([expected_f, expected_f2], axis=0), axis=1) + assert md[7:] == pytest.approx(expected_md_f) + assert md[4] == pytest.approx(np.max(expected_md_f)) + assert md[5] == pytest.approx(np.min(expected_md_f)) + assert md[6] == pytest.approx(np.mean(expected_md_f)) + expected_md_v = ( + np.std([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) / 6 + ) + norm = ( + np.abs( + np.mean([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) + ) + / 6 + ) + expected_md_v /= norm + relative + assert md[1] == pytest.approx(np.max(expected_md_v)) + assert md[2] == pytest.approx(np.min(expected_md_v)) + assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) + + +def test_pair_deepmd_type_map(lammps_type_map): + lammps_type_map.pair_style(f"deepmd {pb_file.resolve()}") + lammps_type_map.pair_coeff("* * H O") + lammps_type_map.run(0) + assert lammps_type_map.eval("pe") == pytest.approx(expected_e) + for ii in range(6): + assert lammps_type_map.atoms[ii].force == pytest.approx( + expected_f[lammps_type_map.atoms[ii].id - 1] + ) + lammps_type_map.run(1) + + +def test_pair_deepmd_real(lammps_real): + lammps_real.pair_style(f"deepmd {pb_file.resolve()}") + lammps_real.pair_coeff("* *") + lammps_real.run(0) + assert lammps_real.eval("pe") == pytest.approx( + expected_e * constants.ener_metal2real + ) + for ii in range(6): + assert lammps_real.atoms[ii].force == pytest.approx( + expected_f[lammps_real.atoms[ii].id - 1] * constants.force_metal2real + ) + lammps_real.run(1) + + +def test_pair_deepmd_virial_real(lammps_real): + lammps_real.pair_style(f"deepmd {pb_file.resolve()}") + lammps_real.pair_coeff("* *") + lammps_real.compute("virial all centroid/stress/atom NULL pair") + for ii in range(9): + jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii] + lammps_real.variable(f"virial{jj} atom c_virial[{ii+1}]") + lammps_real.dump( + "1 all custom 1 dump id " + " ".join([f"v_virial{ii}" for ii in range(9)]) + ) + lammps_real.run(0) + assert lammps_real.eval("pe") == pytest.approx( + expected_e * constants.ener_metal2real + ) + for ii in range(6): + assert lammps_real.atoms[ii].force == pytest.approx( + expected_f[lammps_real.atoms[ii].id - 1] * constants.force_metal2real + ) + idx_map = lammps_real.lmp.numpy.extract_atom("id") - 1 + for ii in range(9): + assert np.array( + lammps_real.variables[f"virial{ii}"].value + ) / constants.nktv2p_real == pytest.approx( + expected_v[idx_map, ii] * constants.ener_metal2real + ) + + +def test_pair_deepmd_model_devi_real(lammps_real): + lammps_real.pair_style( + f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" + ) + lammps_real.pair_coeff("* *") + lammps_real.run(0) + assert lammps_real.eval("pe") == pytest.approx( + expected_e * constants.ener_metal2real + ) + for ii in range(6): + assert lammps_real.atoms[ii].force == pytest.approx( + expected_f[lammps_real.atoms[ii].id - 1] * constants.force_metal2real + ) + # load model devi + md = np.loadtxt(md_file.resolve()) + expected_md_f = np.linalg.norm(np.std([expected_f, expected_f2], axis=0), axis=1) + assert md[7:] == pytest.approx(expected_md_f * constants.force_metal2real) + assert md[4] == pytest.approx(np.max(expected_md_f) * constants.force_metal2real) + assert md[5] == pytest.approx(np.min(expected_md_f) * constants.force_metal2real) + assert md[6] == pytest.approx(np.mean(expected_md_f) * constants.force_metal2real) + expected_md_v = ( + np.std([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) / 6 + ) + assert md[1] == pytest.approx(np.max(expected_md_v) * constants.ener_metal2real) + assert md[2] == pytest.approx(np.min(expected_md_v) * constants.ener_metal2real) + assert md[3] == pytest.approx( + np.sqrt(np.mean(np.square(expected_md_v))) * constants.ener_metal2real + ) + + +def test_pair_deepmd_model_devi_virial_real(lammps_real): + lammps_real.pair_style( + f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic" + ) + lammps_real.pair_coeff("* *") + lammps_real.compute("virial all centroid/stress/atom NULL pair") + for ii in range(9): + jj = [0, 4, 8, 3, 6, 7, 1, 2, 5][ii] + lammps_real.variable(f"virial{jj} atom c_virial[{ii+1}]") + lammps_real.dump( + "1 all custom 1 dump id " + " ".join([f"v_virial{ii}" for ii in range(9)]) + ) + lammps_real.run(0) + assert lammps_real.eval("pe") == pytest.approx( + expected_e * constants.ener_metal2real + ) + for ii in range(6): + assert lammps_real.atoms[ii].force == pytest.approx( + expected_f[lammps_real.atoms[ii].id - 1] * constants.force_metal2real + ) + idx_map = lammps_real.lmp.numpy.extract_atom("id") - 1 + for ii in range(9): + assert np.array( + lammps_real.variables[f"virial{ii}"].value + ) / constants.nktv2p_real == pytest.approx( + expected_v[idx_map, ii] * constants.ener_metal2real + ) + # load model devi + md = np.loadtxt(md_file.resolve()) + expected_md_f = np.linalg.norm(np.std([expected_f, expected_f2], axis=0), axis=1) + assert md[7:] == pytest.approx(expected_md_f * constants.force_metal2real) + assert md[4] == pytest.approx(np.max(expected_md_f) * constants.force_metal2real) + assert md[5] == pytest.approx(np.min(expected_md_f) * constants.force_metal2real) + assert md[6] == pytest.approx(np.mean(expected_md_f) * constants.force_metal2real) + expected_md_v = ( + np.std([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) / 6 + ) + assert md[1] == pytest.approx(np.max(expected_md_v) * constants.ener_metal2real) + assert md[2] == pytest.approx(np.min(expected_md_v) * constants.ener_metal2real) + assert md[3] == pytest.approx( + np.sqrt(np.mean(np.square(expected_md_v))) * constants.ener_metal2real + ) + + +def test_pair_deepmd_model_devi_atomic_relative_real(lammps_real): + relative = 1.0 + lammps_real.pair_style( + f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic relative {relative * constants.force_metal2real}" + ) + lammps_real.pair_coeff("* *") + lammps_real.run(0) + assert lammps_real.eval("pe") == pytest.approx( + expected_e * constants.ener_metal2real + ) + for ii in range(6): + assert lammps_real.atoms[ii].force == pytest.approx( + expected_f[lammps_real.atoms[ii].id - 1] * constants.force_metal2real + ) + # load model devi + md = np.loadtxt(md_file.resolve()) + norm = np.linalg.norm(np.mean([expected_f, expected_f2], axis=0), axis=1) + expected_md_f = np.linalg.norm(np.std([expected_f, expected_f2], axis=0), axis=1) + expected_md_f /= norm + relative + assert md[7:] == pytest.approx(expected_md_f * constants.force_metal2real) + assert md[4] == pytest.approx(np.max(expected_md_f) * constants.force_metal2real) + assert md[5] == pytest.approx(np.min(expected_md_f) * constants.force_metal2real) + assert md[6] == pytest.approx(np.mean(expected_md_f) * constants.force_metal2real) + expected_md_v = ( + np.std([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) / 6 + ) + assert md[1] == pytest.approx(np.max(expected_md_v) * constants.ener_metal2real) + assert md[2] == pytest.approx(np.min(expected_md_v) * constants.ener_metal2real) + assert md[3] == pytest.approx( + np.sqrt(np.mean(np.square(expected_md_v))) * constants.ener_metal2real + ) + + +def test_pair_deepmd_model_devi_atomic_relative_v_real(lammps_real): + relative = 1.0 + lammps_real.pair_style( + f"deepmd {pb_file.resolve()} {pb_file2.resolve()} out_file {md_file.resolve()} out_freq 1 atomic relative_v {relative * constants.ener_metal2real}" + ) + lammps_real.pair_coeff("* *") + lammps_real.run(0) + assert lammps_real.eval("pe") == pytest.approx( + expected_e * constants.ener_metal2real + ) + for ii in range(6): + assert lammps_real.atoms[ii].force == pytest.approx( + expected_f[lammps_real.atoms[ii].id - 1] * constants.force_metal2real + ) + md = np.loadtxt(md_file.resolve()) + expected_md_f = np.linalg.norm(np.std([expected_f, expected_f2], axis=0), axis=1) + assert md[7:] == pytest.approx(expected_md_f * constants.force_metal2real) + assert md[4] == pytest.approx(np.max(expected_md_f) * constants.force_metal2real) + assert md[5] == pytest.approx(np.min(expected_md_f) * constants.force_metal2real) + assert md[6] == pytest.approx(np.mean(expected_md_f) * constants.force_metal2real) + expected_md_v = ( + np.std([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) / 6 + ) + norm = ( + np.abs( + np.mean([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) + ) + / 6 + ) + expected_md_v /= norm + relative + assert md[1] == pytest.approx(np.max(expected_md_v) * constants.ener_metal2real) + assert md[2] == pytest.approx(np.min(expected_md_v) * constants.ener_metal2real) + assert md[3] == pytest.approx( + np.sqrt(np.mean(np.square(expected_md_v))) * constants.ener_metal2real + ) + + +def test_pair_deepmd_si(lammps_si): + lammps_si.pair_style(f"deepmd {pb_file.resolve()}") + lammps_si.pair_coeff("* *") + lammps_si.run(0) + assert lammps_si.eval("pe") == pytest.approx(expected_e * constants.ener_metal2si) + for ii in range(6): + assert lammps_si.atoms[ii].force == pytest.approx( + expected_f[lammps_si.atoms[ii].id - 1] * constants.force_metal2si + ) + lammps_si.run(1) + + +@pytest.mark.skipif( + shutil.which("mpirun") is None, reason="MPI is not installed on this system" +) +@pytest.mark.skipif( + importlib.util.find_spec("mpi4py") is None, reason="mpi4py is not installed" +) +@pytest.mark.parametrize( + ("balance_args",), + [(["--balance"],)], +) +def test_pair_deepmd_mpi(balance_args: list): + with tempfile.NamedTemporaryFile() as f: + sp.check_call( + [ + "mpirun", + "-n", + "2", + sys.executable, + Path(__file__).parent / "run_mpi_pair_deepmd.py", + data_file, + pb_file, + pb_file2, + md_file, + f.name, + *balance_args, + ] + ) + arr = np.loadtxt(f.name, ndmin=1) + pe = arr[0] + + relative = 1.0 + assert pe == pytest.approx(expected_e) + # load model devi + md = np.loadtxt(md_file.resolve()) + norm = np.linalg.norm(np.mean([expected_f, expected_f2], axis=0), axis=1) + expected_md_f = np.linalg.norm(np.std([expected_f, expected_f2], axis=0), axis=1) + expected_md_f /= norm + relative + assert md[7:] == pytest.approx(expected_md_f) + assert md[4] == pytest.approx(np.max(expected_md_f)) + assert md[5] == pytest.approx(np.min(expected_md_f)) + assert md[6] == pytest.approx(np.mean(expected_md_f)) + expected_md_v = ( + np.std([np.sum(expected_v, axis=0), np.sum(expected_v2, axis=0)], axis=0) / 6 + ) + assert md[1] == pytest.approx(np.max(expected_md_v)) + assert md[2] == pytest.approx(np.min(expected_md_v)) + assert md[3] == pytest.approx(np.sqrt(np.mean(np.square(expected_md_v)))) diff --git a/source/op/pt/CMakeLists.txt b/source/op/pt/CMakeLists.txt index 362a0fd89d..3254e5e852 100644 --- a/source/op/pt/CMakeLists.txt +++ b/source/op/pt/CMakeLists.txt @@ -1,4 +1,4 @@ -file(GLOB OP_SRC print_summary.cc) +file(GLOB OP_SRC print_summary.cc comm.cc) add_library(deepmd_op_pt MODULE ${OP_SRC}) # link: libdeepmd libtorch @@ -14,7 +14,6 @@ if(MPI_FOUND) target_link_libraries(deepmd_op_pt PRIVATE MPI::MPI_CXX) target_compile_definitions(deepmd_op_pt PRIVATE USE_MPI) endif() - if(CMAKE_TESTING_ENABLED) target_link_libraries(deepmd_op_pt PRIVATE coverage_config) endif() diff --git a/source/op/pt/comm.cc b/source/op/pt/comm.cc new file mode 100644 index 0000000000..11047ad1d6 --- /dev/null +++ b/source/op/pt/comm.cc @@ -0,0 +1,362 @@ +// SPDX-License-Identifier: LGPL-3.0-or-later +#if defined(GOOGLE_CUDA) || defined(TENSORFLOW_USE_ROCM) +#include "device.h" +#endif +#include +#ifdef USE_MPI +#include +#ifdef OMPI_MPI_H +#include +#endif +template +static MPI_Datatype get_mpi_type(); + +template <> +MPI_Datatype get_mpi_type() { + return MPI_FLOAT; +} + +template <> +MPI_Datatype get_mpi_type() { + return MPI_DOUBLE; +} +#endif +class Border : public torch::autograd::Function { + public: + static torch::autograd::variable_list forward( + torch::autograd::AutogradContext* ctx, + const torch::Tensor& sendlist_tensor, + const torch::Tensor& sendproc_tensor, + const torch::Tensor& recvproc_tensor, + const torch::Tensor& sendnum_tensor, + const torch::Tensor& recvnum_tensor, + const torch::Tensor& g1, + const torch::Tensor& communicator_tensor, + const torch::Tensor& nlocal_tensor, + const torch::Tensor& nghost_tensor) { + bool type_flag = (g1.dtype() == torch::kDouble) ? true : false; + if (type_flag) { + return forward_t(ctx, sendlist_tensor, sendproc_tensor, + recvproc_tensor, sendnum_tensor, recvnum_tensor, + g1, communicator_tensor, nlocal_tensor, + nghost_tensor); + } else { + return forward_t(ctx, sendlist_tensor, sendproc_tensor, + recvproc_tensor, sendnum_tensor, recvnum_tensor, + g1, communicator_tensor, nlocal_tensor, + nghost_tensor); + } + } + template + static torch::autograd::variable_list forward_t( + torch::autograd::AutogradContext* ctx, + const torch::Tensor& sendlist_tensor, + const torch::Tensor& sendproc_tensor, + const torch::Tensor& recvproc_tensor, + const torch::Tensor& sendnum_tensor, + const torch::Tensor& recvnum_tensor, + const torch::Tensor& g1, + const torch::Tensor& communicator_tensor, + const torch::Tensor& nlocal_tensor, + const torch::Tensor& nghost_tensor) { + ctx->save_for_backward({sendlist_tensor, sendproc_tensor, recvproc_tensor, + sendnum_tensor, recvnum_tensor, communicator_tensor, + nlocal_tensor, nghost_tensor}); + int** sendlist = reinterpret_cast(sendlist_tensor.data_ptr()); + int* sendproc = sendproc_tensor.data_ptr(); + int* recvproc = recvproc_tensor.data_ptr(); + int* sendnum = sendnum_tensor.data_ptr(); + int* recvnum = recvnum_tensor.data_ptr(); + int tensor_size = g1.size(1); + int nswap = sendproc_tensor.size(0); + + int nlocal = nlocal_tensor.item(); + int nghost = nghost_tensor.item(); + int ntotal = nlocal + nghost; + torch::Tensor recv_g1_tensor = g1; + +#ifdef USE_MPI + int mpi_init = 0; + MPI_Initialized(&mpi_init); + int cuda_aware = 1; + int me; + MPI_Comm world; + int world_size = 0; + unpack_communicator(communicator_tensor, world); + MPI_Comm_rank(world, &me); + MPI_Comm_size(world, &world_size); + MPI_Datatype mpi_type = get_mpi_type(); + MPI_Request request; +#if defined(GOOGLE_CUDA) || defined(TENSORFLOW_USE_ROCM) + if (world_size != 1) { + int version, subversion; + MPI_Get_version(&version, &subversion); + if (version >= 4) { + cuda_aware = MPIX_Query_cuda_support(); + } else { + cuda_aware = 0; + } + if (cuda_aware == 0) { + recv_g1_tensor = torch::empty_like(g1).to(torch::kCPU); + recv_g1_tensor.copy_(g1); + } + } +#endif +#endif + FPTYPE* recv_g1 = recv_g1_tensor.data_ptr() + nlocal * tensor_size; + auto int32_options = torch::TensorOptions().dtype(torch::kInt32); + for (int iswap = 0; iswap < nswap; ++iswap) { + int nrecv = recvnum[iswap]; + int nsend = sendnum[iswap]; + torch::Tensor isendlist = + torch::from_blob(sendlist[iswap], {nsend}, int32_options) + .to(recv_g1_tensor.device()); + torch::Tensor send_g1_tensor = recv_g1_tensor.index_select(0, isendlist); + FPTYPE* send_g1 = send_g1_tensor.data_ptr(); +#ifdef USE_MPI + if (sendproc[iswap] != me) { + if (nrecv) { + MPI_Irecv(recv_g1, nrecv * tensor_size, mpi_type, recvproc[iswap], 0, + world, &request); + } + if (nsend) { + MPI_Send(send_g1, nsend * tensor_size, mpi_type, sendproc[iswap], 0, + world); + } + if (nrecv) { + MPI_Wait(&request, MPI_STATUS_IGNORE); + } + } else { +#endif +#if defined(GOOGLE_CUDA) || defined(TENSORFLOW_USE_ROCM) +#ifdef USE_MPI + if (cuda_aware == 0) { + memcpy(recv_g1, send_g1, + (unsigned long)nsend * tensor_size * sizeof(FPTYPE)); + } else { + gpuMemcpy(recv_g1, send_g1, + (unsigned long)nsend * tensor_size * sizeof(FPTYPE), + gpuMemcpyDeviceToDevice); + } +#else + gpuMemcpy(recv_g1, send_g1, + (unsigned long)nsend * tensor_size * sizeof(FPTYPE), + gpuMemcpyDeviceToDevice); +#endif +#else + memcpy(recv_g1, send_g1, + (unsigned long)nsend * tensor_size * sizeof(FPTYPE)); +#endif +#ifdef USE_MPI + } +#endif + recv_g1 += nrecv * tensor_size; + } +#ifdef USE_MPI +#if defined(GOOGLE_CUDA) || defined(TENSORFLOW_USE_ROCM) + if (cuda_aware == 0) { + g1.copy_(recv_g1_tensor); + } +#endif +#endif + return {g1}; + } + static torch::autograd::variable_list backward( + torch::autograd::AutogradContext* ctx, + torch::autograd::variable_list grad_output) { + bool type_flag = (grad_output[0].dtype() == torch::kDouble) ? true : false; + if (type_flag) { + return backward_t(ctx, grad_output); + } else { + return backward_t(ctx, grad_output); + } + } + template + static torch::autograd::variable_list backward_t( + torch::autograd::AutogradContext* ctx, + torch::autograd::variable_list grad_output) { +#if defined(GOOGLE_CUDA) || defined(TENSORFLOW_USE_ROCM) + gpuDeviceSynchronize(); +#endif + + torch::autograd::variable_list saved_variables = ctx->get_saved_variables(); + torch::Tensor sendlist_tensor = saved_variables[0]; + torch::Tensor sendproc_tensor = saved_variables[1]; + torch::Tensor recvproc_tensor = saved_variables[2]; + torch::Tensor sendnum_tensor = saved_variables[3]; + torch::Tensor recvnum_tensor = saved_variables[4]; + torch::Tensor communicator_tensor = saved_variables[5]; + torch::Tensor nlocal_tensor = saved_variables[6]; + torch::Tensor nghost_tensor = saved_variables[7]; + + torch::Tensor d_local_g1_tensor = grad_output[0]; +#ifdef USE_MPI + int mpi_init = 0; + MPI_Initialized(&mpi_init); + int world_size = 0; + int cuda_aware = 1; + MPI_Comm world; + unpack_communicator(communicator_tensor, world); + int me; + MPI_Comm_rank(world, &me); + MPI_Comm_size(world, &world_size); + MPI_Datatype mpi_type = get_mpi_type(); + MPI_Request request; +#if defined(GOOGLE_CUDA) || defined(TENSORFLOW_USE_ROCM) + if (world_size != 1) { + int version, subversion; + MPI_Get_version(&version, &subversion); + if (version >= 4) { + cuda_aware = MPIX_Query_cuda_support(); + } else { + cuda_aware = 0; + } + if (cuda_aware == 0) { + d_local_g1_tensor = torch::empty_like(grad_output[0]).to(torch::kCPU); + d_local_g1_tensor.copy_(grad_output[0]); + } + } +#endif +#endif + int** recvlist = reinterpret_cast(sendlist_tensor.data_ptr()); + // swap send and recv here + int* recvproc = sendproc_tensor.data_ptr(); + int* sendproc = recvproc_tensor.data_ptr(); + int* recvnum = sendnum_tensor.data_ptr(); + int* sendnum = recvnum_tensor.data_ptr(); + + FPTYPE* local_g1 = d_local_g1_tensor.data_ptr(); + int tensor_size = d_local_g1_tensor.size(1); + int nswap = sendproc_tensor.size(0); + + int nlocal = nlocal_tensor.item(); + int nghost = nghost_tensor.item(); + int ntotal = nlocal + nghost; + + torch::Tensor send_g1_tensor = d_local_g1_tensor; + + int max_recvnum = sendnum_tensor.max().item(); + auto options = torch::TensorOptions() + .dtype(d_local_g1_tensor.dtype()) + .device(d_local_g1_tensor.device()); + torch::Tensor recv_g1_tensor = + torch::empty({max_recvnum, tensor_size}, options); + FPTYPE* recv_g1 = recv_g1_tensor.data_ptr(); + FPTYPE* send_g1 = send_g1_tensor.data_ptr() + ntotal * tensor_size; + + int end = ntotal; + auto int32_options = torch::TensorOptions().dtype(torch::kInt32); + for (int iswap = nswap - 1; iswap >= 0; --iswap) { + int nrecv = recvnum[iswap]; + int nsend = sendnum[iswap]; + + torch::Tensor irecvlist; + if (nrecv) { + irecvlist = torch::from_blob(recvlist[iswap], {nrecv}, int32_options) + .to(d_local_g1_tensor.device()); + } + if (nsend) { + send_g1 -= nsend * tensor_size; + } +#ifdef USE_MPI + if (sendproc[iswap] != me) { + if (nrecv) { + MPI_Irecv(recv_g1, nrecv * tensor_size, mpi_type, recvproc[iswap], 0, + world, &request); + } + if (nsend) { + MPI_Send(send_g1, nsend * tensor_size, mpi_type, sendproc[iswap], 0, + world); + } + if (nrecv) { + MPI_Wait(&request, MPI_STATUS_IGNORE); + } + } else { +#endif + if (nrecv) { +#if defined(GOOGLE_CUDA) || defined(TENSORFLOW_USE_ROCM) +#ifdef USE_MPI + if (cuda_aware == 0) { + memcpy(recv_g1, send_g1, + (unsigned long)nrecv * tensor_size * sizeof(FPTYPE)); + } else { + gpuMemcpy(recv_g1, send_g1, + (unsigned long)nrecv * tensor_size * sizeof(FPTYPE), + gpuMemcpyDeviceToDevice); + } +#else + gpuMemcpy(recv_g1, send_g1, + (unsigned long)nrecv * tensor_size * sizeof(FPTYPE), + gpuMemcpyDeviceToDevice); +#endif +#else + memcpy(recv_g1, send_g1, + (unsigned long)nrecv * tensor_size * sizeof(FPTYPE)); +#endif + } +#ifdef USE_MPI + } +#endif + if (nrecv) { + d_local_g1_tensor.index_add_(0, irecvlist, + recv_g1_tensor.slice(0, 0, nrecv)); + } + } +#if defined(GOOGLE_CUDA) || defined(TENSORFLOW_USE_ROCM) + gpuDeviceSynchronize(); +#endif +#ifdef USE_MPI +#if defined(GOOGLE_CUDA) || defined(TENSORFLOW_USE_ROCM) + if (cuda_aware == 0) { + grad_output[0].copy_(d_local_g1_tensor); + } +#endif +#endif + + return {torch::Tensor(), torch::Tensor(), torch::Tensor(), torch::Tensor(), + torch::Tensor(), grad_output[0], torch::Tensor(), torch::Tensor(), + torch::Tensor(), torch::Tensor()}; + } +#ifdef USE_MPI + static void unpack_communicator(const torch::Tensor& communicator_tensor, + MPI_Comm& mpi_comm) { +#ifdef OMPI_MPI_H + long int* communicator = communicator_tensor.data_ptr(); +#else + long int* ptr = communicator_tensor.data_ptr(); + int* communicator = reinterpret_cast(ptr); +#endif + mpi_comm = reinterpret_cast(*communicator); + } +#endif +}; +std::vector border_op(const torch::Tensor& sendlist_tensor, + const torch::Tensor& sendproc_tensor, + const torch::Tensor& recvproc_tensor, + const torch::Tensor& sendnum_tensor, + const torch::Tensor& recvnum_tensor, + const torch::Tensor& g1_tensor, + const torch::Tensor& communicator_tensor, + const torch::Tensor& nlocal_tensor, + const torch::Tensor& nghost_tensor) + +/** + * @brief communicate the latest g1 info to other lmp proc + * @param[out] recv_g1_tensor g1 after communication + * @param[in] sendlist_tensor list of atoms to send in each swap + * @param[in] sendproc_tensor proc to send to at each swap + * @param[in] recvproc_tensor proc to recv from at each swap + * @param[in] sendnum_tensor # of atoms to send in each swap + * @param[in] recvnum_tensor # of atoms to recv in each swap + * @param[in] g1_tensor tensor to store g1 info + * @param[in] communicator_tensor MPI_comm data in lmp + * @param[in] nlocal_tensor # of local atoms + * @param[in] nghost_tensor # of nghost atoms + **/ +{ + return Border::apply(sendlist_tensor, sendproc_tensor, recvproc_tensor, + sendnum_tensor, recvnum_tensor, g1_tensor, + communicator_tensor, nlocal_tensor, nghost_tensor); +} + +TORCH_LIBRARY_FRAGMENT(deepmd, m) { m.def("border_op", border_op); } diff --git a/source/tests/infer/deeppot_dpa.pth b/source/tests/infer/deeppot_dpa.pth new file mode 100644 index 0000000000000000000000000000000000000000..d54a1c17790cf25f9cdf16c6adde80f19ba77e91 GIT binary patch literal 294005 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