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++文档和教程更多一些。

posted @ 2021-11-20 21:56  zhuwlong  阅读(1274)  评论(0编辑  收藏  举报