parquet_set_random_parallel_min_elements Interface

public interface parquet_set_random_parallel_min_elements

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.


Module Procedures

private subroutine parquet_set_random_parallel_min_elements_int32(n)

int32 form of parquet_set_random_parallel_min_elements_int64 -- see it for what it means.

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: n

elements per thread, or 0 to disable; must be >= 0.

private subroutine parquet_set_random_parallel_min_elements_int64(n)

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.

Arguments

Type IntentOptional Attributes Name
integer(kind=int64), intent(in) :: n

elements per thread, or 0 to disable; must be >= 0.