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

New TBB Book: "Practical Parallel Algorithms in C++ and C#: Part 1: Sorting on Multicore CPUs"


A practical guide for C++ programmers to learn Threading Building Blocks. This book shows how to structure serial algorithms for easy transition to parallel for multicore processors. All code is provided in two github repositories as open-source with examples for Windows and Linux.

It examines several parallelization patterns, such as divide-and-conquer, parallel_for, and explicit task creation. The focus is on sorting algorithms, as an example for how to parallelize well known algorithms in a scalable way to harness multicore compute power of a processor.

See the Description and the Table of Contents along with the first 10% of the book by clicking on the image of the book cover.

What You'll Learn

  • See working single-core algorithms transformed into high-performance parallel versions
  • Algorithms such as merge, sum, histogram, merge sort, radix sort, linear-time in-place sort
  • Explore multiple ways to parallelize, such as “parallel algorithms” and “algorithms in parallel”
  • See how adaptive algorithms improve performance order
  • Develop hybrid algorithm combinations to gain performance
  • Implement linear-time parallel sort hybrids
  • See how linear-time radix sort can be made useful
  • How to create parallel algorithms that scale and “perform no worse”
  • Unique parallel-only issues
  • Efficient parallel computing or just fastest
  • Order of parallel sorting algorithms and their constants
  • How better sharing of resources increases parallel performance
  • An issue with standard C++ adaptive algorithms and how to improve adaptivity
  • Safer arithmetic

Who This Book Is For
C++ developers looking to raise performance and efficiency of applications to the next level by utilizing all cores within multicore CPUs of laptops, desktops, and cloud nodes. Undergraduate and graduate computer science and computer engineering classes looking to expose students to parallel programming on processors. Algorithm developers and researchers interested in parallelization techniques and performance optimization.

0 Kudos
0 Replies