Библиотека Boost Compute состоит из нескольких компонентов. Основной слой обеспечивает «тонкую» обертку C++ поверх API OpenCL. Это включает в себя классы для управления объектами OpenCL, такими как<device>'s,<kernel>'s и<command_queue>'s.
Поверх базового уровня находится частичная реализация стандартной библиотеки C++, обеспечивающей общие контейнеры (например,<vector<T>>,<array<T, N>>) вместе с общими алгоритмами (например,<transform()>и<sort()>).
Библиотека также предоставляет ряд «причудливых» итераторов (например,<transform_iterator>и<permutation_iterator>), которые улучшают функциональность стандартных алгоритмов.
Повышаю. Compute также предоставляет ряд возможностей для взаимодействия с другими библиотеками C и C++. См. раздело совместимостидля получения дополнительной информации.
См. разделОбзор APIдля полного списка функций, классов и макросов, предоставленных Boost. Вычисли.
Повышаю. Compute используетOpenCLв качестве интерфейса для выполнения кода на параллельных устройствах, таких как графические процессоры и многоядерные процессоры.
OpenCL был выбран по нескольким причинам:
Нейтральный поставщик, стандартный C/C++, и не требует специального компилятора, нестандартных прагм или расширений компилятора.
Это не просто еще один слой параллельной библиотеки, он обеспечивает прямой доступ к базовому оборудованию.
Его модель компиляции времени выполнения позволяет оптимизировать и динамически настраивать ядра для устройства, присутствующего при запуске приложения, а не для устройства, присутствовавшего при компилировании кода (который часто является отдельной машиной).
Использование OpenCL позволяет увеличить Вычислить, чтобы напрямую взаимодействовать с другими библиотеками OpenCL (такими как VexCL и OpenCV), а также с существующим кодом, написанным с OpenCL.
«Тонкая» обертка C++, предоставленная Boost. Вычисление позволяет пользователю вырваться и написать свои собственные ядра, когда предоставленные API не подходят.
Статья Design раздела Chapter 1. Boost.Compute Chapter 1. Boost.Compute может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.