Key Steps to Success
Our experience using Threading Building Blocks has helped us create a simple fivestep program to success that has been working well for us at Intel:
Think Parallel. Understand where parallelism is and how you want to express it in terms of tasks.
Design using relaxed sequential execution (see the next section). Do not introduce anything in your code that will not allow single-thread execution.
When possible, use:
Debug:
Debug the single-thread version first (enabled by step 1). Do this by giving
tbb::task_scheduler_init
a parameter value of1
.After that, try two threads, then four threads, and so on. It doesn’t hurt to test with many more threads in case there are races lurking that might be hidden by unfair scheduling on a few processors.
Use the Intel Thread Checker to check for race conditions, even if the program is working.
Look for tuning opportunities using the Intel Thread Profiler, which can give you insight into stalls induced by synchronization.
Get Intel Threading Building Blocks now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.