Boost.compute Или Параллельные Вычисления На Gpu/Cpu. Часть 2



Введение Привет, Хабр! Предыдущая часть многим понравилась, поэтому я снова перерыл половину документации по бусту и нашел, о чем написать.

Очень странно, что вокруг boost.compute нет такого ажиотажа, как вокруг boost.asio. Ведь достаточно того, что эта библиотека является кроссплатформенной, а также предоставляет удобный (в рамках C++) интерфейс для взаимодействия с параллельными вычислениями на GPU и CPU.



Все части

  • Часть 1
  • Часть 2


Содержание

  • Асинхронные операции
  • Пользовательские функции
  • Сравнение скорости разных устройств в разных режимах
  • Заключение


Асинхронные операции

Казалось бы, где еще быстрее? Один из способов ускорить работу с контейнерами вычислительного пространства имен — использовать асинхронные функции.

Boost.compute предоставляет нам несколько инструментов.

Из них класс Compute::future для управления использованием функций и функции copy_async(), fill_async() для копирования или заполнения массива.

Инструменты для работы с событиями, конечно, тоже есть, но рассматривать их нет необходимости.

Ниже приведен пример использования всего вышеперечисленного:

   

auto device = compute::system::default_device(); auto context = compute::context::context(device); auto queue = compute::command_queue(context, device);

Теги: #C++ #вычисления на графическом процессоре #boost::compute #boost::compute
Вместе с данным постом часто просматривают: