Knowing the smallest grainsize used before execution

Knowing the smallest grainsize used before execution


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 ?


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

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.

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.

Leave a Comment

Please sign in to add a comment. Not a member? Join today