国产加速器海光DCU&GPGPU环境介绍

国产加速器DCU采用ROCm软件栈作为基础支撑。ROCm(Radeon Open Computing Platform)是首个开源的GPU通用计算平台,是一种轻量级、模块化的GPU软件开发环境,可以提供多种开发工具和运行时环境。ROCm拥有丰富的系统关键功能组件支持,可适用于大规模应用程序计算,编译器及程序运行时组件开发。

​ ROCm中每个组件根据其功能自底向上构建出了完整的平台功能,使得开发者可以方便快捷在CPU、DCU、GPU等设备上开发支持异构计算的应用程序。各组件对下层功能进行封装,并对上层提供必须的功能.

​ 上图展示ROCm组件结构,自底向上分别为加速器驱动ROCk、运行时系统ROCt和ROCr、HIP并行编程模型和基础数学库,同时还有管理工具、优化和调试工具。除HIP并行编程模型外,ROCm还提供对OpenCL和C++ AMP并行编程模型的支持。ROCm各组件整体支撑起各领域应用程序。

​ 与CUDA相比,ROCm拥有完善的软件生态,下图展示CUDA生态组件结构与ROCm生态组件的对比:

​ 由于CUDA主要组件均闭源,上图中以CUDA部分以相关文献中公布的组件为基础。构成CUDA的主要系统组件为CUDA Driver、CUDA Runtime和CUDA Library。从ROCm和CUDA组件层次对比可以看出,CUDA Driver对应了ROCm中ROCk和ROCt组件,表示内核态驱动及其封装的接口,这些接口在CUDA中定义为CUDA Driver API,在ROCm中则以ROCt组件所提供的API为接口。内核态驱动随启动而加载。内核态驱动之上是用户态驱动,在CUDA中即CUDA Runtime,对应的接口为CUDA Runtime API;其对应了ROCm中HIP Runtime或其他编程模型的Runtime。用户态驱动,也称运行系统是随异构程序启动而加载的,负责上层资源管理和调度。

​ 目前ROCm支持2种异构并行编程模型分别是HIP和OpenCL,均提供了相应的开发组件和运行时环境支持。HIP(Heterogeneous-Compute Interface for Portability)是ROCm软件栈中的最主要的异构并行编程模型,它定义了一种可以同时在多个平台(包括Nvidia GPU、DCU等)下编译运行的编程模型。通过HIP提供的hipifiy工具可以将CUDA源代码转化为由HIP所定义的编程模型,HIP编译器会根据当前系统环境选择对应的平台作为HIP源码编译的目标。HIP的数据结构和接口模型与CUDA保持高度一致,核函数语法结构也基本相同。

​ ROCm提供了HIPCC编译器实现异构代码的编译,HIPCC同时包含的对Clang和NVCC编译器的调用,以实现平台选择编译。与CUDA所使用编译器NVCC相同,HIPCC对DCU异构程序同样将主机端代码和设备端代码分开编译,最终组成可在DCU上运行的可执行文件。主机端代码和设备端代码均由Clang进行编译。Clang是基于LLVM的编译器,Clang会将所支持的C/C++和其他扩展语言代码编译为LLVM支持的中间层表示IR,然后根据编译设定,由对应LLVM编译器后端分别生成主机端可执行代码和设备端可执行代码,最终两部分代码合并组成可在DCU异构平台上运行的可执行程序。

​ 在ROCm生态中,提供了丰富了针对HIP并行编程模型的数学库和优化调试工具,以供开发者使用高效的库函数完成程序设计,并进行代码调试和优化。

​ 下述表描述了ROCm生态中的主要数学库功能和其对应的CUDA相同功能的数学库。

HIP数学库CUDA数学库数学库功能
hipblascublas基础矩阵运算数学库
hiprandcurand随机数数学库
hipsparsecusparse稀疏矩阵数学库
hipfftcufft快速傅利叶变换数学库
miopencudnn深度学习基础数学库
hipcubcub基础算法库
rcclnccl通信库
rocThrustThrust并行库

​ 下述表2描述了ROCm生态中的主要优化和调试工具。除此之外,ROCm还提供了rocm-smi管理工具,以便开发者查看系统中DCU的状态。

工具名称作用
rocprofiler用于程序分析和绘制时间线
roctracer用于跟踪程序

​ 以上构建出整个ROCM软件生态环境。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值