Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Tutorial

Boost , Chapter 1. Boost.Compute , Chapter 1. Boost.Compute

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Пример Hello World дает простое приложение, которое печатает имя вычислительного устройства по умолчанию в системе.

Класс<boost::compute::system>обеспечивает доступ к платформам и устройствам OpenCL, присутствующим в хост-системе.

Компьютерные устройства представлены классом<device>.

#include <iostream>
#include <boost/compute/core.hpp>
namespace compute = boost::compute;
int main()
{
    // get the default device
    compute::device device = compute::system::default_device();
    // print the device's name
    std::cout << "hello from " << device.name() << std::endl;
    return 0;
}

Прежде чем произойдет какое-либо вычисление, данные должны быть переданы от хоста к вычислительному устройству. Общая функция<copy()>обеспечивает простой интерфейс для передачи данных, а общий класс<vector<T>>обеспечивает контейнер для хранения данных на вычислительном устройстве.

Следующий пример показывает, как передавать данные из массива на хосте в<vector<T>>на устройстве, а затем обратно в отдельный<std::vector<T>>на хосте. В конце примера оба<host_array>и<host_vector>содержат одинаковые значения, которые были скопированы через память на вычислительном устройстве.

#include <vector>
#include <boost/compute/algorithm/copy.hpp>
#include <boost/compute/container/vector.hpp>
namespace compute = boost::compute;
int main()
{
    // get default device and setup context
    compute::device device = compute::system::default_device();
    compute::context context(device);
    compute::command_queue queue(context, device);
    // create data array on host
    int host_data[] = { 1, 3, 5, 7, 9 };
    // create vector on device
    compute::vector<int> device_vector(5, context);
    // copy from host to device
    compute::copy(
        host_data, host_data + 5, device_vector.begin(), queue
    );
    // create vector on host
    std::vector<int> host_vector(5);
    // copy data back to host
    compute::copy(
        device_vector.begin(), device_vector.end(), host_vector.begin(), queue
    );
    return 0;
}

Следующий пример показывает, как вычислить квадратный корень вектора<float>s на вычислительном устройстве с помощью функции<transform()>.

#include <vector>
#include <algorithm>
#include <boost/compute/algorithm/transform.hpp>
#include <boost/compute/container/vector.hpp>
#include <boost/compute/functional/math.hpp>
namespace compute = boost::compute;
int main()
{
    // get default device and setup context
    compute::device device = compute::system::default_device();
    compute::context context(device);
    compute::command_queue queue(context, device);
    // generate random data on the host
    std::vector<float> host_vector(10000);
    std::generate(host_vector.begin(), host_vector.end(), rand);
    // create a vector on the device
    compute::vector<float> device_vector(host_vector.size(), context);
    // transfer data from the host to the device
    compute::copy(
        host_vector.begin(), host_vector.end(), device_vector.begin(), queue
    );
    // calculate the square-root of each element in-place
    compute::transform(
        device_vector.begin(),
        device_vector.end(),
        device_vector.begin(),
        compute::sqrt<float>(),
        queue
    );
    // copy values back to the host
    compute::copy(
        device_vector.begin(), device_vector.end(), host_vector.begin(), queue
    );
    return 0;
}


PrevUpHomeNext

Статья Tutorial раздела Chapter 1. Boost.Compute Chapter 1. Boost.Compute может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 1. Boost.Compute ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 17:47:12/0.0058910846710205/1