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

张政馗  等:面向实时应用的深度学习研究综述                                                           2667


                                                                                      3
         实时性能、系统的吞吐量和资源利用率等问题                 [20] .通过在数据采集处理的输入端进行并行设计,S DNN 提出将
         多传感器的数据进行融合,合成数据后,减少了 DNN 任务实例数量.同时还提出 GPU 的 kernel 调度与并行,通过
         将 kernel 切分为 3 部分,基于最小 slack 策略,设计 CUDA 流调度机制实现 kernel 并行执行.Yang 等学者从 CNN
         实际智能驾驶应用提出了共享 CNN 网络的策略,将非关键级的摄像机 4 帧图像压缩合并为一张图片共享一个
         Tiny YOLO 网络,相当于 4 路 CNN 网络并行;同时还提出对网络进行分段处理,在多段过程中增加任务流的并行
         性 [16] .该方案在既不增加 DNN 任务处理延迟又不降低网络识别精度情况下,还增加了网络吞吐量.虽然图像压
         缩后网络精度有一定损失,但对于非关键级别任务,其精度在可接受范围,并且经过再次训练后精度有所提升.
             除此之外,在 DNN 的运行框架层的实时性优化方面,Hang 等学者                  [85] 对 Caffe 框架进行了修改,增加了内存
         管理和垃圾回收机制,提升了处理速度.优化后的 Caffe 框架使得机器学习程序具有时间可预测性.面向实时应
         用的 DNN 网络方面的工作目前比较少,在人工智能全面应用的背景下,如何确保具有深度学习网络功能的实时
         系统的可靠性,是当下的研究热点和难点.深度学习网络应用的实时系统分析挑战一方面来自网络建模的复杂
         性,另一方面来自底层硬件加速平台的透明性.不同于只执行传统任务的实时系统,执行 DNN 任务的实时系统
         不仅要满足任务的实时性约束,还必须满足 DNN 网络模型预测精度的约束.总之,由于 DNN 模型的存在,该系统
         的实时性和可靠性将面临来自系统内部和外部环境的双重不确定性挑战.

         4    GPU 时间分析与调度管理技术

             随着 GPU 在嵌入式领域的应用愈加广泛,特别是深度学习(推理阶段)在 CPU+GPU SoC 上的应用,对 GPU
         的时间分析与调度管理策略的研究已经越来越受到学术界的关注.但当前,GPU 软硬件设计的目标仍然是尽可
         能提高软件的并发度,最大可能榨取 GPU 的运算能力,但这并不能确保系统满足实时约束,例如,一个关键的实
         时任务可能频繁受到其他非关键任务执行的干扰,导致其时间行为不可预测.这些客观事实给 GPU 实时分析与
         调度的研究带来了挑战.学术界对 GPU 实时应用的研究主要包括:(1)  对 GPU 的 WCET 分析;(2) GPU 的调度策
         略;(3)  对 GPU 的计算和内存资源管理.

         4.1   GPU WCET分析
             在传统实时系统研究中,时间分析通常分为两步:首先分析每个程序的 WCET;然后把所有程序的 WCET 作
         为输入,结合实时调度算法,分析系统的可调度性(即每个程序是否能够在截止期前完成).所以,WCET 分析是可
         调度性分析的基础.起初,学术界对 GPU 上执行的 kernel 代码段的 WCET 分析也沿用了类似传统实时系统的研
         究思路:不考虑调度和数据传输的影响,并假设数据已经存在于 GPU 上,然后让 WCET 模型的分析结果尽量逼
         近 kernel 代码的实际执行时间.
             Berezovskyi 等学者早在 2012 年之前就开始了 GPU 上的 WCET 分析,并提出了一个静态分析模型                    [86,87] .该
         模型根据一个 SM 上的可分配 Wrap 数量、kernel 程序的线程数、kernel 程序指令数以及指令集的时钟周期表,
         在一些简化假设下,把 WCET 求解转化成一个整数线性规划(integer linear  programming,简称 ILP)问题.该方法
         可以在几个小时内分析出一个 kernel 程序的 WCET,具有可接受的分析效率.但是该研究存在一些问题:首先,该
         方法假设所有的数据已经在 GPU 上,忽略了数据在系统中的搬运过程;其次,该方法只能分析一个 SM 上的一个
         GPU kernel 程序,而显然,实际系统中一个 SM 上会运行多个 kernel,多个 SM 上的大量 kernel 也是并行运行的.
             此后,Berezovskyi 等学者转向用基于测量的动态方法            [88] 分析 GPU 程序的 WCET.动态方法本质上要实际执
         行被分析的 kernel 程序,因此该方法能够考虑程序对各级存储结构的访问延时,并适用于有多 SM 的 GPU.实际
         上,在只有单个 kernel 任务执行的情况下,动态分析方法获得的 kernel 代码执行时间与静态分析出的 WCET 偏
         差并不大.原因是:其一,kernel 程序遵循 SIMT 模型,其各个线程的访存模式和代码执行模式是非常规律的;其二,
         GPU 调度器为每个 SM 预分配足够的资源以后,SM 在执行时是完全隔离的.但是,动态方法的问题仍然不够安
         全,无法用于硬实时系统.此外,动态方法难以深入剖析程序内部的行为特征,因此难以得到有效信息,指导程序
         性能优化.
             Betts 与 Donaldson 提出一种混合分析技术       [89] 来分析 GPU kernel 程序的 WCET.该方法利用控制流程图
   41   42   43   44   45   46   47   48   49   50   51