3.8. Parallelization¶
-
class
ParallelLevels
(optimizations: int = 1, parametervectors: int = None, jobs: int = None, processes: int = 1, threads: int = 1)¶ Specification of how to use parallelism at the different levels involved in a ParAMS optimization.
Note that the parallel levels are layered in the order of the arguments to this method, e.g. setting parametervectors=2 and jobs=4 would result in two parameter vectors tried in parallel, with the
JobCollection
for each one being run with 4 jobs in parallel, resulting in a total of 8 jobs running concurrently. Overall this means that for fully using a machine the product of the parallelism at all levels should equal the number of (physical) CPU cores of that machine. It is generally more efficient to parallelize at a higher level, especially when parameterizing a very fast engine like ReaxFF.All parameters of this method are optional. Parameters not specified will be assigned a sensible default value resulting in the use of the entire machine.
Parameters: - optimizations: optional, int
How many independent optimizations to run in parallel. This is a placeholder for the future. ParAMS currently does not support optimization level parallelism yet.
- parametervectors: optional, int
How many parameter vectors to try in parallel. This level of parallelism can only be used with parallel ref:optimizers <Optimizers>.
- jobs: optional, int
How many jobs from the
JobCollection
to run in parallel.- processes: optional, int
How many processes (MPI ranks) to spawn for each job. This effectively sets the NSCM environment variable for each job.
- threads: optional, int
How many threads to use for each of the processes. This effectively set the OMP_NUM_THREADS environment variable. Note that most AMS engines do not use threads, so the value of this variable would not have any effect. We recommend leaving it at the default value of
1
. Please consult the manual of the engine you are parameterizing.
Attributes: - workers: int
The product of all parameters