A quick glance at Array Building Blocks

Attending my first Intel Developer's Forum, I got a chance to attend a session called the "Intel Faces of Parallelism Lab," which featured Cilk+ (convenient threads added to C++), TBB, and the current beta version of Array Building Blocks (ArBB).  ArBB is a C++ library geared towards data parallelism in the same sense that TBB is geared toward task parallelism, with reusable features that take care of scalable parallelism without having to program all the details yourself.

The ArBB environment manages its own data types, which are either scalars (such as the arbb::f32) or arrays (such as arbb::dense<arbb::f32>) of various dimensions.  Code for ArBB is just-in-time compiled right before runtime execution, to take advantage of whatever vector and/or multicore capability a system may have, automatically and conveniently.

ArBB is designed to make it simpler to program for data-parallel problems. I know that TBB has been a great success in the parallel programming community, and I use it in teaching my undergraduates.  I hope to start trying  ArBB in the classroom and with my research students, too -- seems like a model worth exposing them to, apparently foreshadowing the kinds of tools we'll have available in the future.

For more complete information about compiler optimizations, see our Optimization Notice.