Boost.Compute alternatives and similar libraries
Based on the "Concurrency" category.
Alternatively, view Boost.Compute alternatives based on common mentions on social networks and blogs.
-
moodycamel
A fast multi-producer, multi-consumer lock-free concurrent queue for C++11 -
Taskflow
A General-purpose Parallel and Heterogeneous Task Programming System -
readerwriterqueue
A fast single-producer, single-consumer lock-free queue for C++ -
C++ Actor Framework
An Open Source Implementation of the Actor Model in C++ -
ck
Concurrency primitives, safe memory reclamation mechanisms and non-blocking (including lock-free) data structures designed to aid in the research, design and implementation of high performance concurrent systems developed in C99+. -
MPMCQueue.h
A bounded multi-producer multi-consumer concurrent queue written in C++11 -
RaftLib
The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators -
VexCL
VexCL is a C++ vector expression template library for OpenCL/CUDA/OpenMP -
continuable
C++14 asynchronous allocation aware futures (supporting then, exception handling, coroutines and connections) -
SPSCQueue.h
A bounded single-producer single-consumer wait-free and lock-free queue written in C++11 -
A C++14 library for executors
C++ library for executors -
Bolt
Bolt is a C++ template library optimized for GPUs. Bolt provides high-performance library implementations for common algorithms such as scan, reduce, transform, and sort. -
xenium
A C++ library providing various concurrent data structures and reclamation schemes. -
thread-pool
A modern, fast, lightweight thread pool library based on C++20 -
CUB
THIS REPOSITORY HAS MOVED TO github.com/nvidia/cub, WHICH IS AUTOMATICALLY MIRRORED HERE. -
SObjectizer
SObjectizer: it's all about in-process message dispatching! -
Light Actor Framework
Laughably simple yet effective Actor concurrency framework for C++20 -
BlockingCollection
C++11 thread safe, multi-producer, multi-consumer blocking queue, stack & priority queue class -
Libclsph
OpenCL based GPU accelerated SPH fluid simulation library -
Easy Creation of GnuPlot Scripts from C++
A simple C++17 lib that helps you to quickly plot your data with GnuPlot -
eXtended Template Library
eXtended Template Library -
alpaka
The project alpaka has moved to https://github.com/alpaka-group/alpaka -
cupla
The project alpaka has moved to https://github.com/alpaka-group/cupla -
OpenCL
The open standard for parallel programming of heterogeneous systems.
Access the most powerful time series database as a service
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Boost.Compute or a related project?
README
Boost.Compute
Boost.Compute is a GPU/parallel-computing library for C++ based on OpenCL.
The core library is a thin C++ wrapper over the OpenCL API and provides access to compute devices, contexts, command queues and memory buffers.
On top of the core library is a generic, STL-like interface providing common
algorithms (e.g. transform()
, accumulate()
, sort()
) along with common
containers (e.g. vector<T>
, flat_set<T>
). It also features a number of
extensions including parallel-computing algorithms (e.g. exclusive_scan()
,
scatter()
, reduce()
) and a number of fancy iterators (e.g.
transform_iterator<>
, permutation_iterator<>
, zip_iterator<>
).
The full documentation is available at http://boostorg.github.io/compute/.
Example
The following example shows how to sort a vector of floats on the GPU:
#include <vector>
#include <algorithm>
#include <boost/compute.hpp>
namespace compute = boost::compute;
int main()
{
// get the default compute device
compute::device gpu = compute::system::default_device();
// create a compute context and command queue
compute::context ctx(gpu);
compute::command_queue queue(ctx, gpu);
// generate random numbers on the host
std::vector<float> host_vector(1000000);
std::generate(host_vector.begin(), host_vector.end(), rand);
// create vector on the device
compute::vector<float> device_vector(1000000, ctx);
// copy data to the device
compute::copy(
host_vector.begin(), host_vector.end(), device_vector.begin(), queue
);
// sort data on the device
compute::sort(
device_vector.begin(), device_vector.end(), queue
);
// copy data back to the host
compute::copy(
device_vector.begin(), device_vector.end(), host_vector.begin(), queue
);
return 0;
}
Boost.Compute is a header-only library, so no linking is required. The example above can be compiled with:
g++ -I/path/to/compute/include sort.cpp -lOpenCL
More examples can be found in the tutorial and under the examples directory.
Support
Questions about the library (both usage and development) can be posted to the mailing list.
Bugs and feature requests can be reported through the issue tracker.
Also feel free to send me an email with any problems, questions, or feedback.
Help Wanted
The Boost.Compute project is currently looking for additional developers with interest in parallel computing.
Please send an email to Kyle Lutz ([email protected]) for more information.