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:

  1. Think Parallel. Understand where parallelism is and how you want to express it in terms of tasks.

  2. Design using relaxed sequential execution (see the next section). Do not introduce anything in your code that will not allow single-thread execution.

  3. When possible, use:

    1. The algorithm templates (Chapter 3 and Chapter 4) instead of raw tasks

    2. The algorithm templates instead of locking

    3. A scalable memory allocator (not malloc or the default new functions)

  4. Debug:

    1. Debug the single-thread version first (enabled by step 1). Do this by giving tbb::task_scheduler_init a parameter value of 1.

    2. 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.

    3. Use the Intel Thread Checker to check for race conditions, even if the program is working.

  5. 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.