Не работает OpenCL в 32 битах
    
  ![]()  | 
Наши проекты:
 Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту  | 
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.5] | 
 
 | 
		
  | 
    Правила раздела "Программирование графики"
  
    Не работает OpenCL в 32 битах
    
  | 
         
         
         
          
           Сообщ.
           #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 и пр), опросить их характеристики.   
        
       |