Page 49 - 《软件学报》2020年第9期
P. 49

2670                                 Journal of Software  软件学报 Vol.31, No.9,  September 2020

         任务运行尽可能多的线程,则必将导致严重的资源竞争冲突而降低 GPU 性能.更合理的做法是:根据 kernel 任务
         申请资源的互补性,调整各个任务分配的线程块数,从而最小化对资源竞争的冲突.该文还提出 kernel 级动态缓
         存旁路技术来调和并行 kernel 任务对 L1 cache 的竞争,即,只让部分 kernel 任务使用 L1 cache 并旁路掉其他
         kernel 任务使用 L1 cache.不过,该技术需要 GPU 硬件中增加一个位向量,用于标记应该被旁路掉的 kernel 任务.
         最后,利用 GPGPU-Sim 仿真实验展示了两种调度优化技术能够带来平均 1.42 倍的 GPU 性能提升和 1.33 倍的
         能效比提升.Park 等学者在文献[111]中提出一种多任务 GPU 上的动态资源管理方法,GPU 是由多个 SM 组成,
         任务负载在运行的过程中,在每个 SM 上会有不同的分配情况.该方法先对任务的每次运行情况进行性能的监
         听和测量,根据不同设置产生的测试结果,选择最佳的资源划分方案.
             美国北卡罗莱纳大学的 Elliott 与 Anderson 等学者围绕 GPU 实时调度开展了近 5 年的研究工作,提出了
         GPUSync 这一实时调度框架       [112] .GPUSync 框架的主要创新是把 GPU 当作一个共享资源对待,则 GPU 上的实时
         调度问题转化为带有资源共享的实时调度问题.该研究团队在 GPU 实时调度领域还开展了大量实时层面的工
         作,相关的实时调度技术已经集成到了该团队开发的 LITMUS                   RT  实时操作系统中.Anderson 团队的研究成果目
         前是 GPU 实时调度领域最领先的工作.2011 年,Pellizzoni 等学者提出了用于多核 CPU 访存隔离的可预测执行
         模型(predictable execution  model,简称 PREM) [113,114] .PREM 的思想是:把程序划分为冲突敏感的访存阶段
         (contension-sensitive memory  phase)和无冲突的计算阶段(contension-free computation phase),并在任务调度时
         保证两个阶段不会发生重叠,从而避免了访存冲突.受 PREM 启发,瑞士苏黎世联邦理工学院的 Forsberg 等学者
         提出了 GPUguard 软件框架     [54] 来控制 SoC 平台中 CPU 与 GPU 的访存冲突.GPUguard 提供了 CPU/GPU 对共
         享内存的分时访问策略、内存带宽控制机制、访存与计算阶段的同步机制.如图 4 所示,GPUguard 为程序的访
         存阶段和运算阶段设置同步点(sync),并保障 CPU 访存阶段和 GPU 访存阶段在相邻同步分区中交替执行,从而
         消除了 SoC 上因 CPU/GPU 对共享内存的无序访问造成的冲突,提高了程序访存的时间确定性.Forsberg 的研究
         团队把 GPUguard 框架实现为一个 Linux 内核模块和一个 CUDA 应用模块,并在 NVIDIA Tegra TX1 SoC 平台
         上得到了良好的实验结果.Ali 等学者在文献[64]中提出了一种软件框架 BWLOCK++实现对 SoC 内存带宽的控
         制,确保实时任务能够不受非实时且访存密集型任务的干扰.该方法是一种软件机制,利用任务的访存情况与
         GPU 的内存带宽,在 kernel 级别对任务进行访存带宽的限制,从而实现优先确保实时任务的执行.










                                       Fig.4  Execution flow of GPUguard
                                          图 4   GPUguard 运行流图
         5    DNN 与加速器的协同设计技术

             深度学习与网络加速器以两个各自独立的阵营在快速发展,于是有学者指出:这种不匹配的独立发展的现
         状会导致模型的设计目标难免会有未充分考虑最新硬件的情况;反过来,网络加速器的设计也存在未充分考虑
         最新深度网络特征的情况          [115,116] .网络模型与网络加速器的协同设计(co-design),则能够充分发掘硬件潜力,提高
         网络的计算性能(速度、精度、能效比等),从而避免过度设计而导致的成本增加.协同设计可以从两个方面进行:
         (1)  以网络为固定标的,优化加速器的架构;(2)  以加速器为固定标的,优化网络的结构.
             Kwon 等学者展示了如何从这两个方面进行 SqueezeNet 网络和加速器(基于硬件模拟器)之间协同设计                          [116] .
         加速器的架构设计常用的执行流包括:权重固定流(weight stationary,简称 WS)和输出固定流(output stationary,
         简称 OS).针对方向(1),Kwon 通过实验 6 种 DNN 模型发现:WS 流和 OS 流对于不同大小的卷积操作,速度有明
   44   45   46   47   48   49   50   51   52   53   54