Boost.compute-это библиотека GPU/параллельное вычисление для C ++ на основе OpenCl.
Основная библиотека представляет собой тонкую обертку C ++ над API OpenCL и обеспечивает доступ к вычислительным устройствам, контекстам, очереди команд и буферам памяти.
Помимо основной библиотеки находится общий, STL-подобный интерфейс, обеспечивающий общие алгоритмы (например, transform() , accumulate() , sort() ) вместе с общими контейнерами (например, vector<T> , flat_set<T> ). В нем также есть ряд расширений, включая алгоритмы параллельных компьютеров (например, exclusive_scan() , scatter() , reduce() ) и ряд причудливых итераторов (например, transform_iterator<> , permutation_iterator<> , zip_iterator<> ).
Полная документация доступна по адресу http://boostorg.github.io/compute/.
В следующем примере показано, как сортировать вектор поплавков на графическом процессоре:
# 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-это библиотека только для заголовка, поэтому не требуется связь. Приведенный выше пример может быть скомпилирован с:
g++ -I/path/to/compute/include sort.cpp -lOpenCL
Больше примеров можно найти в учебном пособии и в каталоге примеров.
Вопросы о библиотеке (как использование и разработку) могут быть опубликованы в списке рассылки.
Ошибки и запросы на функции могут быть сообщены через трекер выпуска.
Также не стесняйтесь присылать мне электронное письмо с любыми проблемами, вопросами или отзывами.
Проект Boost.compute в настоящее время ищет дополнительных разработчиков с интересом к параллельным вычислениям.
Пожалуйста, отправьте электронное письмо Kyle Lutz ([email protected]) для получения дополнительной информации.