我有一台装有Intel(R) HD Graphics 520 GPU
的笔记本电脑。我在Cygwin
中添加了OpenCL
开发包。我在GitHub
上的C中为OpenCL
找到了一个小型Mandelbrot集计算器程序。它是针对Apple
的,所以我修改了Makefile,为gcc
使用了正确的头和设置。现在代码编译并执行良好(创建bmp文件):
$ ./mandelbrot.exe
Device 0: GenuineIntel pthread-Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz
我有两个问题:
#1.如何将Intel GPU添加到/etc/OpenCL/vendors
列表(如果可能的话)?我试图从英特尔网站安装Intel CPU runtime for OpenCL Applications for Windows OS
和Intel Graphics Technology driver package
,但我不知道在intel.idc
文件中哪里可以找到合适的OpenCL
dll。
#2.在/etc/OpenCL/vendors
中,我发现了一个指向cygpocl-2.dll
的pocl.icd
文件。我想这就是pthread库。但在我看来,它只运行一个线程,尽管我有4个内核。我应该做任何修改以在多个线程中运行它吗?我调试了代码,似乎只找到了一个设备,所以它只在一个线程上运行。在初始化函数中,它设置device_work_size
属性,用于处理最终bmp的每个设备的stirp。但由于只有一个设备,整个bmp通过一次运行进行处理(调用一个clEnqueueNDRangeKernel
和一个clEnqueueReadBuffer
)。
更新
我已安装Intel(R)Graphics–Windows*DCH驱动程序。它安装了图形驱动程序。我已经找到了interlocl64.dll(作为/cygdrive/c/Program Files (x86)/Common Files/Intel/Shared Libraries/intel64/intelocl64.dll
)。我将整个路径放入/etc/OpenCL/vendors/intel.icd
文件中。到目前为止,一切都很好。现在它甚至找不到pthread设备。。。啊。。。
我认为不可能使用cygwin的GPU。我建议您构建本机Windows二进制文件(例如使用Visual Studio或Intel DPC++)或使用WSL。看见https://github.com/intel/compute-runtime/blob/master/WSL.md要求。