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 nouveau(x)
Dernière contribution
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.

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.

Connectez-vous pour laisser un commentaire.