错误:pyopencl:创建特定的设备上下文(ERROR: pyopencl: creating c

2019-07-01 13:21发布

我想我的平台上创建特定的设备上下文。 但我得到一个错误。

码:

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

我得到的错误:

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

该程序编译,如果我使用没有任何错误和警告,执行:

ctx = cl.create_some_context()

但是,我必须手动选择设备类型的每次我执行使用该功能的程序。 我可以设置以下环境变量

PYOPENCL_CTX='0'

使用此我将无法创建基于需求提供不同的设备上下文。 这将是默认设置为0号设备的所有,我创造了环境。

有人可以帮我解决这个问题。

谢谢

Answer 1:

按照PyOpenCL文档, 背景采用的设备列表,而不是特定的设备。

如果你改变你的上下文创建的代码如下:

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

它应该工作。 如果你真的想选择限制到只有一台设备,你可以操纵my_gpu_devices列表,例如:

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


文章来源: ERROR: pyopencl: creating context for specific device