The Aha! Factor
a•ha /ä-'hä/ interjection, Middle English: Depending on manner of utterance, used to express surprise, pleasure, irony, derision, mockery, contempt, or triumph. |
Studying these examples will hopefully have you saying Aha! a few times as the possibilities unfold. Here is a short list of some Aha! moments I have seen through the eyes of others, and on my own:
- Splitting ranges can be complex operations
Splitting a parallel range can be far more interesting than it first seems. You can play with the data in the region represented by the range. Oh, the possibilities! See Example 11-31.
-
Recursion maps to
parallel_for
Recursive functions convert to parallelism using
parallel_for
easily. It is not obvious to useparallel_for
for recursion—at least not until you have this Aha! moment. It makes sense because recursion is about splitting up work, and so isparallel_for
. See the section “Quicksort: Visualizing Task Stealing,” later in this chapter. Sometimes direct use of the task scheduler may seem better; see the section “A Better Matrix Multiply (Strassen),” later in this chapter.- Use implicit synchronization
Implicit synchronization is better than using locks. Develop a mindset to think about using implicit synchronization and avoiding locks. See the section “Advanced Task Programming,” later in this chapter.
- Memory is shared between tasks
It’s all in the shared memory. When discussing pipelines and other algorithms, and being careful to partition access to data, it is possible ...
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.