From Wisdom90@21:1/5 to Bonita Montero on comp.programming. on Mon Jan 27 12:19:48 2020
[continued from previous message]
needs to be at least 1000 iterations. When in doubt, do the following experiment:
1- Set the grainsize parameter higher than necessary. The grainsize is specified in units of loop iterations.
If you have no idea of how many clock cycles an iteration might take,
start with grainsize=100,000.
The rationale is that each iteration normally requires at least one
clock per iteration. In most cases, step 3 will guide you to a much
2- Run your algorithm.
3- Iteratively halve the grainsize parameter and see how much the
algorithm slows down or speeds up as the value decreases.
A drawback of setting a grainsize too high is that it can reduce
parallelism. For example, if the grainsize is 1000 and the loop has 2000 iterations, the ParallelFor() method distributes the loop across only
two processors, even if more are available.
And you can pass a parameter in Ptr as pointer to ParallelFor(), and you
can set pmode parameter of to pmBlocking so that ParallelFor() is
blocking or to pmNonBlocking so that ParallelFor() is non-blocking, and
the Priority parameter is the priority of ParallelFor(). Look inside the test.pas example to see how to use it.