compute

A C++ GPU Computing Library for OpenCL

Github星跟蹤圖

Boost.Compute

Build Status
Build status
Coverage Status
Gitter

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 (kyle.r.lutz@gmail.com) for more information.

主要指標

概覽
名稱與所有者boostorg/compute
主編程語言C++
編程語言C++ (語言數: 6)
平台
許可證Boost Software License 1.0
所有者活动
創建於2013-03-02 20:15:58
推送於2025-05-02 16:06:35
最后一次提交2024-08-22 10:16:15
發布數56
最新版本名稱boost-1.88.0 (發布於 )
第一版名稱v0.1 (發布於 2014-03-16 15:47:53)
用户参与
星數1.6k
關注者數110
派生數337
提交數1.4k
已啟用問題?
問題數370
打開的問題數130
拉請求數394
打開的拉請求數26
關閉的拉請求數102
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?