castep_param_io/param/general/data_distribution.rs
1
2use castep_param_derive::KeywordDisplay;
3use serde::{Deserialize, Serialize};
4
5#[derive(
6 Debug,
7 Default,
8 Clone,
9 Copy,
10 Hash,
11 Serialize,
12 Deserialize,
13 PartialEq,
14 Eq,
15 PartialOrd,
16 Ord,
17 KeywordDisplay,
18)]
19/// This keyword determines the parallelization strategy used. Available options are:
20/// `Kpoint` - only k-point parallelization will be used (best scalability)
21/// `Gvector` - only g-vector parallelization will be used (worst scalability)
22/// `Mixed` - a combination of k-point and g-vector parallelization will be used
23/// `Default` - the optimal parallelization strategy for the architecture will be used
24/// The Default setting is appropriate in most situations.
25/// The Kpoint option is available only when the number of processors is a factor of the number of k-points.
26/// The Gvector option is appropriate for calculations involving large systems where often only one k-point is used.
27/// The Mixed option is available when the number of processors and the number of k-points have a common factor (for example 6 k-points and 4 processors).
28/// The differences in the scaling properties of the different schemes dictate the number of processors that should be used. For example, a calculation that uses 16 k-points is likely to finish faster on 4 processors (using Kpoint distribution) than on 6 processors (using Mixed distribution) and most likely faster than on 9 processors (using Gvector distribution).
29/// # Default
30/// `Default`
31/// # Example
32/// `DATA_DISTRIBUTION : Gvector`
33#[keyword_display(field = "DATA_DISTRIBUTION")]
34pub enum DataDistribution {
35 Kpoint,
36 Gvector,
37 Mixed,
38 #[default]
39 Default,
40}