Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.

Knowing the smallest grainsize used before execution

azmodai
Beginner
522 Views
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,


0 Kudos
4 Replies
RafSchietekat
Valued Contributor III
522 Views
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.
0 Kudos
azmodai
Beginner
522 Views
Ok thanks ! that's exactly what I wanted to know.
0 Kudos
RafSchietekat
Valued Contributor III
522 Views
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.
0 Kudos
Not applicable
522 Views
 
0 Kudos
Reply