Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.135.195.220] |
|
Сообщ.
#1
,
|
|
|
Прога под Win64 работает прекрасно. Драйвер определяется как "OpenCL 3.0 CUDA 12.0.89".
Под Win32 не хочет. Т.е. ни одна функция не выполняется, выдаёт исключение. К примеру, даже: C++ cl_uint qty_platforms = 0; cl_int ret = clGetPlatformIDs(0, NULL, &qty_platforms); P.S. В песочнице всё работает... P.P.S. На всякий случай: установлен NVIDIA CUDA Toolkit v11.8. |
Сообщ.
#2
,
|
|
|
Переустановил все дрова – эффекта ноль (сначала всё удалил – проверил, потом установил дрова видеокарты – проверил, потом установил CUDA – всё то же самое).
Какой-то глюк системный. Даже при удалении всех дров поведение то же. DLL-ка остаётся в системе, но при вызове любой функции происходит, видимо, обращение к какому-то невалидному адресу или вызов какой-то невалидной функции. Странно, что в песочнице всё работает... |
Сообщ.
#3
,
|
|
|
Короче, проблема была из-за файла intelocl32_emu.dll в Intel oneAPI. Убрал файл - всё заработало.
Переустановил oneAPI - опять глюк начался. Короче, просто переименовал этот файл в *.bak, вот и всё решение |
Сообщ.
#4
,
|
|
|
Цитата Jin X @ Короче, проблема была из-за файла intelocl32_emu.dll в Intel oneAPI. Убрал файл - всё заработало. А как в цепочке opencl.dll -> драйвер участвует эта dll? |
Сообщ.
#5
,
|
|
|
B.V., он грузит кучу разных модулей, выполняет кучу вызовов InitOnceExecuteOnce и пр. Попробуй посмотреть в ProcessMonitor что происходит. Один вызов clGetPlatformIDs тянет за собой куку DLL-ок, ключей реестра и пр. Ему же нужно получить список всех устройств, которые могут выполнять код (CPU, GPU и пр), опросить их характеристики.
|