- 首先从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
int main() {
// Creating SYCL queue
cl::sycl::queue Queue;
// Creating buffer of 4 ints
cl::sycl::buffer<cl::sycl::cl_int, 1> Buffer(4);
// Size of index space for kernel
cl::sycl::range<1> NumOfWorkItems{Buffer.get_count()};
// Submitting command group to queue
Queue.submit([&](cl::sycl::handler &cgh) {
// Getting write only access to the buffer on a device
auto Accessor = Buffer.get_access<cl::sycl::access::mode::write>(cgh);
// Executing kernel
cgh.parallel_for<class FillBuffer>(
NumOfWorkItems, [=](cl::sycl::id<1> WIid) {
// Fill buffer with indexes
Accessor[WIid] = (cl::sycl::cl_int)WIid.get(0);
});
});
// Getting read only access to the buffer on the host
const auto HostAccessor = Buffer.get_access<cl::sycl::access::mode::read>();
// Check that the results are correct
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!
,代表配置成功了,大功告成
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)