Intel DPC++安装与使用

Intel DPC++安装与使用

 

DPC++(Data Parallel C++)是Intel公司使用oneAPI实现的SYCL和SYCL编译器,这里记录一下V100服务器安装DPC++过程

下载安装DPC++编译器

前往官网下载地址,左侧选择Compilers->Intel® oneAPI DPC++/C++ Compiler and Intel® C++ Compiler Classic,选择目前最新的离线版本下载。
image
使用chmod +x 授予执行权限,然后用./命令开始安装,这里如果用sudo权限安装会安装到/opt/intel/oneapi文件夹下,如果用普通用户权限安装会安装到/home/username/intel/oneapi目录下。

由于新版本DPC++没有在Ubuntu 18.04系统上测试过,安装过程中可能会出现警告,直接无视。

安装完成后需要设置变量,以普通用户安装为例,直接运行
source /home/username/intel/oneapi/setvars.sh intel64,注意每次启动终端都要设置一次。

编译运行DPC++程序

设置完成后就可以使用icpx编译DPC++程序,编译时需要加上-fsycl命令,例如以下代码运行了一个简单的sycl程序,并打印了所有支持的设备。需要注意的是sycl 2020语法与sycl 1.x语法有很大差距,DPC++默认支持sycl 2020语法,使用旧版本语法将会报错。

  #include <CL/sycl.hpp>
  #include <array>
  #include <iostream>
  using namespace sycl;
  int main()
  {
  constexpr int size = 16;
  std::array<int, size> data;
   
  queue Q;
   
  buffer B { data };
   
  Q.submit([&](handler& h) {
  accessor A(B, h);
  h.parallel_for(size, [=](auto& idx) {
  A[idx] = idx;
  });
  });
   
  host_accessor A { B };
  for (int i = 0; i < size; i++) {
  std::cout << "data[" << i << "]=" << A[i] << "\n";
  }
   
  for (auto const& this_platform : platform::get_platforms()) {
  std::cout << "Platform: " << this_platform.get_info<info::platform::name>() << std::endl;
  for (auto const& this_device : this_platform.get_devices()) {
  std::cout << "Device: " << this_device.get_info<info::device::name>() << std::endl;
  }
  }
   
  return 0;
  }

运行命令icpx -fsycl test.cpp编译代码,然后./a.out执行,输出运行结果。

安装CUDA插件

DPC++默认不支持CUDA,需要下载安装CUDA插件才能在英伟达GPU上运行,参考文档oneAPI for NVIDIA® GPUs

首先下载CUDA插件,下载地址Downloads-oneAPI for NVIDIA GPUS,oneAPI版本选择已经安装过的DPC++版本,这里版本一定要一致,否则会找不到安装路径。CUDA版本需要选择当前oneAPI支持的CUDA版本。

下载后同样用chmod +x授予执行权限,然后用./命令执行,插件安装完成后就可以在DPC++中使用英伟达GPU了,编译使用GPU的DPC++程序需要添加编译选项-fsycl-targets=nvptx64-nvidia-cuda

卸载DPC++

重新运行安装脚本,会出现卸载选项,选择卸载选项卸载即可,卸载完成后可以删除intel文件夹。

DPC++和SYCL教程

主要看了下面两个教程

除了DPC++还有其他SYCL编译器实现,比如OpenSYCL(之前叫hipSYCL)、ComputeCpp、triSYCL等,感觉不同的SYCL编译器实现方式有很大不同,语法和编译方式也有一些区别,相比之下还是DPC++文档和教程更多一些。

本文来自博客园,作者:zhuwlong,未经授权禁止转载

原文链接:https://www.cnblogs.com/zhuwlong/p/15582753.html

posted on 2024-07-04 21:45  漫思  阅读(57)  评论(0编辑  收藏  举报

导航