diff --git a/deepmd/utils/argcheck.py b/deepmd/utils/argcheck.py index 51714ceaf1..684b0eacbc 100644 --- a/deepmd/utils/argcheck.py +++ b/deepmd/utils/argcheck.py @@ -58,7 +58,7 @@ def descrpt_local_frame_args (): def descrpt_se_a_args(): - doc_sel = 'A list of integers. The length of the list should be the same as the number of atom types in the system. `sel[i]` gives the selected number of type-i neighbors. `sel[i]` is recommended to be larger than the maximally possible number of type-i neighbors in the cut-off radius.' + doc_sel = 'A list of integers. The length of the list should be the same as the number of atom types in the system. `sel[i]` gives the selected number of type-i neighbors. `sel[i]` is recommended to be larger than the maximally possible number of type-i neighbors in the cut-off radius. It is noted that the total sel value must be less than 4096 in a GPU environment.' doc_rcut = 'The cut-off radius.' doc_rcut_smth = 'Where to start smoothing. For example the 1/r term is smoothed from `rcut` to `rcut_smth`' doc_neuron = 'Number of neurons in each hidden layers of the embedding net. When two layers are of the same size or one layer is twice as large as the previous layer, a skip connection is built.' @@ -90,7 +90,7 @@ def descrpt_se_a_args(): def descrpt_se_t_args(): - doc_sel = 'A list of integers. The length of the list should be the same as the number of atom types in the system. `sel[i]` gives the selected number of type-i neighbors. `sel[i]` is recommended to be larger than the maximally possible number of type-i neighbors in the cut-off radius.' + doc_sel = 'A list of integers. The length of the list should be the same as the number of atom types in the system. `sel[i]` gives the selected number of type-i neighbors. `sel[i]` is recommended to be larger than the maximally possible number of type-i neighbors in the cut-off radius. It is noted that the total sel value must be less than 4096 in a GPU environment.' doc_rcut = 'The cut-off radius.' doc_rcut_smth = 'Where to start smoothing. For example the 1/r term is smoothed from `rcut` to `rcut_smth`' doc_neuron = 'Number of neurons in each hidden layers of the embedding net. When two layers are of the same size or one layer is twice as large as the previous layer, a skip connection is built.' @@ -129,7 +129,7 @@ def descrpt_se_a_tpe_args(): def descrpt_se_r_args(): - doc_sel = 'A list of integers. The length of the list should be the same as the number of atom types in the system. `sel[i]` gives the selected number of type-i neighbors. `sel[i]` is recommended to be larger than the maximally possible number of type-i neighbors in the cut-off radius.' + doc_sel = 'A list of integers. The length of the list should be the same as the number of atom types in the system. `sel[i]` gives the selected number of type-i neighbors. `sel[i]` is recommended to be larger than the maximally possible number of type-i neighbors in the cut-off radius. It is noted that the total sel value must be less than 4096 in a GPU environment.' doc_rcut = 'The cut-off radius.' doc_rcut_smth = 'Where to start smoothing. For example the 1/r term is smoothed from `rcut` to `rcut_smth`' doc_neuron = 'Number of neurons in each hidden layers of the embedding net. When two layers are of the same size or one layer is twice as large as the previous layer, a skip connection is built.' @@ -348,7 +348,7 @@ def model_compression_type_args(): def model_args (): - doc_type_map = 'A list of strings. Give the name to each type of atoms.' + doc_type_map = 'A list of strings. Give the name to each type of atoms. It is noted that the number of atom type of training system must be less than 128 in a GPU environment.' doc_data_stat_nbatch = 'The model determines the normalization from the statistics of the data. This key specifies the number of `frames` in each `system` used for statistics.' doc_data_stat_protect = 'Protect parameter for atomic energy regression.' doc_type_embedding = "The type embedding." diff --git a/doc/getting-started.md b/doc/getting-started.md index a1134b7fe6..fb6dedacd9 100644 --- a/doc/getting-started.md +++ b/doc/getting-started.md @@ -14,6 +14,7 @@ In this text, we will call the deep neural network that is used to represent the - [Run MD with LAMMPS](#run-md-with-lammps) - [Run path-integral MD with i-PI](#run-path-integral-md-with-i-pi) - [Use deep potential with ASE](#use-deep-potential-with-ase) +8. [Known limitations](#known-limitations) ## Prepare data @@ -368,5 +369,13 @@ dyn = BFGS(water) dyn.run(fmax=1e-6) print(water.get_positions()) ``` + +## Known limitations +If you use deepmd-kit in a GPU environment, the acceptable value range of some variables are additionally restricted compared to the CPU environment due to the software's GPU implementations: +1. The number of atom type of a given system must be less than 128. +2. The maximum distance between an atom and it's neighbors must be less than 128. It can be controlled by setting the rcut value of training parameters. +3. Theoretically, the maximum number of atoms that a single GPU can accept is about 10,000,000. However, this value is actually limited by the GPU memory size currently, usually within 1000,000 atoms even at the model compression mode. +4. The total sel value of training parameters(in model/descriptor section) must be less than 4096. + [DP]:https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.120.143001 [DP-SE]:https://dl.acm.org/doi/10.5555/3327345.3327356