А в ME не планируется как то сделать доступным получение информации об ошибках в самом коде OpenCL? А то мне - не профессионалу, бывает очень сложно отлавливать причину ошибок.
В OCL1.2 добавлена функция printf, была бы очень полезна
ПС дебаг программ для видях действительно сложная задача, очень мало инструментария для этого
Хотя бы для компьютеров в своей сети бы - экспериментально - для начального тестирования, так сказать. Нет возможности?
Это замечательно - стараюсь своевренмено изучать!
А в ME не планируется как то сделать доступным получение информации об ошибках в самом коде OpenCL? А то мне - не профессионалу, бывает очень сложно отлавливать причину ошибок.
MQL5: Для получения информации о последней ошибке OpenCL в перечисления добавлены новые значения, которые позволяют получить код ошибки и текстовое описание.
При использовании CL_ERROR_DESCRIPTION в качестве параметра handle в CLGetInfoString следует передать код ошибки. Если вместо кода ошибки передать CL_LAST_ERROR, то функция вернёт описание последней ошибки.
Пример:
//--- получить код последней OpenCL ошибкиintcode = (int)CLGetInfoInteger(0,CL_LAST_ERROR);
string desc; // для получения текстового описания ошибки//--- используем код ошибки для получения текстового описания ошибкиif(!CLGetInfoString(code,CL_ERROR_DESCRIPTION,desc))
desc = "cannot get OpenCL error description, " + (string)GetLastError();
Print(desc);
//--- чтобы получить описание последней OpenCL ошибки без предварительного получения кода, нужно передать CL_LAST_ERROR if(!CLGetInfoString(CL_LAST_ERROR,CL_ERROR_DESCRIPTION, desc))
desc = "cannot get OpenCL error description, " + (string)GetLastError();
Print(desc);
Пока в качестве описания ошибки отдаётся имя внутреннего перечисления, расшифровку которого можно посмотреть на странице https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Например, если получено значение CL_INVALID_KERNEL_ARGS, описание для него "Returned when enqueuing a kernel when some kernel arguments have not been set or are invalid."
В этом обновлении мы добавили 2FA TOTP-аутентификацию с помощью Google Authenticator в торговый терминал MetaTrader 5. Terminal TOTP-аутентификации с помощью Google Authenticator и других подобных приложений
судя по видео там OpenCL поддерживается уже по верисии аж 3.0 в справке 1.1 а в реальности какая версия поддерживается не выше 1.2 ??? то что от версии 1,1 и выше это понятно
ruslan #: судя по видео там OpenCL поддерживается уже по верисии аж 3.0 в справке 1.1 а в реальности какая версия поддерживается не выше 1.2 ??? то что от версии 1,1 и выше это понятно
Поддерживается базовая OpenCL 1.2, которой достаточно для масштабирования математических операций.
В последних билдах (как минимум начиная с 3668, а возможно, во всех билдах) появилась одна проблема, из-за которой не выходит заливать и обновлять продукты в маркете, которые используют OpenCL.
Суть в том, что терминал (в том числе тестер) загружает библиотеку opencl.dll, даже если программа не задействует OpenCL.
Из-за этого в маркете автоматический валидатор выдает следующую ошибку:
Вот пример кода (тут минимум кода OpenCL только для локализации проблемы, используется штатная библиотека, которая не задействуется):
//+------------------------------------------------------------------+#property strict#property version"1.0"//+------------------------------------------------------------------+#property indicator_chart_window#property indicator_buffers0#property indicator_plots0//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+inputbool UseOpenCL = false;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+#include <OpenCL\OpenCL.mqh>
COpenCL _OpenCL;
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnInit()
{
returnINIT_SUCCEEDED;
}
//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+intOnCalculate(constint rates_total, // size of input time series constint prev_calculated, // number of handled bars at the previous call constdatetime& time[], // time array constdouble& open[], // open array constdouble& high[], // high array constdouble& low[], // low array constdouble& close[], // close array constlong& tick_volume[], // Tick Volume array constlong& volume[], // Real Volume array constint& spread[]) // Spread array
{
if (UseOpenCL){
int Vals[] = {1};
_OpenCL.BufferWrite(0, Vals, 0, 0, 1);
}
return rates_total;
}
Прошу помощи у знающих в решении этой проблемы.
П.С. Вполне возможно, что проблема лишь в автовалидаторе. Если это так, тогда вопрос в том, когда это будет исправлено и можно будет в маркете выгладывать/обновлять продукты использующие OpenCL?
Поставил AMD APP SDK 3.0, терминал пишет opencl.dll not found, please install OpenCL drivers. Процессоры больше не поддерживаются? Сторонняя программа видит и рабает.
Aleksey Vyazmikin #:
А в ME не планируется как то сделать доступным получение информации об ошибках в самом коде OpenCL? А то мне - не профессионалу, бывает очень сложно отлавливать причину ошибок.
В OCL1.2 добавлена функция printf, была бы очень полезна
ПС дебаг программ для видях действительно сложная задача, очень мало инструментария для этогоХотя бы для компьютеров в своей сети бы - экспериментально - для начального тестирования, так сказать. Нет возможности?
Это замечательно - стараюсь своевренмено изучать!
А в ME не планируется как то сделать доступным получение информации об ошибках в самом коде OpenCL? А то мне - не профессионалу, бывает очень сложно отлавливать причину ошибок.
Смотрите новость о билде 3520
Для получения последней ошибки OpenCL через CLGetInfoInteger параметр handle игнорируется, то есть не имеет значения. Описание ошибок: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
Для неизвестного кода ошибки вернётся строка "unknown OpenCL error N", где вместо N будет код ошибки.
Пример:
Текстовое описание ошибки OpenCL можно получить с помощью CLGetInfoString. Описание ошибок: https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS.
При использовании CL_ERROR_DESCRIPTION в качестве параметра handle в CLGetInfoString следует передать код ошибки. Если вместо кода ошибки передать CL_LAST_ERROR, то функция вернёт описание последней ошибки.
Пример: Пока в качестве описания ошибки отдаётся имя внутреннего перечисления, расшифровку которого можно посмотреть на странице https://registry.khronos.org/OpenCL/specs/3.0-unified/html/OpenCL_API.html#CL_SUCCESS. Например, если получено значение CL_INVALID_KERNEL_ARGS, описание для него "Returned when enqueuing a kernel when some kernel arguments have not been set or are invalid."
Смотрите новость о билде 3520
Спасибо, видимо пропустил. Потестирую данный функционал.
судя по видео там OpenCL поддерживается уже по верисии аж 3.0 в справке 1.1 а в реальности какая версия поддерживается не выше 1.2 ??? то что от версии 1,1 и выше это понятно
Поддерживается базовая OpenCL 1.2, которой достаточно для масштабирования математических операций.
Надеюсь, пишу по теме.
В последних билдах (как минимум начиная с 3668, а возможно, во всех билдах) появилась одна проблема, из-за которой не выходит заливать и обновлять продукты в маркете, которые используют OpenCL.
Суть в том, что терминал (в том числе тестер) загружает библиотеку opencl.dll, даже если программа не задействует OpenCL.
Из-за этого в маркете автоматический валидатор выдает следующую ошибку:
Вот пример кода (тут минимум кода OpenCL только для локализации проблемы, используется штатная библиотека, которая не задействуется):
Прошу помощи у знающих в решении этой проблемы.
П.С. Вполне возможно, что проблема лишь в автовалидаторе. Если это так, тогда вопрос в том, когда это будет исправлено и можно будет в маркете выгладывать/обновлять продукты использующие OpenCL?
Будем разбираться и исправлять, включая наличие опенсл дравера в среде тестирования продуктов.
Премного благодарен!