Программы на OpenCL предназначены для выполнения вычислений на видеокартах с поддержкой стандарта OpenCL 1.1 или выше. Современные видеокарты содержат сотни небольших специализированных процессоров, которые могут одновременно выполнять простые математические операции над входящими потоками данных. Язык OpenCL берёт на себя организацию таких параллельных вычислений и позволяет добиться огромного ускорения для некоторого класса задач.
На некоторых видеокартах по умолчанию отключен режим работы с числами типа double, что приводит к возникновению ошибки компиляции 5105. Для включения режима поддержки чисел double в текст OpenCL-программы нужно добавить директиву #pragma OPENCL EXTENSION cl_khr_fp64 : enable. Однако, если видеокарта не поддерживает double, то включение данной директивы не поможет.
Исходный код OpenCL рекомендуется писать в отдельных CL-файлах, которые затем можно подключать к MQL5-программе с помощью ресурсных переменных.
Функции для выполнения программ на OpenCL:
Функция |
Действие |
---|---|
Возвращает тип OpenCL хендла в виде значения из перечисления ENUM_OPENCL_HANDLE_TYPE |
|
Возвращает значение целочисленного свойства для OpenCL-объекта или устройства |
|
Возвращает строковое значение свойства для OpenCL-объекта или устройства |
|
Cоздает контекст OpenCL |
|
Удаляет контекст OpenCL |
|
Получает свойство устройства из OpenCL драйвера |
|
Создает OpenCL программу из исходного кода |
|
Удаляет OpenCL программу |
|
Создает функцию запуска OpenCL |
|
Удаляет функцию запуска OpenCL |
|
Выставляет параметр для функции OpenCL |
|
Выставляет буфер OpenCL в качестве параметра функции OpenCL |
|
Задаёт локальный буфер в качестве аргумента kernel-функции |
|
Создает буфер OpenCL |
|
Удаляет буфер OpenCL |
|
Записывает массив в буфер OpenCL и возвращает количество записанных элементов |
|
Читает буфер OpenCL в массив и возвращает количество прочитанных элементов |
|
Выполняет OpenCL программу |
|
Возвращает состояние выполнения OpenCL программы |
Смотри также