25 ноября 2022
25 ноября 2022
Terminal
MQL5
//--- первый параметр handle игнорируется при получении кода последней ошибки int code = (int)CLGetInfoInteger(0,CL_LAST_ERROR);
//--- получить код последней OpenCL ошибки int code = (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."