ERROR: pyopencl: creando contexto para un dispositivo específico

Quiero crear un contexto para un dispositivo específico en mi plataforma. Pero estoy recibiendo un error.

Código:

import pyopencl as cl platform = cl.get_platforms() devices = platform[0].get_devices(cl.device_type.GPU) ctx = cl.Context(devices[0]) 

El error que estoy recibiendo:

 Traceback (most recent call last): File "D:\Programming\Programs_OpenCL_Python\Matrix Multiplication\3\main3.py", line 16, in  ctx = cl.Context(devices[0]) AttributeError: 'Device' object has no attribute '__iter__' 

El progtwig comstack y ejecuta sin errores y advertencias si uso:

 ctx = cl.create_some_context() 

Pero tendré que seleccionar manualmente el tipo de dispositivo cada vez que ejecuto el progtwig usando esta función. Puedo configurar la siguiente variable ambiental

 PYOPENCL_CTX='0' 

Al usar esto, no podré crear contextos para diferentes dispositivos disponibles según el requisito. Estará configurado de forma predeterminada en el dispositivo 0 para todos los contextos que cree.

¿Puede alguien ayudarme con este problema?

Gracias

De acuerdo con la documentación de PyOpenCL, Context toma una lista de dispositivos, no un dispositivo específico.

Si cambias tu código de creación de contexto a esto:

 platform = cl.get_platforms() my_gpu_devices = platform[0].get_devices(device_type=cl.device_type.GPU) ctx = cl.Context(devices=my_gpu_devices) 

Deberia de funcionar. Si realmente desea limitar la opción a un solo dispositivo, puede manipular la lista my_gpu_devices , por ejemplo:

 my_gpu_devices = [platform[0].get_devices(device_type=cl.device_type.GPU)[0]]