Intel(R) Array Building Blocks (Intel(R) ArBB) provides an application programming interface (API) for nested data parallel and deterministic task parallel programming.
It is designed specifically to simplify the use of the existing and upcoming throughput-oriented features on Intel multi-core platforms.
Intel(R) ArBB is based on the C++ programming language. To ensure portability, high performance, and safety, Intel(R) ArBB introduces its distinct semantics through a standard C++ API that does not require any extensions to the underlying C++ compiler. In theory, any ISO C++ compatible compiler can compile Intel(R) ArBB programs linked with Intel(R) ArBB run-time libraries. The machine language generated by Intel(R) ArBB is independent of that of the C++ compiler, making the performance of the parallel computations executed through Intel(R) ArBB compiler-independent.
The basic type in Intel(R) ArBB is a generic container called dense
that can represent a multidimensional array with contiguous (densely packed) storage. Other container types include the nested
container type representing segmented arrays. Containers can store elements of any Intel(R) ArBB base numeric type including floating-point numbers and integers. Elements of containers can also be user-defined structures containing any combination of these base types. Containers provide a strongly encapsulated, abstract memory model that can protect data from race conditions. They also provide automatic offloading to remote memory when necessary.
Intel(R) ArBB parallel operations range from simple element-wise operations, such as adding the contents of two containers element-wise, to more complex collective operations, such as reductions and scans. You can also define arbitrary functions over collection elements using the map function. A key feature of the Intel(R) ArBB API is that it defines operations and functions generically and can apply them to containers of different types and shapes. Sequences of operations are automatically fused into compact kernels with high arithmetic intensity, even if the individual operations are small and widely separated in the source code, or specified in call-back or virtual functions. Combined with the ability to parallelize and vectorize fused sequences, this dynamic fusion is a fundamental and unique capability of Intel(R) ArBB that can be used to improve performance in the context of highly modular code.
Copyright © 2010, Intel Corporation. All rights reserved.