...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The Boost Compute library consists of several different components. The core
layer provides a "thin" C++ wrapper over the OpenCL API. This includes
classes to manage OpenCL objects such as device
's,
kernel
's and command_queue
's.
On top of the core layer is a partial implementation of the C++ standard
library providing common containers (e.g. vector<T>
,
array<T, N>
) along
with common algorithms (e.g. transform()
and sort()
).
The library also provides a number of "fancy" iterators (e.g.
transform_iterator
and permutation_iterator
)
which enhance the functionality of the standard algorithms.
Boost.Compute also supplies a number of facilities for interoperation with other C and C++ libraries. See the section on interoperability for more information.
See the API Overview section for a full list of functions, classes, and macros provided by Boost.Compute.
Boost.Compute uses OpenCL as its interface for executing code on parallel devices such as GPUs and multi-core CPUs.
OpenCL was chosen for a number of reasons: