DCU 与 GPU 有什么区别?
未标记
考查重点:计算硬件与软件生态适配。以海光 DCU 与 NVIDIA GPU 为例,对照 DTK/CUDA 软件栈、算子和编译扩展的迁移成本,再用相同模型负载比较吞吐与显存需求
本题目录
参考答案
核心回答
如果这里的DCU指海光深算处理器,它本身属于GPGPU类通用并行计算加速器;GPU是更宽泛的类别。面试里通常实际比较的是海光DCU与NVIDIA GPU。两者都适合把大量数据并行任务交给加速器,但具体指令集、计算单元组织、线程组执行、存储层级、矩阵指令和配套软件栈不同。
工程上最大的区别是代码与性能的可移植性。NVIDIA通常使用CUDA生态,海光提供DTK等软件栈及相应框架适配。高层模型代码可能只需换兼容构建,定制kernel、内联汇编和厂商专属库则需要逐项迁移与重新调优;API名字相似不代表二进制或性能等价。
比较时分三层
硬件执行。 看计算单元、线程调度粒度、寄存器与片上共享存储容量、矩阵指令支持和精度。NVIDIA常用warp/SM术语,其他体系可能使用wavefront/CU。线程组大小、跨lane指令及屏障语义应查具体芯片和编译目标,不能凭“DCU”三个字给所有代际写同一参数。
存储与通信。 同一GEMM在不同平台上,分块尺寸、寄存器占用、片上存储bank冲突、全局内存合并访问和多卡互联都会影响性能。都采用分块并不意味着可以照搬同一tile大小。
软件生态。 需要核对驱动、DTK、编译器、算子库、框架构建与通信库的组合。某些适配框架仍使用torch.cuda这样的上层接口名,不能据此认定底层是NVIDIA硬件,也不能直接安装任意CUDA版二进制扩展。
迁移一个算子如何推进
先固定输入形状、数据类型、布局和误差容限,用可靠CPU或原平台结果作数值基线。随后完成编译和功能正确性,再分析算子耗时、带宽、访存、寄存器压力及占用率。最后调整分块、数据布局、向量化、流水和算子融合。
端到端性能还包括CPU调度、主机设备传输、kernel启动与多卡通信。只比较峰值算力,或只看一个大矩阵的吞吐,都不足以代表实际模型服务。
追问:SIMT遇到分支会怎样?
同一执行组内不同lane走不同分支时,通常需要按活动掩码执行相应路径,部分lane暂时不做有效工作,从而降低利用率。代价取决于架构、编译和分支分布;不能概括成每个if都会让执行时间翻倍。
对应教程
- 1-1-大模型认知与工程概览:回看算力、显存、带宽与多卡通信的区别,本文补充DCU迁移边界。
参考资料
- 国内:海光信息:2026年半年度报告:DCU与DTK定义:依据报告对 DCU 与 DTK 的定义,解释正文中 DCU 的 GPGPU 定位与 DTK 的编译、运行、调试和分析职责。
- 国内:百度飞桨:AMD GPU / 海光 DCU安装说明:采用 Z100 与 ROCm 4.0.1 的明确组合,说明正文中框架适配受硬件与软件版本约束。
- 国内:FlagOS / 北京智源人工智能研究院开源生态:Hygon DCU Installation Guide:参考框架暴露 CUDA 设备名但底层使用 HIP 的说明,解释正文中 torch.cuda 接口名不能证明底层硬件或二进制兼容。
- 国外:AMD:HIP FAQ 5.0.0:借鉴源码迁移、二进制兼容与平台调优的讨论,解释正文中高层代码和定制 kernel 的迁移成本为何不同。
- 国外:AMD:What is HIP?:解释主机负责内存、启动与同步,设备执行并行kernel的编程结构。
