踩坑 | oneAPI for NVIDIA GPUs 安装的一两事

标题写明了踩坑,所以这是一篇讲述踩坑经历的文章,本来想写安装的两三事的,后面发现这坑特小,一两事足够概括了,坑再小都还是有人踩,而且爬个几天可能都不一定能爬上来

毕设题目是异构计算的实现,各种实现方案选来选去最后还是选了 oneAPI ,intel 开发的基于 sycl 的一套工具链,由于底层是基于 sycl,所以天生拥有着多设备的兼容性,可以支持 cpu、gpu、fpga 等等,具体介绍这里不赘述了,详情可去官网了解,下面讲踩坑的心路历程,记个流水账先:

我的 CPU 是 amd 的 3600,显卡是 Nvidia 的 2060,oneAPI Toolkits 提供了 Windows 的整套安装方案,如果电脑上装有 VS 可以方便迁移,可惜的是最开始我的电脑并没有装 VS,所以安装的时候也就没办法选择安装迁移 VS 编译的插件,就先用的是 VS Code 搭的简易环境,毕竟官方也有几个扩展可以支持简单代码的编写,但当我写完了代码运行的时候发现怎么都找不到 gpu,cpu 倒是能找到(),当时以为是支持不好,于是装了个 VS 搭环境开始配置,结果还是一样没办法找到 gpu

到这时候发现不对了,明明编译器是一样的,环境不影响才对,何况还换了环境结果还是不能识别 gpu,于是跑去详细看官方文档,这才发现原来 oneAPI 只支持自家的 gpu,如果要想支持 N 卡得另外装插件,ok,既然要另外装插件才能跑那就装呗,结果一看这不对啊,这插件怎么只支持 linux 啊

没办法,只好在电脑上考虑装个 linux 了,双系统每次使用需要开关机太麻烦,就直接上 WSL2 了,不得不说 WSL2 的体验确实好,之前一直没装的原因是因为 Android 模拟器的 VT 和 Hyper-V 有冲突,不过现在二者共存用蓝叠兼容性还是挺好的

本来以为这就完事了,从 Cuda 下载页面给 WSL2 装上了特定的不带驱动版本的 Cuda,从 intel 官方利用 apt 包管理工具下载了 intel oneAPI Toolkits,同时用 apt 安装了 oneAPI for NVIDIA GPUs,万万没想到就是这里出了岔子

本来以为都准备好了,结果运行还是发现没有找到 gpu,于是按照官方文档排查问题,发现了一个动态链接库没有找到,我一直以为是 wsl2 链接目录的原因,但是 nvidia-smi 命令的结果十分正常,后来以为是 Cuda 版本的原因,于是又各种重装,再后来不选择用 apt 包安装了,一个个安装这才发现了问题所在,apt 安装 oneAPI for NVIDIA GPUs 的版本是 2024.0.2,而 apt 安装 oneAPI Toolkits 的版本是 2024.0.1,安装过程中都没报错,手动安装 oneAPI for NVIDIA GPUs 的 deb 包时才报错找不到路径,intel 官网更新的 apt 包竟然落后一个版本

最后只好手动安装 2024.0.1 版本的 oneAPI for NVIDIA GPUs,这才得以解决,装环境的坑永远踩不完啊