Knowing the smallest grainsize used before execution

Knowing the smallest grainsize used before execution

Hello,

I would like to know if it exists a way to get (or guess) what will be the grainsize that TBB will use (not the one we give to it and expect it will use).

Indeed, I need to allocate a certain number of data in function of the smallest grainsize used. So far I thought the smallest grainsize used was the one I give to TBB, but I tried some configurations and I found out that the smallest grainsize can be smaller than the grainsize we give to TBB, in certain circumstances.

Is there a "trick" or a simple way to know/guess what will be the smallest grainsize TBB will use in function of the given grainsize BEFORE running the parallel code, i.e typically after the init ? In other words : how TBB chose the grainsize ?

Thanks,

5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Raf Schietekat's picture

Grainsize is the largest (sub)range size that TBB will not subdivide, so, given large-enough input range size, chunk size will not be smaller than about grainsize/2. Please don't use the word grainsize to mean chunk size.

Ok thanks ! that's exactly what I wanted to know.

Raf Schietekat's picture

Hopefully you'll use this information wisely. Check with yourself that you wouldn't, e.g., manipulate grainsize to achieve a particular number of chunks as a function of hardware parallelism.

Login to leave a comment.