Ubuntu配置Intel oneAPI DPC++/C++ Compiler(icpc/icc)
- 首先从Intel的官方下载
https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#dpcpp-cpp 根据自己的OS选择即可,文件名后面带星号的为online在线安装的版本(相当于只是个下载器),这里我选择了offline即离线版本 - 下载完成后执行上一步下载的.sh文件,具体文件名根据你当时下到的版本改动一下,之后一路默认配置一直点next即可
sudo ./l_dpcpp-cpp-compiler_p_2022.0.2.84_offline.sh
- 完成安装后进入安装目录,这里根据你当前使用的用户可能安装路径有区别(如果未指定路径)
如果是sudo用户执行的,则目录应该在./opt/intel/oneapi ,而如果是普通用户则应该是在$HOME/intel/oneapi 下 - 进入上述目录后,我们可以看到有一个名为
setvars.sh 的脚本,这是自动配置环境的,执行source setvars.sh intel64 命令,需要注意的是如果你之后重启机器了需要再次执行该命令,网上也有如何解决source命令配置的环境如何做到写入profile一样永久效果的文章,不再赘述。如果你的机器是32位的,则后面的intel64 参数可以修改为ia32 - 最后用一次测试用例看看是否配置成功
#include <CL/sycl.hpp>
int main() {
cl::sycl::queue Queue;
cl::sycl::buffer<cl::sycl::cl_int, 1> Buffer(4);
cl::sycl::range<1> NumOfWorkItems{Buffer.get_count()};
Queue.submit([&](cl::sycl::handler &cgh) {
auto Accessor = Buffer.get_access<cl::sycl::access::mode::write>(cgh);
cgh.parallel_for<class FillBuffer>(
NumOfWorkItems, [=](cl::sycl::id<1> WIid) {
Accessor[WIid] = (cl::sycl::cl_int)WIid.get(0);
});
});
const auto HostAccessor = Buffer.get_access<cl::sycl::access::mode::read>();
bool MismatchFound = false;
for (size_t I = 0; I < Buffer.get_count(); ++I) {
if (HostAccessor[I] != I) {
std::cout << "The result is incorrect for element: " << I
<< " , expected: " << I << " , got: " << HostAccessor[I]
<< std::endl;
MismatchFound = true;
}
}
if (!MismatchFound) {
std::cout << "The results are correct!" << std::endl;
}
return MismatchFound;
}
对这个代码进行编译
dpcpp simple-sycl-app.cpp -o simple-sycl-app
执行
./simple-sycl-app
如果最后结果出现The results are correct! ,代表配置成功了,大功告成
|