finesse.utilities.cyomp.determine_nthreads_even¶
- finesse.utilities.cyomp.determine_nthreads_even(int pts, int divisor) int ¶
Determine the number of threads to use for a routine with an outer loop of size pts.
- Parameters
- ptsint
Size of outer loop of routine to be parallelised.
- divisorint
Estimate of scaling for number of threads where the nominal thread count will then be
pts // divisor
.
- Returns
- nthreadsint
Determined thread count. Or 1 if no openmp support available.
Notes
The divisor arg defines the nominal number of threads via
nominal = pts // divisor
. Hence, this argument should correspond to the best-estimate of multi-threaded performance scaling behaviour of the routine to follow.The actual value returned will be either unity or an even number (depending on values of pts and divisor) which is clipped by the maximum number of threads as given by the OpenMP routine
omp_get_max_threads
.If Finesse was compiled without OpenMP support then this always returns 1.