Sets the work floor, in elements per thread, below which a bulk permutation stays serial. See parquet_set_random_parallel_min_elements_int64 for the full description.
int32 form of parquet_set_random_parallel_min_elements_int64 -- see it for what it means.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int32), | intent(in) | :: | n |
elements per thread, or 0 to disable; must be >= 0. |
Sets the fewest elements a thread must be given before a bulk permutation opens a team.
A work floor, not a chunk size. Threading a small permutation is not merely useless but
harmful -- the team costs more than the whole job -- so below threads * this elements the
bulk forms run serially however many threads are available. Machine B measured m = 10 going
from 0.0021 ms on one core to 0.0050 on sixteen, and 1->16 thread efficiency of 99 % at
10**6, 95 % at 10**4, 69 % at 1000 and 18 % at 100; the default of 1000 sits where that
curve turns.
Read per call, so it takes effect immediately. n takes integer(int32) or
integer(int64). 0 disables the floor entirely, which is how a test asks for a team on a
small array; it is not a useful production setting. An explicit threads= does not bypass
the floor -- the floor is about whether the work is worth splitting at all, which is a
property of the array rather than of the caller's intent.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int64), | intent(in) | :: | n |
elements per thread, or 0 to disable; must be >= 0. |