NPAR: Difference between revisions

From VASP Wiki
No edit summary
No edit summary
 
(13 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{TAGDEF|NPAR|[integer]|number of cores}}
{{TAGDEF|NPAR|[integer]|available ranks}}
 
Description: {{TAG|NPAR}} determines the number of bands that are treated in parallel.


Description: {{TAG|NPAR}} determines the number of bands that are treated in parallel. This is a legacy tag; use {{TAG|NCORE}} instead.
----
----
VASP currently offers parallelisation (and data distribution) over bands, parallelization (and data distribution) over plane wave coefficients, and as of VASP.5.3.2, parallelization over '''k'''-points (no data distribution, see {{TAG|KPAR}}).
{{NB|warning|{{TAG|NCORE}} is the recommended tag for controlling band-level parallelization and has been available since VASP.5.2.13. It is more intuitive and directly expresses the size of each band group. Only use {{TAG|NPAR}} if you have a specific reason to prefer it. If both {{TAG|NPAR}} and {{TAG|NCORE}} are specified in the {{FILE|INCAR}} file, {{TAG|NPAR}} takes precedence.}}
To obtain high efficiency on massively parallel systems or modern multi-core machines, it is strongly recommended to use all at the same time. Most algorithms work with any data distribution (except for the single band conjugated gradient, which is considered to be obsolete).


{{TAG|NPAR}} determines how many bands are treated in parallel. The current default is {{TAG|NPAR}}=''# of cores'', meaning that one orbital is treated by one core. {{TAG|NCORE}} is then set to 1. If {{TAG|NPAR}}=1, {{TAG|NCORE}} is set to the number of cores. This implies data distribution over plane wave coefficients only: all cores will work together on every individual band, i.e., the plane wave coefficients of each band are distributed over all cores. This is usually very slow and should be avoided.
== Relationship to NCORE ==


{{TAG|NPAR}}=''# of cores'' is the optimal setting for platforms with a small communication bandwidth and is a good choice for up to 8 cores, as well as for machines with a single core per node and a Gigabit network. However, this mode substantially increases the memory requirements, because the non-local projector functions must be stored entirely on each core. In addition, substantial all-to-all communications are required to orthogonalize the bands. On massively parallel systems and modern multi-core machines we strongly urge to set
VASP distributes the available MPI ranks into band groups that each work on one band, parallelizing the [[Energy_cutoff_and_FFT_meshes#FFT_mesh|FFTs]] for that band. For the common case that {{TAG|IMAGES|1}} and no other algorithm-dependent parallelization (e.g., {{TAG|NOMEGAPAR}}) is active::


:<math>\textrm{NPAR}\approx\sqrt{\textrm{\#of}\; \textrm{cores}}</math>
:<math>\text{available ranks} = \frac{\text{total MPI ranks}}{\text{KPAR}}</math>


or
{{TAG|NPAR}} sets the number of band groups; {{TAG|NCORE}} sets the size of each band group. They are strict inverses:


:<math>\textrm{NCORE}=\textrm{\#of}\;\textrm{cores}\;\textrm{per}\;\textrm{compute}\;\textrm{node}</math>
:<math>\text{NPAR} \times \text{NCORE} = \text{available ranks}</math>


The default ({{TAG|NPAR}} = available ranks) is equivalent to {{TAG|NCORE|1}}: each band is handled by a single rank.
{{NB|warning|Setting {{TAG|NPAR|1}} means all available ranks collaborate on a single band (plane-wave coefficient distribution only). No band parallelization occurs. This is almost always very slow and should be avoided.}}
{{NB|tip|See the [[optimizing the parallelization]] page for a step-by-step guide to finding the best parallelization setup for your system, and {{TAG|NCORE}} for information on how to parallelize over [[Energy_cutoff_and_FFT_meshes#FFT_mesh|FFTs]] in particular.}}


In selected cases, we found that this improves the performance by a factor of up to four compared to the default, and it also significantly improves the stability of the code due to reduced memory requirements.
== Related tags and articles ==
{{TAG|NCORE}},
{{TAG|KPAR}},
{{TAG|LPLANE}},
{{TAG|LSCALU}},
{{TAG|NSIM}},
{{TAG|LSCALAPACK}},
{{TAG|LSCAAWARE}}


{{TAG|NCORE}} is available from VASP.5.2.13 on, and is more handy than the previous parameter {{TAG|NPAR}}.
[[GPU ports of VASP]],
The user should either specify {{TAG|NCORE}} or {{TAG|NPAR}}, where {{TAG|NPAR}} takes a higher preference.
[[Combining MPI and OpenMP]],
The relation between both parameters is


:<math>\textrm{NCORE}=\textrm{\#of}\; \textrm{cores}/\textrm{NPAR}</math>
[[Optimizing the parallelization]],
[[Parallelization]],
[[Energy cutoff and FFT meshes]]


== Related Tags and Sections ==
{{sc|NPAR|HowTo|Workflows that use this tag}}
{{TAG|NCORE}},
{{TAG|LPLANE}},
{{TAG|KPAR}}


----
[[Category:INCAR tag]][[Category:Performance]][[Category:Parallelization]]
[[The_VASP_Manual|Contents]]

Latest revision as of 09:35, 18 March 2026

NPAR = [integer]
Default: NPAR = available ranks 

Description: NPAR determines the number of bands that are treated in parallel. This is a legacy tag; use NCORE instead.


Warning: NCORE is the recommended tag for controlling band-level parallelization and has been available since VASP.5.2.13. It is more intuitive and directly expresses the size of each band group. Only use NPAR if you have a specific reason to prefer it. If both NPAR and NCORE are specified in the INCAR file, NPAR takes precedence.

Relationship to NCORE

VASP distributes the available MPI ranks into band groups that each work on one band, parallelizing the FFTs for that band. For the common case that IMAGES = 1 and no other algorithm-dependent parallelization (e.g., NOMEGAPAR) is active::

[math]\displaystyle{ \text{available ranks} = \frac{\text{total MPI ranks}}{\text{KPAR}} }[/math]

NPAR sets the number of band groups; NCORE sets the size of each band group. They are strict inverses:

[math]\displaystyle{ \text{NPAR} \times \text{NCORE} = \text{available ranks} }[/math]

The default (NPAR = available ranks) is equivalent to NCORE = 1: each band is handled by a single rank.

Warning: Setting NPAR = 1 means all available ranks collaborate on a single band (plane-wave coefficient distribution only). No band parallelization occurs. This is almost always very slow and should be avoided.
Tip: See the optimizing the parallelization page for a step-by-step guide to finding the best parallelization setup for your system, and NCORE for information on how to parallelize over FFTs in particular.

Related tags and articles

NCORE, KPAR, LPLANE, LSCALU, NSIM, LSCALAPACK, LSCAAWARE

GPU ports of VASP, Combining MPI and OpenMP,

Optimizing the parallelization, Parallelization, Energy cutoff and FFT meshes

Workflows that use this tag