tbb

Overlapping I/O and processing in a TBB pipeline, final(ly)

A need for balance


Oops.  Things got hectic recently: no time to muse on past work.  A shame, since I left this series at its penultimate issue.  If you can remember back two months to my last post (or need to start at the beginning), we left the pipeline purring on four cores, but only three-quarters of the time:

Retooling Exceptions for Parallelism

Exception handling is one of the big improvements of C++ over C. C code that checks for erroneous or unusual conditions is littered with tests for those conditions, making programs harder to read. Worse yet, the programmer might forget to check one of those conditions. Exceptions eliminated most of those problems, albeit opened up the new issue of exception safety.

Unfortunately, exceptions as practiced in C++ tend to force sequential execution of code. Consider:
    float a[N];
float b[N];
...
for( int i=0; i<N; ++i )

Developer Contest: Win a Mac Book Pro in the Intel Threading Challenge

A little birdie brought me word of a new developer contest here on Intel Software Network - The Intel Threading Challenge!
Do you love a good puzzle? Here's your chance to show off your threading skills. Our experts have come up with problem sets on topics from a sudoku puzzle to dorm room assignments. Take the Intel® Threading Challenge for a chance to take home an Apple MacBook Pro*.

Cache affinity support for TBB - low level task interface

Last week I showed how cache affinity support might be supported by the high-level algorithm templates. Here's what the low-level task interface might look like. There would be a new subclass of class task for tasks with affinity, called task_with_affinity.  As much as I would prefer to avoid subclassing here, we have to because introducing new virtual methods into class task would break binary compatibility of task's vtable.  Such is the price of graceful evolution.

The subclass adds a simple interface:

Hierarchically Tiled Arrays and Threading Building Blocks

A Hierarchically Tiled Array (HTA) "is a class designed to facilitate the writing of programs based on tiles in object-oriented languages. HTAs allow to exploit locality as well as to express parallelism with much less effort than other approaches." This description, from the HTA project's home page, instantly suggests that HTAs might be suitable for parallelization using Threading Building Blocks.

TBB Multithreading of the par2cmdline Utility

I've taken a look at the source code for Vincent Tan's par2cmdline 0.4 with Intel Thread Building Blocks 2.0 project. This project was the grand prize winner in the Coding with TBB Contest that ran from late July through August. Contest entrants had to show how they applied Threading Building Blocks to multithread an application, to improve its performance on multicore computers.

Threading Building Blocks, PThreads, and Gentoo Linux

Tonight I spoke with a new (to me) person who has integrated Threading Building Blocks into an interesting application. This developer originally worked using pthreads, then decided about a month ago to switch to Threading Building Blocks (after his pthreads application only marginally improved performance). He reported (on the #tbb IRC channel) that after a month of development his TBB-threaded application produces a 2-times speed up, versus a fractional speed up after 5 months of development using pthreads.

Pages

Subscribe to tbb