文章目录
- 硬件抽象
- 1存储
- 1.1.1 存储层次
- 访存一致
- 计算模型
- 1 Core核内同步和并行
- 2 核间并行和同步
- 编程模型
- 1、Kernel
- 计算规模
- 任务类型
- 执行示例
- 性能调优
- 性能调优实践
- 参考
cambricon BANG架构是基础的,高度抽象的,向用户暴露统一编程模型和编程接口,并提供调试和分析工具。
硬件抽象
1存储
1.1.1 存储层次
访存一致
计算模型
1 Core核内同步和并行
2 核间并行和同步
编程模型
1、Kernel
在MLU 上执行的程序叫做Kernel,每个Task 都执行一次对应的Kernel函数。
计算规模
1、需要将一个完整的任务拆分成一系列可以并行的Task,所有的Task构成一个三维网格。
2、每个Task有一个三维坐标+一个全局唯一的线性ID
3、每个Task 会被映射到一个物理 Core(cluster)上运行。
任务类型
kernel 需要多少物理Core(TP)或者cluster。
有两种:1、Block任务(最少一个Core TP);2、Union任务(最少一个cluster)
执行示例
性能调优
1、计算效率最大化
2、IO效率最大化
因此,2个方向调优:1、计算并行;2、计算和IO并行两个方向。和硬件有关,当前一款的MLU代码,到另外不一定效率高。
1、计算效率最大:计算并行,减少计算量,等效替代。
2、IO 效率:减少访存量,计算和访存并行,提升带宽利用率
性能调优实践
具体看文档《Cambricon-BANG-C-C+±Programming-Guide-CN-v1.5.0.pdf》,有很多技巧。
参考
Cambricon-BANG-C-C+±Programming-Guide-CN-v1.5.0.pdf