Community
cancel
Showing results for 
Search instead for 
Did you mean: 
irisshinra308
Beginner
179 Views

Task affinity example?

Jump to solution
I am new to Intel TBB, and I am trying to add some new features on it.
However, I do not quite understand how to use the note_affinity and set_affinity methods?
I am wondering if there are some example codes with these methods?

Any help would be grateful.
Thanks for reading.

0 Kudos
1 Solution
Andrey_Marochko
New Contributor III
179 Views
Actually note_affinity and set_affinity are part of the low-level TBB tasking support. Our general recommendation is to start your TBB work with learning TBB algorithms (like tbb::parallel_for, tbb::parallel_reduce, tbb::pipeline and so on). These algorithms are easy to use and cover the vast majority of parallelization scenarios, so that only in the most non-trivial cases you may need to resort to manual building task hierarchies.

As long as tbb::parallel_for or tbb::parallel_reduce suit your purposes you can use tbb::affinity_partitioner with them. This partitioner internally uses tbb::task::note_affinity and tbb::task::set_affinity methods to take advantage of cache locality.

You can find more iformation about affinity partitioner in the "Bandwidth and Cache Affinity" article in the TBB Tutorial, and examples of code using it in GettingStarted/substring_finder and parallel_for/seismic (the standard TBB examples).

View solution in original post

2 Replies
Andrey_Marochko
New Contributor III
180 Views
Actually note_affinity and set_affinity are part of the low-level TBB tasking support. Our general recommendation is to start your TBB work with learning TBB algorithms (like tbb::parallel_for, tbb::parallel_reduce, tbb::pipeline and so on). These algorithms are easy to use and cover the vast majority of parallelization scenarios, so that only in the most non-trivial cases you may need to resort to manual building task hierarchies.

As long as tbb::parallel_for or tbb::parallel_reduce suit your purposes you can use tbb::affinity_partitioner with them. This partitioner internally uses tbb::task::note_affinity and tbb::task::set_affinity methods to take advantage of cache locality.

You can find more iformation about affinity partitioner in the "Bandwidth and Cache Affinity" article in the TBB Tutorial, and examples of code using it in GettingStarted/substring_finder and parallel_for/seismic (the standard TBB examples).

View solution in original post

Dmitry_Vyukov
Valued Contributor I
179 Views
I am curious as to what you are trying to implement with note_affinity()/set_affinity(). Please provide some brief description (if it's not a trade secret of course).

Reply