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都会让执行时间翻倍。

对应教程

参考资料

相关面经

4 篇

清微智能

高性能研发
秋招一面
查看原面经 →
DCU 能给我讲一下吗?我不是很熟悉这个东西。(数不清问了多少次)

智元机器人

高性能计算工程师
一面
查看原面经 →
DCU 大概是一块什么样的芯片?从应用的角度说一下,如果你了解 GPU 的话,可以和 GPU 做一个对比。(还是和我项目相关的,你看又问)

百度

AI Infra 工程师
秋招一面
查看原面经 →
项目追问
dcu 和 gpu 的区别

沐曦

AI 工程师(推理与算子优化)
秋招一面、二面
查看原面经 →
gpu 和 dcu 在底层具体架构上的区别

相关题目

4 题