Класс для работы с программами OpenCL

Класс COpenCL является оберткой для удобной работы с функциями OpenCL. Использование GPU в некоторых случаях позволяет значительно увеличить скорость вычислений.

Примеры использования класса для расчетов на числах float и double можно найти в папке MQL5\Scripts\Examples\OpenCL\ в соответствующих подкаталогах, исходные коды самих OpenCL-программ находятся в подкаталогах MQL5\Scripts\Examples\OpenCL\Double\Kernels и MQL5\Scripts\Examples\OpenCL\Float\Kernels .

  • MatrixMult.mq5 – пример умножения матриц с использованием глобальной и локальной памяти
  • BitonicSort.mq5 – пример параллельной сортировки элементов массива на GPU
  • FFT.mq5 – пример расчета быстрого преобразования Фурье
  • Wavelet.mq5 – пример расчета вейвлет-преобразования данных при помощи вейвлета Морле.

Исходный код OpenCL рекомендуется писать в отдельных CL-файлах, которые затем можно подключать к MQL5-программе с помощью ресурсных переменных.

Декларация

   class COpenCL

Заголовок

   #include <OpenCL\OpenCL.mqh>

Методы класса

Имя

Описание

BufferCreate

Создает буфер OpenCL по указанному индексу

BufferFree

Удаляет буфер по указанному индексу

BufferFromArray

Создает буфер по указанному индексу из массива значений

BufferRead

Считывает в массив буфер OpenCL по указанному индексу

BufferWrite

Записывает массив данных в буфер по указанному индексу

Execute

Выполняет OpenCL программу по указанному индексу

GetContext

Возвращает хендл контекста OpenCL

GetKernel

Возвращает хендл объекта кернел по указанному индексу

GetKernelName

Возвращает имя объекта кернел по указанному индексу

GetProgram

Возвращает хендл программы OpenCL

Initialize

Инициализирует программу OpenCL

KernelCreate

Создает точку входа в программу OpenCL по указанному индексу

KernelFree

Удаляет функцию запуска OpenCL по указанному индексу

SetArgument

Выставляет параметр для функции OpenCL по указанному индексу

SetArgumentBuffer

Выставляет буфер OpenCL в качестве параметра функции OpenCL по указанному индексу

SetArgumentLocalMemory

Выставляет параметр в локальной памяти для функции OpenCL по указанному индексу

SetBuffersCount

Устанавливает количество буферов

SetKernelsCount

Устанавливает количество объектов кернел

Shutdown

Выгружает программу OpenCL

SupportDouble

Узнает наличие поддержки на устройстве вещественных типов данных