开始学习Opencl,目前在看的书是OpenCL异构计算(张云泉)和OpenCL实战(Matthew.陈睿译)。
原本是打算在Ubuntu下使用VSCode练习代码的,在win10里用VMware装了个Ubuntu20虚拟机,然后发现虚拟机无法物理共享主机的显卡,好像现在有某种方法可以做到了?之后再搜搜有无办法吧。
总之虚拟机行不通,也懒得再装双系统了,就打算直接在windows下实战了。
今天时间很急,先只记录一下环境配置的过程和遇到的问题,其他改天再细写。
查询了一下我的电脑是两个显卡:
Inter(R) UHD Graphics 630
Radeon(TM) Pro WX 4100
安装Inter的opencl没有任何问题。
但是当我按照OpecnCL实战里的代码查询平台的时候,发现只能找到Inter这张,AMD的找不到。
AMD APP SDK是出现了什么问题吗?官网上找不到了,然后我搜到了这位大神的博客:
按照他的指示在https://github.com/GPUOpen-LibrariesAndSDKs/OCL-SDK/releases下载了OCL_SDK_Light,然后安装,再原样配置vs2019,使用他的平台测试代码,输出结果仍然只有Inter显卡,没有AMD的。
不知道为什么。
经过一番折腾和搜索,我从非官方渠道(也就是网上老哥们的资源)找到了AMD APP SDK-v2.8,AMD APP SDK-v2.9,AMD APP SDK-v3.0的安装包,逐个安装却各有问题。
这三个安装包的安装程序都不相同。
v2.9装完什么都没有发生,命令行运行clinfo仍然只显示Inter的卡,v2.8装完是成功的,但是2.8支持的是opencl1.2,而Inter那边显示支持的是opencl2.0,为了之后版本不发生冲突,我还是想装v3.0(它支持opencl2.0)。
然而,当我卸载v2.8,装上v3.0后,clinfo又不显示AMD的卡了。
但最后被我折腾出一个神奇的办法,v2.8,v2.9,v3.0都装了(实际上,v2.9是没用的),然后vs2019里的项目配置的文件设置都用v3.0的文件(配置过程见上面大神博客记载)。
这样会发生一个神奇的事:在命令行里clinfo会显示AMD支持opencl1.2,如图
但是在vs2019里运行平台查询代码,却显示AMD支持opencl2.0,如图:
虽然有点奇葩,但总归达到了目的。
具体原理改天再找去吧(估计接下来的代码实战能正常跑我也就懒得再找原因了,但如果还有问题就还得解决这个坑)。
所以AMD到底在搞什么,好好给个官方的SDK不好吗,真的很折腾人。