Справочник MQL5Работа с OpenCL 

Работа с OpenCL

Программы на OpenCL предназначены для выполнения вычислений на видеокартах с поддержкой стандарта OpenCL 1.1 или выше. Современные видеокарты содержат сотни небольших специализированных процессоров, которые могут одновременно выполнять простые математические операции над входящими потоками данных. Язык OpenCL берёт на себя организацию таких параллельных вычислений и позволяет добиться огромного ускорения для некоторого класса задач.

На некоторых видеокартах по умолчанию отключен режим работы с числами типа double, что приводит к возникновению ошибки компиляции 5105. Для включения режима поддержки чисел double в текст OpenCL-программы нужно добавить директиву #pragma OPENCL EXTENSION cl_khr_fp64 : enable. Однако, если видеокарта не поддерживает double, то включение данной директивы не поможет.

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

Функции для выполнения программ на OpenCL:

Функция

Действие

CLHandleType

Возвращает тип OpenCL хендла в виде значения из перечисления ENUM_OPENCL_HANDLE_TYPE

CLGetInfoInteger

Возвращает значение целочисленного свойства для OpenCL-объекта или устройства

CLGetInfoString

Возвращает строковое значение свойства для OpenCL-объекта или устройства

CLContextCreate

Cоздает контекст OpenCL

CLContextFree

Удаляет контекст OpenCL

CLGetDeviceInfo

Получает свойство устройства из OpenCL драйвера

CLProgramCreate

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

CLProgramFree

Удаляет OpenCL программу

CLKernelCreate

Создает функцию запуска OpenCL

CLKernelFree

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

CLSetKernelArg

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

CLSetKernelArgMem

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

CLSetKernelArgMemLocal

Задаёт локальный буфер в качестве аргумента kernel-функции

CLBufferCreate

Создает буфер OpenCL

CLBufferFree

Удаляет буфер OpenCL

CLBufferWrite

Записывает массив в буфер OpenCL и возвращает количество записанных элементов

CLBufferRead

Читает буфер OpenCL в массив и возвращает количество прочитанных элементов

CLExecute

Выполняет OpenCL программу

CLExecutionStatus

Возвращает состояние выполнения OpenCL программы

Смотри также

OpenCL, Ресурсы