Workload Characterization & Priority & Scheduler to CPU/GPU/PIM

导言

姜师兄想研究不同计算硬件,或者是异构计算的适用领域。在调研时Davinci架构时,我感觉Domain-Specific Architectures是未来,这会导致会模糊CPU,GPU,PIM之间的区别。导致这个问题是在将来是伪需求

在完成了$A^3PIM$的工作后,其实利用了加速器(PIM)的调度的核心就是:

考虑数据移动和同步等负面开销后,来贪心最小耗时的策略。

但是对于这个复杂的问题,我的观点是 No silver bullet

问题的逻辑对象的特征提取

workload的计算范式的原子性和通用性

  1. 调度单元的划分:一个实际的程序,肯定由许多特征不同的,互不相关(但有执行依赖关系)的Kernel组成
    1. e.g, 矩阵乘,for循环kernel。(但是这需要对程序的算法十分了解)
  2. Kernel特征:
    1. 计算密度,
    2. 访存空间局部性,时间局部性,(导致的cache miss率,但是这和cache硬件设计可能有关)
    3. 并行能力

代码的实现效率

  1. 代码编写质量,是不是最高效的算法的实现。
  2. 代码对于特定硬件(e.g, Tensor core, 独立的视频编解码单元)的使用和利用率。

硬件的参数

  1. 浮点计算性能
  2. 各级访存带宽和延迟
  3. 并行单元数量

问题的难点

方法的选择

整个系统需要考虑的因素过多,不经过抽象和筛选只有AI能做。

(畅想)另一种是简化的结构化分析模型(mechanistic analysis model, MAM)(包含上面提及的),采取生产者消费者+多角度利用率限制的思路

  • 多角度限制:从计算、访存和通讯等多个角度衡量,应用对硬件的利用率。最终性能等于各角度等效性能取最小,这样还能知道那个角度是瓶颈。
  • 生产者消费者:问题的关键在于怎么建模这里面的限制: 硬件支持的能力(生产),软件能使用的部分(消耗)。软件受到什么限制导致不能利用上该角度全部的性能。
  • kernel per cycle的优势 指标考虑了应用在硬件上的效果

设计的核心:通过利用率 联通 应用和硬件的供需关系

如果能将利用率拆分成: 编写效率,和硬件使用情况。还可以给出程序的最高使用率。

在供需关系的视角下,将Roofline模型拓展到实际生产中的多维度讨论。以便找到系统设计的瓶颈。同时便于系统间间的比较。

系统间比较的视角,更提供了应用寻找最佳硬件的方法

例子

例子,一个应用在分析访存角度时,上限是想消费完全部,但是有来自其他角度的限制,比如计算单元吃不消这么多数据,网络通讯或者下一级存储提供不了这么多数据

例子补充,并行度的限制Restrictline,GPU计算能力强,但是分散在各自单元,对应用的并行度和通讯角度都有要求

可视化

可视化 三维的利用率作为坐标轴。 只有三个指标都为1。意味着是平衡的设计。

画图补充,三维的绝对值的图,可以看出限制维度,不同硬件间的直观对比和应用在硬件上的绝对性能

实验的难点

  1. Naive idea of evaluation: 在三者的模拟器里跑同一个应用,ISA的不同如何处理
  2. MAM 里硬件的参数和软件的特定参数都需要 实现自动化测量。否则就需要对细节了解,硬件有哪些特殊单元,软件算法的计算密度的理论值是多少。

literature review : Workload Characterization

AI

  1. 线性回归[^1]

GPTs Consensus:

当然可以,以下是针对如何确定一个应用是否适合在CPU、GPU、FPGA或PIM上运行的研究概述,而不依赖于AI和机器学习方法:

  1. FPGA用于实时应用和功能安全:在功能安全至关重要的航空航天和国防应用中,FPGA是首选。与CPU和GPU相比,FPGA提供更高的性能、更低的功耗、更低的延迟和更低的实施成本。FPGA能够实时进行面部识别,准确率和精度都很高 (Selvi, Bharanidharan, Qadir, & R., 2021)

  2. 混合GPU-FPGA平台用于机器学习:在混合平台上,机器学习应用的训练部分在GPU上,推理部分在FPGA上,这种设置非常有效。这样的配置提供了相对于基于CPU的解决方案的显著速度优势,FPGA提供了最快的推理速度 (Liu, Ounifi, Gherbi, Lemieux, & Li, 2018)

  3. FPGA在低功耗和高性能方面的优势:随着FPGA技术越来越多地被认可,其在性能和功耗平衡方面具有优势,特别是在边缘设备中。它们适合作为CPU加速器,并在功耗和发热量方面提供了相对于GPU的优势 (Shibata, Ohtsuka, Takahashi, & Okamoto, 2018)

  4. FPGA与GPU和ASIC的能效对比:虽然GPU提供快速的计算速度,但FPGA在较低速度下显示出更好的能源效率。另一方面,ASIC由于针对性设计,在性能和能源消耗方面处于领先地位,但灵活性较低,适合于特定类型的机器学习算法 (Du & Du, 2017)

  5. FPGA用于边缘AI计算:由于FPGA的功耗比GPU和CPU低,因此它们更适合用于边缘AI计算。它们还适用于实时AI应用,这些应用同时需要高吞吐量和低延迟 (Al-Ali, Doremure Gamage, Nanayakkara, Mehdipour, & Ray, 2020)

总结来说,选择CPU、GPU、FPGA或PIM来运行应用程序取决于实时处理需求、能源效率、计算强度和功能安全要求等因素。在需要平衡性能和功效,特别是在实时和边缘计算场景中,FPGA作为一个

强有力的候选者脱颖而出。

参考文献

[^1]: Scheduling Techniques for GPU Architectures with Processing-In-Memory Capabilities
[^2]: PIE
[^3]: PACT 17

Workload Characterization & Priority & Scheduler to CPU/GPU/PIM

http://icarus.shaojiemike.top/2024/01/13/Work/Architecture/workloadPriority/

Author

Shaojie Tan

Posted on

2024-01-13

Updated on

2025-01-30

Licensed under