首页 > 编程语言 >Intel DPC++安装与使用

Intel DPC++安装与使用

时间:2024-07-04 21:53:37浏览次数:20  
标签:SYCL Intel C++ oneAPI CUDA 安装 DP

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

标签:SYCL,Intel,C++,oneAPI,CUDA,安装,DP
From: https://www.cnblogs.com/sexintercourse/p/18284738

相关文章

  • Python基础语法(与C++对比)(持续更新ing)
    代码块Python在统一缩进体系内,为同一代码块C++{...}内部的为同一代码块注释Python单行注释:#...多行注释:'''...'''C++单行注释://...多行注释:/*...*/数据类型1.Python数据类型    Python中支持数字之间使用下划线'_'分割数字,旨在查看方便    ......
  • C++内存管理
    内存管理C/C++内存分布静态区(数据段)全局变量:在整个程序运行期间都存在的变量,包括没有显式声明为static的全局变量。静态局部变量:在函数内部声明为static的变量。它们在函数首次调用时初始化,并在程序整个运行期间保持其值。静态全局变量:在文件作用域中声明为static的变量。......
  • Intellij IDEA maven setting 中, 在设置maven setting file 的后面有个 Override 是
    在IntelliJIDEA中,Maven设置中的"Override"选项用于指定一个自定义的settings.xml文件以覆盖默认的Maven设置。具体而言,它允许你使用一个不同于全局Maven配置的设置文件,这样可以在项目级别或者环境级别进行特定的配置。以下是更详细的解释:Mavensettings.xml文件:......
  • WPF Datagrid ContextMenu MenuItem Command CommandParameter MultiBinding
     //xaml<Windowx:Class="WpfApp194.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas......
  • 2024年华为OD机试真题- 电脑病毒感染-(C++/Java/python)-OD统一考试(C卷D卷)
     2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】   题目描述一个局域网内有很多台电脑,分别标注为0~N-1的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。......
  • 2024年华为OD机试真题- 找数字-(C++/Java/python)-OD统一考试(C卷D卷)
    2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】    题目描述小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数n(1≤n≤1e9),小扇需要找到一个比n大的数字m,使得m和n对应的二进制中1的个数要相同,如:4对应二进制1008对应二进制1000其中1的......
  • c++ 之连接sqlite数据库(vsode)
    Tasks.json中添加配置"-lsqlite3"#include<sqlite3.h>#include<iostream>#include<errno.h>staticintcallback1(void*NotUsed,intargc,char**argv,char**azColName){inti;for(i=0;i<argc;i++){printf("%s=%s\n&quo......
  • 使用g++对c++进行编译链接
    静态库静态库的生成静态库实际就是多个.o的归档(文件夹)//在bash终端执行依次执行以下g++命令.g++-csrc1.cppsrc2.cpparcrvlibmy.asrc1.osrc2.o查看静态库内容://输出src1.0,src2.0,这也验证了静态库.a文件实际就是个归档目录ar-tlibmy.a......
  • C++单例模式、工厂模式、观察者模式等的实现和应用场景。
    设计模式是软件开发中常用的解决方案,它们提供了一些经过验证的方法来解决常见的设计问题。以下是单例模式、工厂模式和观察者模式在C++中的实现和应用场景的详细讲解。1.单例模式(SingletonPattern)概念单例模式确保一个类只有一个实例,并提供一个全局访问点来访问这个实例。......
  • 多线程编程的基本概念,C++标准库中的多线程支持(std::thread,std::async),如何处理线程同步
    多线程编程在现代计算机系统中非常重要,因为它能够使程序同时执行多个操作,提高计算效率。以下是多线程编程的基本概念及如何在C++标准库中使用std::thread和std::async进行多线程编程,同时处理线程同步和并发问题。多线程编程的基本概念线程(Thread):线程是一个轻量级的进程,是......