我刚开始学习OpenCL。这是一台配有Intel Haswell CPU + Intel HD Graphics 4600的简单台式机。现在我使用PyOpenCL和提供的示例。我的问题是,如果代码在CPU或GPU上运行?
GetMaxim()
这看起来像CPU。但是有没有区别或英特尔驱动程序决定内核运行的位置(CPU或GPU)?如果这只是CPU,我怎么让它在iGPU上运行?
答案 0 :(得分:1)
好吧我从未使用过pyopencl,但你应该能够在pyopencl和C / C ++中查询设备类型。
查看pyopencl文档:
class pyopencl.device_info
...
TYPE
VENDOR
VENDOR_ID
VERSION
您应该能够从当前设备的device_info实例获取设备类型。
OpenCL在标准中定义了三种(四种)不同的设备类型:
CL_DEVICE_TYPE_CPU
CL_DEVICE_TYPE_GPU
CL_DEVICE_TYPE_ACCELERATOR
CL_DEVICE_TYPE_DEFAULT
将实际设备的类型与CL_DEVICE_TYPE_CPU
和CL_DEVICE_TYPE_GPU
的pyopencl表示进行比较,可以为您提供有关执行设备的信息。
答案 1 :(得分:1)
我发现了这个问题。它只使用CPU而没有列出GPU。我在Windows 7上发布的问题/解决方案我在this其他问题上找到了问题。
Maxim Shevtsov(英特尔):可能这是真正的根本原因。目前处理器图形OCL设备无法在"无头"配置(没有插入监视器)。
我通过远程桌面连接到所述PC(不要问为什么......),因此它无头,因此iGPU不能作为OpenCL设备使用。
根据this thread在英特尔论坛上使用最新驱动程序和Windows 8或更高版本,这可行。但不是在Windows 7中(据我所知,在第三代核心i处理器上,例如Ivy桥)。
我开始时已经足够好了。后来我想看看我是否从GPU获得了任何东西。