卷积模板的翻译 面向向量处理器的二维矩阵卷积的设计与实现

日期:2023-03-11 12:39:36 / 人气: 1183 / 发布者:成都翻译公司

面向向量处理器的二维矩阵卷积的设计与实现张军阳郭阳国防科技大学计算机学院湖南长沙410073摘要为了加速卷积神经网络模型的计算速度便于大规模神经网络模型在嵌入式微处理器中的实现本

矢量处理器二维矩阵卷积的设计与实现 本文以FT-matrix2000矢量处理器架构为研究背景。通过对多核向量处理器架构的分析和对卷积神经网络算法的深入研究,将小规模的卷积核数据放置在标量存储空间中。较大的卷积矩阵放在向量存储中。数据布局方案、施工施工方案、施工方案实例、结构施工方案、营销方案方案模板、施工组织设计(施工方案)、针对矩阵卷积中数据复用难的问题提出了依据 卷积核移动步长的不同动态可配置shuffling模式,通过对所取卷积的元素进行不同的移位操作,大大提高了卷积矩阵数据的复用率矩阵。对于二维矩阵卷积由于数据相关性的存在,多核并行的问题比较困难,多核的问题难以并行化。提出了一种多核并行方案,以与多个核共享卷积矩阵。设计了多核独占多核并行方案。卷积核的大小是恒定的。卷积矩阵大小变化,卷积矩阵大小不变。两种尺度变化的计算方法在主流CPU gtx1080TITI6678FT-matrix2000平台上进行对比分析。*终的实验结果表明,与多核CPU相比,它可以加速高达238倍,相比TI6678,它可以加速21倍。与高性能gtx1080TI相比,可加速663805倍。

尤其是在图像识别 [2] 语音识别 [3] 机器翻译 [4] 基于自然语言处理等领域的深度学习目标识别技术取得重大突破,引发了机器领域的新研究浪潮学习和计算机视觉。深度学习包括卷积神经网络ConvolutionalNeuralNetworkCNN[5-6]Deep Belief NetworkDBN[7-9]Auto-encoder[10]RecurrentNeuralNetwo等一系列神经网络模型,rkRNN[11]等常用模型,尤其是基于CNN的模型,在图像识别领域取得重大突破。目前,几乎所有图像识别任务中识别率*好的模型都是基于CNN的。一般来说,CNN模型有几个卷积层。并且池化层交替出现。*后,它由几个全连接层和分类层组成。卷积层的计算量占整个模型的85以上。[12] 因此,目前很多研究大多针对CNN加速器,如图形处理单元GraphicProcessingUnitGPU[13 -14] Field Programmable Logic Gate Array FieldProgrammableGatedArrayFPGA[15-16] Application Specific Integrated CircuitASIC[17-19] Vector Digital Signal Processor DigitalSignalProcessorDSP等向量处理器架构是新颖的架构之一[20]一般包括标量处理单元和向量处理单元标量计算单元负责标量任务的计算和流量控制。矢量计算单元主要负责大规模的矢量计算。它包括几个矢量处理单元。每个处理单元都包含丰富的计算组件。提高系统计算性能的同时,也对软件开发提出了新的挑战。如何根据矢量处理器、多处理器、多功能组件的架构特点,充分发挥各级并行性,高效矢量化各种应用,是目前面临的主要难点[21]本文针对的难题是卷积神经网络模型中的二维矩阵卷积,结合向量处理器的架构特点,设计了shuffle操作,提高算法的并行性,提高数据复用率方法,针对多输出卷积结果矩阵的计算,提出了加速矩阵卷积计算的多核实现方案,并进行了算法优化和从架构多级存储和计算模式方面进行性能分析。图 1 FT-matrix2000 处理器系统结构 Fig1 ArchitectureofFT-matrix20001 矢量处理器 FT-m 因此,目前很多研究主要针对CNN加速器,如图形处理单元GraphicProcessingUnitGPU[13-14]现场可编程逻辑门阵列FieldProgrammableGatedArrayFPGA[15-16]专用集成电路ASIC[17-19]矢量数字信号处理器DigitalSignalProcessorDSP等矢量处理器架构是一种新颖的架构[20],一般包括一个标量处理单元和一个向量处理单元。标量计算单元负责标量任务的计算,流控矢量计算单元主要负责大规模的矢量计算。它包括几个向量处理。该单元在每个处理单元上包含丰富的计算组件。它具有强大的计算能力,可以大大提高系统的计算性能。同时,也对软件开发提出了新的挑战。充分开发各级并行性以高效矢量化各种应用是目前面临的主要难点[21] 本文针对卷积神经网络模型中二维矩阵卷积的并行难问题,结合矢量处理器的设计架构特点 针对多输出卷积结果矩阵的计算,提出了一种通过shuffle操作提高算法并行度和提高数据复用率的方法。从计算方式等方面进行了算法优化和性能分析。 因此,目前很多研究主要针对CNN加速器,如图形处理单元GraphicProcessingUnitGPU[13-14]现场可编程逻辑门阵列FieldProgrammableGatedArrayFPGA[15-16]专用集成电路ASIC[17-19]矢量数字信号处理器DigitalSignalProcessorDSP等矢量处理器架构是一种新颖的架构[20],一般包括一个标量处理单元和一个向量处理单元。标量计算单元负责标量任务的计算,流控矢量计算单元主要负责大规模的矢量计算。它包括几个向量处理。该单元在每个处理单元上包含丰富的计算组件。它具有强大的计算能力,可以大大提高系统的计算性能。同时,也对软件开发提出了新的挑战。充分开发各级并行性以高效矢量化各种应用是目前面临的主要难点[21] 本文针对卷积神经网络模型中二维矩阵卷积的并行难问题,结合矢量处理器的设计架构特点 针对多输出卷积结果矩阵的计算,提出了一种通过shuffle操作提高算法并行度和提高数据复用率的方法。从计算方式等方面进行了算法优化和性能分析。该单元主要负责大规模的矢量计算。它包括几个矢量处理单元。每个处理单元都包含丰富的计算组件。它具有强大的计算能力,可以大大提高系统的计算性能。同时,也对软件开发提出了新的挑战。矢量处理器多处理单元的多功能组件的架构特点充分发挥了各级并行性。高效矢量化是目前各种应用面临的主要困难。[21] 本文重点介绍卷积神经网络模型中的二维矩阵卷积。难以并行化的问题,结合向量处理器的架构特点,设计了一种通过shuffle操作提高算法并行度和提高数据复用率的方法,并提出了一种加速矩阵卷积来计算多输出卷积结果矩阵。从多级存储和计算模式的架构来计算多核实现方案以及算法优化和性能分析。图1 FT-matrix 2000处理器架构 图1 FT-matrix 2000 1向量处理器架构 FT-m单元主要负责大规模的向量计算。它包括几个矢量处理单元。每个处理单元都包含丰富的计算组件。它具有强大的计算能力,可以大大提高系统的计算性能。同时,它还对软件开发提出了新的挑战。矢量处理器多处理单元的多功能组件的架构特点充分发挥了各级并行性。高效矢量化是目前各种应用面临的主要困难。[21] 本文重点介绍卷积神经网络模型中的二维矩阵卷积。针对难以并行化的问题,结合向量处理器的架构特点,设计了一种通过shuffle操作提高算法并行度和提高数据复用率的方法,并提出了一种加速矩阵卷积用于计算多输出卷积结果矩阵。从多级存储和计算模式的架构来计算多核实现方案以及算法优化和性能分析。图1 FT-matrix 2000处理器架构 图1 FT-matrix 2000 1向量处理器FT-m架构

VeryLongInstructionWordVLIW 架构包括向量处理单元 VectorProcessingUnitVPU 和标量处理单元 ScalarProcessingUnitSPUSPU 负责标量计算和流量控制 VPU 负责向量计算,包括 16 个向量处理单元 VectorProcessingElementVPE 每个 VPE 包含一个本地寄存器文件和 3 个浮点乘法和累加单元,FloatingpointMultiplyAccumulatorFMAC, 2个LoadStores和1个BP,共6个并行功能组件,所有VPE的相同数量的本地寄存器逻辑上组成一个1024位的向量寄存器SPU通过共享寄存器与VPU交换数据。支持广播指令将标量寄存器数据广播到向量寄存器。矢量处理器内核支持 11 条传输和可变长度的 VLIW 指令,其中包括 5 条标量指令和 6 条矢量指令。识别并分派到相应的功能单元执行FT-matrix2000提供96KB标量内存ScalarMemorySM和768KB阵列内存ArrayMemoryAM用于向量访问多核使用DDR和L1D之间共享DDR存储结构支持多核共享全局缓存GlobalCacheGC,方便使用实现核心之间的数据交换和共享 2 矩阵卷积算法介绍与分析 21 卷积神经网络的基本结构 具有代表性的卷积神经网络结构如图 2 所示。该模型主要用于早期的手写数字识别任务 目前的神经网络模型类似于这个模型,主要包括卷积层下采样层全连接层和相应的正则化层。由于卷积神经网络模型中的体积,模型的深度和广度以及连接方法都发生了变化。堆积层的计算时间约占整个模型计算的85次以上。因此,本文主要研究加速卷积神经网络模型中卷积层的计算。图2 典型的卷积神经网络结构 Fig2TypicalstructureofCNN22 二维矩阵卷积 二维矩阵卷积常用于图像处理。卷积神经网络中的卷积操作可以抽象为一组卷积核和一个输入特征图的卷积操作。每一个大小为 kx×ky 的体积,乘积内核在输入特征图上用 kx×ky 卷积窗口进行相应的点积运算,累加求和得到输出特征图中的一个元素。卷积核在输入特征图上从左到下自上而下。向右执行上述操作,*终会得到一个二维输出的特征图。设置水平移动步长为Sx,垂直移动步长为Sy,则输出特征图上的位置为ab元素。输出特征图mo之间的卷积核就是输入特征图和输出特征图之间对应的偏移值。表示输入特征图和对应的输出特征图之间的一组连接。代表非线性激活函数如tanhsigmoid或ReLU 23二维矩阵卷积的常用计算方法图3二维矩阵卷积计算的两种方法图3Twomethodsoftwo-Dimensionmatrixconvolutionforcalculating 3通道2×2卷积核可以得到两个通过卷积计算输出2×2的特征图。我们可以发现,如果采用传统的矩阵卷积计算方法,因为是二维矩阵卷积计算,尤其是当卷积核的规模较小时,算法的并行性就难以保证。因此,北京邮电大学张强强等人。[22]使用新的计算方法将卷积矩阵和卷积核矩阵扩展为矩阵块。卷积计算是通过普通矩阵相乘来进行的,如图3b所示。计算步骤如下:根据卷积核的大小和移动步长,将对应卷积矩阵的对应卷积块展开为列向量。所有展开后的列向量组成一个新矩阵,将单个卷积核矩阵逐行展开成行向量。所有扩展的卷积核形成一个新的卷积核矩阵。将新的卷积矩阵和新的卷积核矩阵做成一个普通矩阵,然后可以通过矩阵乘法核对输入的特征图从上到下从左到右进行上述操作,*后得到一个二维的输出特征将获得地图。设置水平移动步长为Sx,垂直移动步长为Sy,则输出特征图上的位置为ab元素。计算如等式11,其中是输入特征图mi和输出特征图mo之间的卷积核是输入特征图和输出特征图之间对应的偏移值,表示输入特征图和对应的输出特征图之间的连接集合。tanhsigmoid 或 ReLU 等非线性激活函数 23 二维矩阵卷积常用的计算方法 图 3 二维矩阵卷积计算的两种方法 图 3 软二维矩阵卷积计算的两种方法 图 3a 为传统矩阵卷积计算方法 输入为 3 3× 输入特征图 3 输入卷积核为两个 3 通道 2×2 卷积核。通过卷积计算,可以得到两个2×2的输出特征图。我们可以发现,如果采用传统的矩阵卷积计算方法,则是二维矩阵卷积计算,尤其是在卷积核较小的情况下,算法的并行性难以保证。因此,北京邮电大学张强强等人。[22]使用了一种新的计算方法,即卷积矩阵将卷积核矩阵展开成一个矩阵块,然后通过与普通矩阵相乘来进行卷积计算。如图3b所示,计算步骤如下。乘积块扩展为列向量。所有扩展的列向量形成一个新矩阵。将单个卷积核矩阵逐行展开成行向量。所有扩展的卷积核组成一个新的卷积核矩阵,对新的卷积核进行卷积。矩阵和新的卷积核矩阵可以乘以普通矩阵和矩阵。内核对输入的特征图从上到下、从左到右进行上述操作,*终会得到一个二维的输出特征图。设置水平移动步长为Sx,垂直移动步长为Sy,则输出特征图上的位置为ab元素。计算如等式11,其中是输入特征图mi和输出特征图mo之间的卷积核是输入特征图和输出特征图之间对应的偏移值,表示输入特征图和对应的输出特征图。tanhsigmoid 或 ReLU 等非线性激活函数 23 二维矩阵卷积常用的计算方法 图 3 二维矩阵卷积计算的两种方法 图 3 软二维矩阵卷积计算的两种方法 图 3a 为传统矩阵卷积计算方法 输入为 3 3× 输入特征图 3 输入卷积核为两个 3 通道 2×2 卷积核。通过卷积计算,可以得到两个2×2的输出特征图。我们可以发现,如果采用传统的矩阵卷积计算方法,则是二维矩阵卷积计算,尤其是在卷积核较小的情况下,算法的并行性难以保证。所以,北京邮电大学张强强等。[22]使用了一种新的计算方法,即卷积矩阵将卷积核矩阵展开成一个矩阵块,然后通过与普通矩阵相乘来进行卷积计算。如图3b所示,计算步骤如下。乘积块扩展为列向量。所有扩展的列向量形成一个新矩阵。将单个卷积核矩阵逐行展开成行向量。所有扩展的卷积核组成一个新的卷积核矩阵,对新的卷积核进行卷积。矩阵和新的卷积核矩阵可以乘以普通矩阵和矩阵。g 图3a是传统的矩阵卷积计算方法。输入是三个 3×3 的输入特征图。输入卷积核是两个3通道的2×2卷积核。通过卷积计算可以得到两个2×2的卷积核。我们可以发现,如果采用传统的矩阵卷积计算方法,算法的并行性很难保证,尤其是在卷积核较小的情况下。因此,北京邮电大学张强-强[22]采用了一种新的计算方法,将卷积矩阵和卷积核矩阵展开成矩阵块,然后通过乘以普通矩阵进行卷积计算,如图3b所示. 计算步骤如下:卷积核的大小和移动步长将对应卷积矩阵的对应卷积块展开为列向量。所有扩展的列向量形成一个新矩阵。将单个卷积核矩阵逐行展开为行向量。所有扩展卷积核形成一个新的卷积核矩阵。新的卷积矩阵和新的卷积核矩阵可以与普通矩阵和矩阵相乘。g 图3a是传统的矩阵卷积计算方法。输入是三个 3×3 的输入特征图。输入卷积核是两个3通道的2×2卷积核。通过卷积计算可以得到两个2×2的卷积核。我们可以发现,如果采用传统的矩阵卷积计算方法,算法的并行性很难保证,尤其是在卷积核很小的时候。因此,北京邮电大学的张强-强[22]采用了一种新的计算方法,将卷积矩阵和卷积核矩阵展开成一个矩阵块,然后将普通矩阵相乘进行卷积计算,如图3b. 计算步骤如下: 卷积核的大小和移动步长将对应卷积矩阵的对应卷积块展开为列向量。所有扩展的列向量形成一个新矩阵。将单个卷积核矩阵逐行展开为行向量。所有扩展卷积核形成一个新的卷积核矩阵。

通过调用普通BLASBasicLinearAlgebraSubprogramsBLAS[23]函数库中的GEMMGeneralMatrixMultiplicationGEMM来完成二维矩阵卷积的计算,通过图3b所示的方法,将小而难并行的卷积计算模块组合成一个大的形式-scale 矩阵,然后使用矩阵乘法。高并行度提高矩阵卷积的计算效率。因为本文研究的矩阵卷积运算主要用于卷积神经网络模型,而卷积计算的结果通常作为下一层运算的输入值,神经网络模型多层的计算结果具有特定的二维结构。图3b中使用的计算方法通过组合成大规模矩阵,增加了矩阵卷积计算的并行度,但也破坏了卷积计算结果的二维结构。因此,计算结果不能直接作为下一级的输入值。可能需要对卷积结果进行重新排序以用作下一级操作的输入值。同时,由于卷积矩阵经过反复扩展,扩展后的矩阵大小也大大增加。比如2×2卷积核尺度下的3×3卷积矩阵扩展到4×4,数据量增加了778,当卷积矩阵为5×5时,扩展后的卷积矩阵变化了16×5数据量增加到220,片上存储对计算尤为重要。因此,该方法使得数据存储量的增加成为该方法的主要缺陷。3 二维矩阵卷积的矢量化设计与实现第2节传统卷积计算方法分析我们提出了一种新的二维矩阵卷积矢量化实现方法。算法实现过程如下: 1 根据多核向量处理器m的核数,输入特征图的个数n大小为n1×n2 输入卷积核数k 大小为k1×k2 . 向量处理器单核向量存储器容量v1和标量存储器bank容量v2合理划分为多核处理器中各核的计算负荷。2 特征图元素将被输入卷积核矩阵按行连续存储在向量存储库AM中。卷积核矩阵按行连续存储在标量存储库SM中。3 根据单核向量处理单元的数量加载p个输入特征图元素。寄存器和移位寄存器中的元素相乘,相乘结果累加到步骤4中的累加寄存器ACC 6 根据卷积核k1的行数,以列数k2重复上述过程,直到输出特征图的第一行元素的计算完成。7 根据输入特征图的行数n1和列数n2加载输入特征图的下一行。重复以上步骤完成整个卷积结果矩阵。计算卷积神经网络模型中卷积核的尺度一般比较小,通常是1×13×35×57×711×11等,根据我们的算法,卷积核数据需要是标量的,所以将卷积核数据设置在放置在AM中的SM输入特征图矩阵中,向量化过程如下: 31 单核程序向量化方法1 我们以双精度浮点数为例。单个数据为 8 个字节。为了描述,我们将输入特征图设置为 N×N。方阵为N×N×8768×1024,所以向量存储库AM中一次可以存储的*大输入特征图尺寸为222×222。对于嵌入式处理器编程,当输入特征图的大小大于222×222时,我们需要通过DMA从外部存储器DDR加载数据。其他行的计算过程类似16个PE加载输入矩阵B的第一行元素 b11b12b13b14b15b16 标量加载卷积核矩阵的第一行元素k11广播k11到向量寄存器,即向量寄存器为k11k11k1对下一行元素重复以上步骤,完成整个卷积结果矩阵的计算。卷积神经网络模型中卷积核的大小一般比较小,通常是1×13×35×57×711×11等,根据我们的算法,体积是需要的。乘积核心数据需要取一个标量,所以卷积核心数据放在SM输入特征图矩阵中,放在AM中。矢量化过程如下:31 单核程序向量化方法1 我们以双精度浮点数为例。单个数据为 8 个字节。出于叙述的目的,我们将输入特征图设置为一个 N×N 方阵,然后是 N×N×8768×1024,因此向量存储器 AM 中单次可以存储的*大输入特征图大小为 222 ×222。对于嵌入式处理器编程来说,当输入特征图的大小大于222×222时,我们需要通过DMA从外部存储器DDR中加载数据。图4 FT-matrix2000矩阵卷积算法映射B6×6步长1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2 我们用一个例子来说明如何同时计算输出卷积矩阵的多个元素的向量化时间不展开卷积矩阵。考虑一个1×6 PEsPE1PE2PE3PE4PE5PE6输入特征图矩阵I为6×6卷乘积核心矩阵为2×2步长为1,为简单起见,我们只描述第一行的计算输出结果矩阵如图4所示。其他行的计算过程与16个PE类似。加载输入矩阵 B 的第一行 b11b12b13b14b15b16 标量 加载卷积核矩阵第一行的第一个元素 k11 并将 k11 广播到向量寄存器,即向量寄存器中的元素为 k11k11k1 重复上述步骤下一行元素完成整个卷积结果矩阵的计算。卷积神经网络模型中卷积核的大小一般比较小,通常为1×13×35×57×711×11等,根据我们的算法,音量是必需的。乘积核心数据需要取一个标量,所以卷积核心数据放在SM输入特征图矩阵中,放在AM中。矢量化过程如下: 31 单核程序矢量化方法 1 我们以双精度浮点数为例。单个数据为 8 个字节。出于叙述的目的,我们将输入特征图设置为一个 N×N 方阵,然后是 N×N×8768×1024,因此向量存储器 AM 中单次可以存储的*大输入特征图大小为 222 ×222。对于嵌入式处理器编程来说,当输入特征图的大小大于222×222时,我们需要通过DMA从外部存储器DDR中加载数据。图4 FT-matrix2000矩阵卷积算法映射B6×6步长1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2 我们用一个例子来说明如何同时计算输出卷积矩阵的多个元素的向量化时间不展开卷积矩阵。考虑一个 1×6 PEsPE1PE2PE3PE4PE5PE6 输入特征图矩阵 I 为 6×6 体积 乘积核心矩阵为 2×2,步长为 1。为简单起见,我们只描述第输出结果矩阵如图4所示。其他行的计算过程与16个PE类似。加载输入矩阵B的第一行 b11b12b13b14b15b16 scalar 加载卷积核矩阵第一行的第一个元素k11,将k11广播到向量寄存器,即 向量寄存器中的元素为k11k11k1通过DMA在R中加载数据。 图4 FT-matrix2000矩阵卷积算法映射B6×6步长1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2 不展开举例说明卷积矩阵。如何同时计算输出卷积矩阵的多个元素的向量化实现方法考虑一个1×6 PEsPE1PE2PE3PE4PE5PE6输入特征图矩阵I为6×6卷积核矩阵为2×2步长为1为简单起见,我们只描述输出结果矩阵第一行元素的计算如图4所示,其他行的计算过程与16个PE的计算过程类似。加载输入矩阵 B 的第一个元素。 b11b12b13b14b15b16。卷积核矩阵第一行的第一个元素。向量寄存器,即向量寄存器中的元素为k11k11k1在R中通过DMA加载数据。 图4 FT-matrix2000矩阵卷积算法映射B6×6步长1×1kernel2×2 Fig4AlgorithmmappingofFT-matrix2000B6×6stride1×1kernel2×2以不展开卷积矩阵为例进行说明。如何同时计算输出卷积矩阵的多个元素的向量化实现方法考虑一个1×6 PEsPE1PE2PE3PE4PE5PE6输入特征图矩阵I为6×6卷积核矩阵为2×2步长为1为简单起见,我们只描述输出结果矩阵第一行元素的计算如图4所示,其他行的计算过程与16个PE的计算过程类似。加载输入矩阵 B 的第一个元素。 b11b12b13b14b15b16。卷积核矩阵第一行的第一个元素。向量寄存器,即向量寄存器中的元素为k11k11k1

1k11k11k11通过向量处理器的乘加指令VFMULAD,每个PE完成对应元素与k11的乘法,并将乘法结果累加到对应的累加寄存器ACC中。2 根据卷积核的移动步长配置对应的shuffle模式如图5所示,如本例所示,因为移动步长为1,所以配置的shuffle模式为移动对应向量寄存器中的元素向左 1 位。*左边的元素移出寄存器,*右边的元素补0。当前PEs对应移位。元素为b12b13b14b15b160,同时加载卷积核第一行的第二个元素k12,广播到向量寄存器,即k12k12k12k12k12。通过向量乘加指令,每个PE完成对应元素与k12的相乘,并将相乘结果累加为1。累加寄存器ACC中的36个PE加载输入矩阵B的第二行元素b21b22b23b24b25b26。标量加载卷积核矩阵第二行的第一个元素k21,并将其广播到向量寄存器。通过向量乘加指令,所有PE完成相应的元素和卷积。核心元素k21的乘法运算和乘法结果累加到累加寄存器2中 4中的shuffle方式与2中相同,3中取的元素移位。移位完成后,当前PE对应的元素为b22b23b24b25b260。同时标量加载卷积核矩阵第二行的第二个元素,广播到向量寄存器,即k22k22k22k22k22k22。使用向量乘加指令完成对应元素与k22的乘法运算,并将结果累加到3个ACC中的累加寄存器完成。步骤4中,累加寄存器中的值为卷积结果矩阵第一行的元素。图 5 步长为 1 的 shuffle 操作。以下优点不需要将输入特征图和卷积核重新组织成大规模矩阵来提高并行性,减少矩阵扩展带来的存储压力,增加数据的利用率。在向量化代码的优化过程中,我们可以通过软件流水线来提高算法的并行性。在完全流水线的情况下,每个镜头可以同时计算输出特征图的一行元素。同时,也避免了文献[15]中使用的PEs数组之间频繁的数据移动。6 Double Buffer 机制展示 Fig6 Doublebuffermechanism2 当输入特征图的大小超过向量内存条的容量时,无法一次性添加向量内存条。加载整个输入特征图。在高性能计算中,需要平滑各级存储之间的数据移动,以保证内核计算所需的数据供应,实现高效的处理器效率。因为FT-matrix2具有寄存器文件L1DArrayMemoryGlobalCache和DDR和L1D等多级存储结构,可以配置为full Cache和full SRAM两种模式。因此,当输入特征图的数量超过向量存储库的容量时,我们使用 SRAM 将 L1D 配置为全 SRAM,并使用双缓冲乒乓模式来平滑多级存储。数据传输的结构使内核的计算与DMA数据移动完全重叠,使内核始终处于峰值运行状态,以达到*佳的计算效率。双缓冲机制如图6所示,值得注意的是卷积计算有数据重叠,所以是在volume中。当乘积矩阵按照卷积核的大小分块传输时,第二次传输的卷积矩阵需要有部分数据与第一次传输的数据重叠。假设卷积核的大小为m×m。如果第一次传输是1到n行那么第二次需要重叠第一次传输的*后m-1行元素的传输。因为卷积核一般都比较小,所以重叠传输数据的比例不大。32矩阵卷积的多核程序设计与分析算法不仅仅是单核并行。内部矢量化实现还包括多核内核间并行性。由于FT-matrix2000是多核处理器,研究矩阵卷积的多核并行性也很重要,尤其是大规模矩阵卷积,由于需要核间并行性。考虑到计算负载的多核划分算法的相关性、核之间的通信开销等,多核程序的设计较为复杂。因为目前的卷积神经网络模型中卷积层的计算规模存在于1×1到512×512之间,而且一般都是卷积核尺寸较小的矩阵卷积运算。因此,在矩阵卷积的多核实现中,单个输入特征图一般不会分配给多个核进行计算。相反,每个核心负责独立的卷积计算。输入特征图是多核共享卷积核矩阵。多核的独特方式是矩阵卷积的多核实现。图7 FT-matrix2000矩阵卷积多核实现方案 Fig7 MulticoreimplementaSRAM 两种模式。因此,当输入特征图的数量超过向量存储库的容量时,我们使用 SRAM 将 L1D 配置为完整的 SRAM。使用双缓冲乒乓模式,平滑多级存储结构的数据传输,使内核计算和DMA 数据移动完全重叠,让内核始终处于峰值运行状态,达到*佳计算效率. 双缓冲机制如图6所示。 值得注意的是,由于卷积计算有数据重叠,所以在卷积矩阵分块传输时是基于卷积核的。卷积矩阵的第二次传输的大小需要有部分数据与第一次传输的数据重叠。假设卷积核的大小为m×m,如果第一次传输是1到n行,则第二次传输需要与第一次传输重叠。*后m-1行传输的元素一般都比较小,因为卷积核一般都比较小,所以重叠传输数据的比例不大。32矩阵卷积的多核编程分析算法的并行性不仅有单核内部的向量化实现,还包括多核核。由于FT-matrix2000是多核处理器,研究矩阵卷积的多核并行性,尤其是大规模矩阵卷积,也是一个重要的内容。由于核间并行性需要考虑计算负载的多核划分算法的相关性、核间的通信开销等,因此多核程序的设计较为复杂。因为目前卷积神经网络模型中卷积层的计算规模存在于1×1到512×512之间,而且一般是卷积核尺寸较小的矩阵体积。所以,在矩阵卷积的多核实现中,一般不会将单个输入的特征图分配给多个核进行计算。相反,每个核负责独立的卷积计算,即通过与多个核共享输入特征图,卷积核矩阵多核以独特的方式实现多核矩阵卷积图7 FT-matrix2000矩阵卷积多核-core实现方案SRAM两种模式。因此,当输入特征图的数量超过向量存储库的容量时,我们使用 SRAM 将 L1D 配置为完整的 SRAM。使用双缓冲乒乓模式,平滑多级存储结构的数据传输,使内核计算和DMA 数据移动完全重叠,让内核始终处于峰值运行状态,达到*佳计算效率. 双缓冲机制如图6所示。 值得注意的是,由于卷积计算有数据重叠,所以在卷积矩阵分块传输时是基于卷积核的。卷积矩阵的第二次传输的大小需要有部分数据与第一次传输的数据重叠。假设卷积核的大小为m×m,如果第一次传输是1到n行,则第二次传输需要与第一次传输重叠。*后m-1行传输的元素一般都比较小,因为卷积核一般都比较小,所以重叠传输数据的比例不大。32矩阵卷积的多核编程分析算法的并行性不仅有单核内部的向量化实现,还包括多核核。由于FT-matrix2000是多核处理器,研究矩阵卷积的多核并行性,尤其是大规模矩阵卷积,也是一个重要的内容。由于核间并行性需要考虑计算负载的多核划分算法的相关性、核间的通信开销等,因此多核程序的设计较为复杂。因为目前卷积神经网络模型中卷积层的计算规模存在于1×1到512×512之间,而且一般是卷积核尺寸较小的矩阵体积。因此,在矩阵卷积的多核实现中,一般不会将单个输入的特征图分配给多个核进行计算。相反,每个核负责独立的卷积计算,即通过与多个核共享输入特征图,图7 FT-matrix2000矩阵卷积多核实现方案多核小32矩阵卷积的多核程序设计与分析算法的并行性不仅实现了单核内部向量化,也实现了多核的核间并行。由于FT-matrix2000是多核处理器,矩阵卷积的多核并行性也是一个问题。重要的内容尤其是对于大规模矩阵卷积。因为核之间的并行需要考虑计算负载的多核划分算法的相关性,核之间的通信开销等,由于当前卷积神经网络模型中的体积,多核程序的设计更加复杂。乘积层的计算规模存在于1×1到512×512之间,一般为矩阵卷积运算,卷积核尺寸较小。因此,在矩阵卷积的多核实现中,单个输入特征图一般不会分配给多个每个核负责独立的卷积计算,即矩阵卷积的多核实现是通过共享输入特征图具有卷积核矩阵的多个核。矩阵卷积的多核实现如图7 多核实现方案图7多核实现a小32矩阵卷积的多核程序设计与分析算法的并行性不仅是单核内部向量化的实现,还包括互- 多核的核心并行性。由于FT-matrix2000是多核处理器,矩阵卷积的多核并行性也是一个问题。重要的内容尤其是对于大规模矩阵卷积。因为核之间的并行需要考虑多核划分算法的计算负载、核之间的通信开销等的相关性,由于当前卷积神经网络模型中的体积,多核程序的设计更加复杂。乘积层的计算规模存在于1×1到512×512之间,一般为矩阵卷积运算,卷积核尺寸较小。因此,在矩阵卷积的多核实现中,单个输入特征图一般不会分配给多个每个核负责独立的卷积计算,即矩阵卷积的多核实现是通过共享输入特征图具有卷积核矩阵的多个核。矩阵卷积的多核实现如图7 多核实现方案 Fig7Multicoreimplementa 乘积层的计算规模存在于1×1到512×512之间,一般为矩阵卷积运算,卷积核尺寸较小。因此,在矩阵卷积的多核实现中,单个输入特征图一般不会分配给多个每个核负责独立的卷积计算,即矩阵卷积的多核实现是通过共享输入特征图具有卷积核矩阵的多个核。矩阵卷积的多核实现如图7 多核实现方案 Fig7Multicoreimplementa 乘积层的计算规模存在于1×1到512×512之间,一般为矩阵卷积运算,卷积核尺寸较小。因此,在矩阵卷积的多核实现中,单个输入特征图一般不会分配给多个每个核负责独立的卷积计算,即矩阵卷积的多核实现是通过共享输入特征图具有卷积核矩阵的多个核。矩阵卷积的多核实现如图7 多核实现方案 Fig7Multicoreimplementa 单个输入特征图一般不会分配给多个核,每个核负责独立的卷积计算,即通过与卷积核矩阵的多个核共享输入特征图来实现矩阵卷积的多核。矩阵卷积的多核实现如图7 多核实现方案 Fig7Multicoreimplementa 单个输入特征图一般不会分配给多个核,每个核负责独立的卷积计算,即通过与卷积核矩阵的多个核共享输入特征图来实现矩阵卷积的多核。矩阵卷积的多核实现如图7 多核实现方案 Fig7Multicoreimplementa

tionofmatrixconvolutiononFT-matrix2000 另外,由于在矩阵卷积的计算过程中,由于卷积核的大小和卷积核在输入特征图上的滑动步长,在单次卷积的计算过程中存在一定的数据相关性,所以考虑多核同步。单输入特征图卷积计算的通信开销不容易进行多核并行化。因此,本文主要针对单个卷积矩阵的单核向量化设计。当有多个独立的卷积计算时,使用多个核并行加速多输出矩阵。卷积的多核实现如图7所示。 DDR中的输入特征图被广播到n个计算核,而n核将不同的卷积核加载到n核标量存储器SM,那么每个多核程序实现的核的计算过程与单核程序相同。4 性能测试与分析 本次实验对比平台为AMDA10-6700APU,4核4线程,DDR316G内存,主频37GHz,GPU平台为NVIDIAGeForceGTX1080TI11GB显存,核心频率15GHz,NVIDIA使用cudnn高度优化卷积计算。24] 基于 Torch[25] 神经网络编程框架 FT-matrix2000 平台单核内部向量存储空间 768KB 标量存储空间 96KB 外部核心 DDR *大支持 128GB 时钟频率 1GHz 使用 TI 的函数库和性能统计和优化高性能多核数字信号处理器TMS320C66788内核125GHz主频每个内核有32KB的L1P和32KB的L1D,基于CCS55软件编程平台完成所有程序代码测试和性能统计。飞腾平台采用类似CCS的FT-matrix2000软件编程平台,完成FT-matrix2000矢量程序代码的编译和性能统计。核心代码程序采用基于手工汇编的方法进行软件流水线和循环展开优化。通过第22节的分析,可以看出二维矩阵卷积是典型的计算密集型和访问者。当前卷积神经网络模型中的存储密集型操作和矩阵卷积的计算占整个模型计算的85个以上。因此,本实验选择两种计算方式来分析第一类卷积矩阵不变卷积核矩阵在尺度上的相应增加。第二种卷积核矩阵。不变卷积矩阵尺度也相应增加。图中所有类似的16×5代表一个16×165×5的方阵,都是64位双精度浮点数。图8是基于卷积核的。FT-matrix2000 和 CPU6678 随尺度变化 FT-matrix2000 和 CPU6678 的加速基于内核尺度变化 图 8 显示了 FT-matrix2000 对 CPU 和 TI6678 的加速随着卷积核大小的变化。可以看出,FT-matrix2000矢量处理器相比主流多核CPU实现了2444倍的加速。与TI6678相比,加速比为1417倍。图 9 显示了具有相同卷积核大小的 FT-matrix2000。FT-matrix2000基于CPU和TI6678的加速比在这种计算模式下是主流CPU的14238倍。不等速加速比是TI6678的1321倍。图 9 基于卷积矩阵变化的 FT-matrix2000 和 CPU6678 的加速比。-matrix2000矢量处理器相比主流CPU和TI6678的性能优势。由于我们的算法主要用于卷积神经网络中卷积层的计算卷积模板的翻译,所以采用的数据计算规模并不大。从图中可以看出,在矩阵体积的情况下卷积模板的翻译,乘积计算规模较小时,可以获得较大的加速比,但当矩阵尺寸增大时,加速比减小,基本保持稳定。可见,这两种计算方式对程序的执行性能都有一定的影响。图10是基于卷积核的尺度。改变了FT-matrix2000相对GPU加速比图10SpeedupofFT-matrix2000andGPUbasedonkernelscalechange,主流多核CPU实现了2444倍的加速,相比TI6678实现了1417倍的加速。图 9 显示了卷积核大小相同的 FT-matrix2000,输入矩阵大小基于 CPU 和 TI6678 的加速而变化。在这种计算模式下,与主流CPU相比,实现了14238倍的加速,相比TI6678实现了1321倍的加速。图9 基于卷积矩阵变化的FT-matrix2000和CPU6678的加速比。图9展示了FT-matrix2000向量处理器在两种卷积计算模式下相对于主流CPU和TI6678的性能优势。由于我们的算法主要用于卷积神经网络中卷积层的计算,所取数据的计算规模并不大。从图中可以看出,当矩阵卷积计算的规模较小时,可以获得较大的加速比,而当矩阵规模增大时,加速比减小,基本保持稳定。可以看出这两种计算方式对程序的影响很大 实现性能有一定影响 图10 FT-matrix2000相对于基于卷积核大小变化的GPU加速比 图10SpeedupofFT-matrix2000和GPUbasedonkernelscalechange主流多核CPU实现了2444倍的提速,相比TI6678实现了1417倍的提速。图 9 显示了卷积核大小相同的 FT-matrix2000,输入矩阵大小基于 CPU 和 TI6678 的加速而变化。在这种计算模式下,与主流CPU相比,实现了14238倍的加速,相比TI6678实现了1321倍的加速。图9 基于卷积矩阵变化的FT-matrix2000和CPU6678的加速比。图9展示了FT-matrix2000向量处理器在两种卷积计算模式下相对于主流CPU和TI6678的性能优势。由于我们的算法主要用于卷积神经网络中卷积层的计算,所取数据的计算规模并不大。从图中可以看出,当矩阵卷积计算的规模较小时,可以获得更大的加速比,当矩阵规模增大时,加速比减小,基本保持稳定。可以看出这两种计算方式对程序的影响很大 实现性能有一定影响 图10 FT-matrix2000相对于基于卷积核大小变化的GPU加速比 图10SpeedupofFT-matrix2000和GPUbasedonkernelscalechange矩阵2000向量的性能优势处理器对比主流CPU和TI6678。由于我们的算法主要用于卷积神经网络中卷积层的计算,所以采用的数据计算规模并不大。从图中可以看出是矩阵卷积。当计算规模较小时,可以获得较大的加速比,但当矩阵规模增大时,加速比减小,基本保持稳定。可见,这两种计算方式对程序的执行性能都有一定的影响。图10是基于卷积核尺度的变化。FT-matrix2000相对GPU加速比图10SpeedupofFT-matrix2000和GPU基于内核尺度变化matrix2000矢量处理器相比主流CPU和TI6678的性能优势。由于我们的算法主要用于卷积神经网络中卷积层的计算,所以采用的数据计算规模并不大。从图中可以看出是矩阵卷积。当计算规模较小时,可以获得较大的加速比,但当矩阵规模增大时,增速比下降,基本保持稳定。可见,这两种计算方式对程序的执行性能都有一定的影响。图10是基于卷积核尺度的变化。FT-matrix2000的相对GPU加速比 Fig10SpeedupofFT-matrix2000andGPUbasedonkernelscalechange

相关阅读Relate

  • 法国签证营业执照翻译件模板 你与申根签证只有一条推送的距离
  • 江苏省增值税发票翻译模板 江苏税务局出口货物退(免)税申报管理系统软件
  • 肄业证书翻译模板 复旦大学学生学业证明文书管理细则(试行)
  • 四级英语作文模板带翻译 大学英语四级翻译模拟训练及答案
  • 社会某信用代码证翻译模板 js验证某社会信用代码,某社会信用代码 验证js,js+验证+社会信用代码证
  • 美国移民证件翻译模板 日语签证翻译聊聊身份证翻译模板
  • 翻译软件模板 人类史上*实用的的文档快速翻译指南
  • 江苏省增值税发票翻译模板 江苏出口货物退(免)税申报管理服务平台
  • 瑞士签证房产证翻译件模板 瑞士探亲签证—就读子女
  • 日语户口本翻译模板 户口本翻译价格_户口本翻译一般多少钱?
  • 卷积模板的翻译 面向向量处理器的二维矩阵卷积的设计与实现 www.chinazxzy.com/fymb/7241.html
    
    本站部分内容和图片来源于网络用户和读者投稿,不确定投稿用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的权利,请联系:chinazxzy@163.com,及时删除。
    Go To Top 回顶部
    • 扫一扫,微信在线