深度卷积神经网络(Convolutional Neural Network, CNN)在图像识别领域发挥着至关重要的作用[1-2], 并且逐渐扩展到其他领域, 例如围棋[3]、自动驾驶[4]等。随着应用场景和问题复杂性的增加[5-6], CNN正变得越来越“深”。研究表明, CNN的深度已经从最初的数十层发展到当前的上千层[7-8], 深度的增加带来计算量的激增, 因此需要更强大的计算能力来支持整个神经网络的训练[9-10]。
神威·太湖之光[11]是目前全世界排名第3的超级计算机, 其使用申威26010众核处理器, 单处理器的峰值双精度浮点运算速度为3.06 Tflops, 整机理论浮点运算速度达到125 Pflops。该处理器片上包含260个异构核心, 组成4个核组, 每个核组包含1个主核与64个从核。在单个核组的工作环境下, 64个从核按照8×8 mesh结构组合成一个从核阵列, 其主核是一个通用处理器核心, 能够独立执行完整的进程, 而从核阵列是集成在处理器片上的加速器, 执行由主核创建的轻量级线程。在存储结构上, 主核有两级cache结构, 而从核只有指令cache但其可提供64 KB可编程的局部存储。申威处理器提供直接内存操作(Direct Memory Access, DMA)以完成主从核之间的数据传输, DMA操作是一个函数接口, 由用户指定主核和从核的数据地址以及传输数据块的大小。此外, 申威处理器还提供寄存器通信以完成相同行或者相同列从核间的数据传输, 寄存器通信包括2条汇编指令, 由用户提供数据地址和接收数据的从核行号或列号。将神威·太湖之光作为CNN训练的硬件平台能够缓解当前CNN计算能力不强的问题, 推动国产处理器在人工智能领域的发展。
然而, 神威·太湖之光深度学习库swDNN[12]中的并行卷积算法存在批量受限的问题, 不具备通用性, 而传统的gemm算法[13]在申威处理器上效率较低。针对以上问题, 本文基于卷积计算过程, 使用7层循环计算卷积, 提出一种无批量限制的通用并行卷积算法。通过数据重用和软件流水[14]等方法降低从核访存开销, 并使用手动向量化方法来提高从核的计算能力。将奇数从核与偶数从核按相反方向迭代, 以解决数据重用导致的从核同步问题和不同行列之间从核通信效率低的问题。
1 算法分析 1.1 卷积神经网络CNN由多个网络层组成, 其中卷积层是CNN的核心[15-16]。测试结果显示, 在典型的CNN中, 如AlexNet[17]、GoogLeNet[18]、VGG[19]、LeNet-5[20]和U-Net[21]等, 卷积层的计算时间占比在90%以上, 因此, 可通过优化卷积层来加快整个CNN的训练和预测速度。CNN中的卷积层是一种特殊形式的批量卷积计算[22], 表 1给出卷积计算的相关参数。
![]() |
下载CSV 表 1 卷积参数及其含义 |
本节主要描述卷积的前向形式, 其输入、卷积核和输出都是4维张量, 分别用D∈
$ f(H, R, u, padh)=\frac{H-R+1+2 p a d h}{u} $ | (1) |
定义函数g并考虑卷积的跨步、填充等, 得到如下公式:
$ g(p, u, R, r, padh)=p \cdot u+R-r-1-padh $ | (2) |
为方便起见, 令FF=F[k, c, r, s], D0是zero-padding的输入D, DD=D0[n, c, g(p, u, R, r, padh), g(q, v, S, s, padw)], ∀n∈[0, N)∀k∈[0, K)∀p∈[0, P)∀q∈[0, Q), 则卷积的前向如式(3)所示。
$ \boldsymbol{O}[n,k,p,q] = \sum\limits_{c = 0}^{C - 1} {\sum\limits_{r = 0}^{R - 1} {\sum\limits_{s = 0}^{S - 1} \boldsymbol{F F} \cdot \boldsymbol{D D}} } $ | (3) |
卷积计算涉及一个7层嵌套循环, 具体如算法1所示。本文提出的无批量限制通用并行卷积算法基于7层嵌套循环, 将计算任务划分到申威处理器的64个从核上。
算法1 7层循环算法
输入 D、F
输出 O
for(n=0;n<N; n++)
for(k=0;k<K; k++)
for(p=0;p<P; p++)
for(q=0;q<Q; q++)
for(c=0;c<C; c++)
for(r=0;r<R; r++)
for(s=0;s<S; s++)
$ {{\rm{O}}_{[{\rm{n}}][{\rm{k}}][{\rm{p}}][{\rm{q}}] + }} = {{\rm{D}}_{[{\rm{n}}][{\rm{c}}][{\rm{p}}][{\rm{q}}]}} \times {{\rm{F}}_{[{\rm{k}}][{\rm{c}}][{\rm{p}} + {\rm{s}}][{\rm{q}} + {\rm{t}}]}} $ |
swCaffe[23]是在神威·太湖之光上的深度学习框架, 其使用传统gemm算法, 利用矩阵乘法实现卷积计算。算法主要分为数据重组和矩阵乘法2个部分。由于数据是以[N, C, H, W]的形式存储于内存中, 因此并不需要转换输出和卷积核数据, 而只需重组输入数据(代码由C/C++语言编写, 数据以行优先存储)。输入数据的重组过程难以利用从核阵列优化, 主要有以下2个方面的原因:
1) 如图 1所示, 数据重组不同于矩阵转置, 其非常不规则, 只有当C是64的倍数时, 才能充分利用从核阵列完成每个通道的数据重组。
![]() |
Download:
|
图 1 矩阵乘法计算卷积的过程 |
2) 当利用从核重组数据时, 主从核之间需要进行数据传输, 会加大数据重组的额外开销。
矩阵乘法计算调用申威处理器提供的blas库实现, 具体过程如式(4)~式(6)所示。
令D=[N, C, H, W], F=[K, C, R, S], 矩阵乘法为MN=MKmm×KmmN, 其中:
$ {M = K} $ | (4) |
$ {N = (H + 2padh - R + 1) \cdot (W + 2padw - S + 1)} $ | (5) |
$ {{K_{mm}} = C \cdot R \cdot S} $ | (6) |
由图 1和式(4)~式(6)可知, 数据转换后的矩阵非常不规则, 维度N远大于维度M和维度Kmm, 导致矩阵乘法的效率不高。以输入(4, 32, 512, 512)、卷积核(32, 32, 3, 3)为例, 计算可得M=32, N=262 144, Kmm=288。经测试发现, 在浮点计算次数相同的情况下, 即M=1 024, N=1 024, Kmm=2 304, 其计算性能是不规则情况下的12倍左右。
1.3 swDNN并行卷积算法swDNN并行卷积算法使用另一种形式的矩阵乘法计算卷积。去除式(3)中的卷积参数, 并令O=O[n, k, p, q], 将式(3)转化为式(7):
$ \mathit{\boldsymbol{O}} = \sum\limits_{c = 0}^{C - 1} {\sum\limits_{r = 0}^{R - 1} {\sum\limits_{s = 0}^{S - 1} \mathit{\boldsymbol{D}} } (n, c, p + r, q + s) \cdot \mathit{\boldsymbol{F}}(k, c, r, s)} $ | (7) |
根据累加具有交换律, 并改变输入和卷积核的数据维度, 可得到式(8)。
$ \mathit{\boldsymbol{O}} = \sum\limits_{r = 0}^{R - 1} {\sum\limits_{s = 0}^{S - 1} {\sum\limits_{c = 0}^{C - 1} \mathit{\boldsymbol{F}} (r, s, k, c) \cdot \mathit{\boldsymbol{D}}(p + r, q + s, c, n)} } $ | (8) |
其中,
swDNN并行卷积算法限制数据批量的主要原因是从核阵列完成了矩阵乘法、向量化和数据分块, 三者同时对K、C产生限制。利用申威从核计算矩阵乘法, 需将输入和卷积核数据均匀分布在64个从核上, 使得N、K、C必须是8的倍数。为获得更好的性能, 利用从核提供的256位双精度浮点SIMD指令加快核心计算速度, 但必须加大对N、K、C的限制。由于从核的向量寄存器只能存储4个标量数据(单精度浮点占用双精度浮点的前32位), 因此对N、K、C的限制需增加到32(4×8)的倍数。为获取较高的DMA访存带宽, swDNN将数据分块, 进而加大了对批量的限制, 使得批量必须是128的倍数。
2 无批量限制的通用并行卷积算法基于申威从核加速的矩阵乘法是swDNN并行卷积算法批量受限的主要原因, 针对该问题的一种解决方案是设计基于7层循环的通用并行卷积算法。与swDNN并行卷积算法相比, 新型的并行卷积算法不受批量以及其他卷积参数的限制, 其通用性大幅提高。
通用并行卷积算法的设计和优化主要分为任务划分、数据重用、软件流水设计和手动向量化4个部分。其中, 任务划分是为了将算法并行化, 数据重用和软件流水设计可降低从核访存开销, 手动向量化则用于加速核心计算。其中, 任务划分过程将计算任务分配到64个从核上, 需要在主从核之间进行数据传输。在申威处理器上, 主从核之间的数据传输由DMA访存完成, 该访存是一个函数接口, 由用户指定主从核内存地址和传输的数据块大小。经测试发现, 从核访存占整个算法运行时间的45%左右, 本文通过设计DMA操作与计算的软件流水, 并利用从核内与从核间的数据重用方法降低从核的访存开销。
2.1 任务划分任务划分与并行的具体操作是利用每个从核运行一个独立的线程完成一项任务。任务划分方式受数据重用和从核访存效率2个因素的影响。任务划分将计算过程分成64份, 由于从核LDM存在容量限制(64 KB), 使得一份任务所需的数据不能一次性加载到从核中。因此, 任务划分应该尽可能地考虑每个从核相邻2次计算之间的可重用数据, 从而使用数据重用的方法降低从核访存的开销。此外, 从核访存的效率受到数据块的影响, DMA操作在不同情况下能达到4 GB/s~36 GB/s的数据带宽, 经测试发现, 当传送的数据块大于256 Byte且数据连续时带宽较高。
受上述2个因素的影响, 本文提出的并行卷积算法的伪代码如算法2所示, 其任务划分的方法是每个从核负责计算输出的相邻的多行数据, 且每次DMA操作为计算一行输出提供输入数据。上述任务划分方式使得从核在多次加载数据时存在可重用数据, 因此可使用数据重用的方法降低从核访存的开销。在卷积核是3×3的情况下, 每次计算所需的输入数据是3行, 输出数据是1行, 无论输入还是输出都为连续数据。在数据是单精度浮点类型的情况下, 只要输入数据的宽度超过22且输出数据的宽度超过64, DMA访存就能取得较高的带宽, 因此, 大多数CNN都能满足上述要求。
算法2 并行卷积算法
for(n=0;n<N; n++)
for(k=0;k<K; k++)
DMA get R×S kernel into slave_kernel
for(sp=0;sp<SP; sp++){//SP代表每个从核负责//计算的行数
Set slave_output to 0
for(c=0;c<C; c++){
DMA get R×W input into slave_input, start at core_id×SP+sp
for(r=0;r<R; r++)
for(s=0;s<S; s++)
slave_output += slave_input×slave_kernel
DMA put 1×Q slave_output into output, start at core_id×SP+sp
}
}
2.2 数据重用减少从核访存开销的一种解决方法是从核内与从核间的数据重用。第2.1节提出的任务划分方法使得在每个从核内, 相邻的2次数据加载存在可重用数据, 在相邻的2个从核间, 前一个从核内层循环的最后一次迭代与后一个从核内层循环的第1次迭代存在可重用数据。
2.2.1 从核内的数据重用以3×3的卷积核为例, 在每个从核内, 对于输入而言, 下一次计算所需的前2行数据与上一次计算的后2行数据相同, 从核内的数据重用将这2行相同数据保存下来, 提供给下一次计算, 如图 2所示。本文采用指针的方法来消除从核内数据移动所带来的开销。定义指针f1、f2、f3, 初始时3个指针分别指向输入数据的前3行, 当使用输入数据完成计算后, 对f1、f2、f3循环赋值, 即f1=f2、f2=f3。在DMA访存时, 指定指针f3为从核接收数据的地址, 继续重复上述过程直至当前从核完成所有的计算任务。从核内的数据重用使得DMA访存只需获取下一行的数据即可, 减少了大约2/3的主从核通信。
![]() |
Download:
|
图 2 从核内的数据重用 |
在相邻从核间, 上一个从核的最后一次迭代与下一个从核的第1次迭代所需数据相同, 因此, 可以使用寄存器通信完成从核间的数据重用。寄存器通信包括2条汇编指令, 由用户提供数据地址和接收数据从核的行号或列号。从核间的数据重用存在2个问题:
1) 由于申威从核仅支持同行或同列从核之间的通信, 不同行列从核之间数据通信开销较大, 如7号核和8号核(从核核号0~63)。解决此问题的方法是放弃部分从核间的数据重用, 将64个从核分成32对, 而只在相邻核(如0号核和1号核、2号核和3号核)之间进行数据重用。
2) 由于前一个从核的计算末尾与后一个从核的计算起始存在可重用数据, 如果直接进行从核间的数据同步, 会导致性能下降。解决此问题的方法是反向迭代奇数号从核的内存循环(内存循环用于迭代每个从核负责计算输出的行数), 使存在数据重用的2个从核在最后一次迭代时才进行数据同步。
优化后的从核间数据重用和迭代顺序如图 3所示, 具体的代码如算法3所示。假设每个从核利用3次DMA访存加载不同的数据并完成计算, 偶数号从核加载第3次计算所需的数据而奇数号从核加载第1次计算所需的数据, 奇数号从核的剩余两行数据由偶数号从核利用寄存器通信提供, 在输入规模较小, 即每个从核负责计算的行数较少时, 从核间的数据重用方法可以有效减少从核访存开销。
![]() |
Download:
|
图 3 从核间的数据重用 |
算法3 从核间的数据重用算法
if(core_id % 2 == 0){
DMA get R×W input into slave_input, start at core_id×SP+SP-1
PUTRlast two row data//PUTR代表寄存器通信
Compute and DMA put …
for(sp=SP-2;sp>=0;sp-—){
DMA get R×W input into slave_input, start at core_id×SP+sp
Compute and DMA put …
}
}
else if(core_id % 2 == 1){
GETR two row data into memory//GETR代表寄存器通信
DMA get 1×W input into slave_input, start at core_id×SP+2
for(sp=1;sp<SP; sp++){
DMA get R×W input into slave_input, start at core_id×SP+sp
Compute and DMA put …
}
}
2.3 软件流水减少从核访存开销的另一个方法是实现计算和访存的延迟隐藏。申威处理器提供的DMA操作是异步的, 从核在发起DMA操作之后, 不需要等待数据传输完成即可执行其他无关的计算, 实现计算和访存的软件流水。在每个核组内, 可重用数据和剩余所需数据是独立的, 在从核对剩余数据发起DMA请求后, 即可对重用数据进行计算, 在DMA操作完成后, 计算剩余数据并累加两部分的计算结果。流水线的效率在很大程度上取决于计算时间与DMA访存时间的占比, 经测试发现, DMA访存大约是计算时间的2/3。
本文使用DMA访存和计算之间的二级软件流水进一步降低通信开销, 在计算的同时利用DMA访存加载剩余计算所需的数据, 具体如算法4所示。软件流水是一种通用的优化手段, 在计算和访存占比相当并且不存在依赖问题时, 软件流水可有效降低访存开销。
算法4 软件流水算法
DMA get 1×W input into f3
using f1、f2 compute part of output
while(DMA get not complete)
using f3 compute part of output
accumulate output
DMA put 1×Q output
2.4 手动向量化卷积计算的核心操作类似向量内积, 将输入与卷积核的对应数据相乘并累加。因此卷积计算中存在大量的乘加操作, 可以利用申威处理器提供的向量乘加运算进行优化, 提高浮点计算性能。手动向量化的示意图如图 4所示, 其核心操作单指令多数据(Single Instruction Multiple Data, SIMD)设计包括3个部分:1)向量乘法(vmuld), 输入数据的第1行与卷积核对应数据作向量乘法得到v1; 2)向量乘加(vmad), 输入数据的第2行乘以卷积核对应数据并加上v1得到v2, 重复上述过程得到v3; 3)向量提取(vextf), 将v3中的前3个元素提取并累加。在卷积核是3×3的情况下, 计算核心理论上能取得近3倍的加速, 由于从核缺少单个向量的规约指令, 只能先将向量中的每个元素提取到标量中, 再对标量进行累加, 这在一定程度上降低了SIMD的性能。
![]() |
Download:
|
图 4 手动向量化示意图 |
为提高SIMD的并行效率, 将计算过程循环展开4次, 增加数据无关指令, 减少因数据依赖导致的硬件流水线停顿。另外, 将得到的4个v3向量进行转置(vshff)并累加, 得到4个输出结果, 减少了大量的向量提取操作和标量运算。
3 实验结果与分析 3.1 实验环境与参数设置本次实验的平台是申威26010众核处理器的单个核组以及Intel Xeon CPU E5-2660 v4(@2.20 GHz)服务器。实验所使用的数据是自动生成的随机浮点数据, 评价指标是运行时间。
实验主要分为3个部分, 即将无批量限制的通用并行卷积算法分别与基础7层循环算法、gemm算法以及商用平台进行性能对比。在测试不同批量时, 本文提出的并行卷积算法得到加速, 由于swDNN并行卷积算法不具备通用性, 其只有在非常特殊的情况下才能获得较好的加速性能, 因此本文并未与之进行比较。
3.2 本文算法与基础7层循环算法的比较将基础7层循环算法与本文并行化后的版本进行比较。实验设置64组, N=1, 2, …, 64。在每组测试样例中, 设置4个不同的输入规模且H与W相等, 分别为64、128、256和512, 固定K和C为32。实验性能指标为加速比, 比较批量相同时2种算法的性能差异。令TN1表示使用基础算法计算第N组数据的总时间, TN2表示本文并行算法计算第N组数据的总时间, 则加速比的计算过程如下:
$ \begin{aligned} T_{N}=& \sum \limits_{H=W=64}^{512} t_{H, W} \\ speedup(N) &=\frac{T_{N}^{1}}{T_{N}^{2}} \end{aligned} $ | (9) |
基础7层循环算法与本文算法的对比结果如图 5所示, 并行化后的算法相对于基础算法的加速比稳定在90左右, 不受批量大小的影响。实验结果证明, 本文提出的并行卷积算法可解决swDNN并行卷积算法批量受限的问题。
![]() |
Download:
|
图 5 本文算法与基础7层循环算法的加速性能比较 |
将本文提出的并行卷积算法与swCaffe深度学习框架中的gemm算法进行比较。实验设置15组, 其中, N=4, 8, …, 64。在每组测试样例中, 设置4个不同的输入规模, H和W相等, 分别为64、128、256和512, 并固定K和C为32。实验性能指标也是加速比, 结果如图 6所示。由图 6可知, 本文的并行卷积算法相对gemm算法的加速比稳定在4.0~4.5, 不受批量的影响。
![]() |
Download:
|
图 6 本文算法与gemm算法的加速性能比较 |
选择Intel平台上的MKL-DNN卷积[24]与本文算法进行比较。实验设置64组, N=1, 2, …, 64。在每组测试样例中, 设置4个不同的输入规模, H和W相等, 分别为64、128、256和512, 固定K和C为32。实验性能指标为加速比, 结果如图 7所示。
![]() |
Download:
|
图 7 本文算法与Intel MKL-DNN性能比较 |
由图 7可知, 本文提出的并行卷积算法相对于MKL-DNN的加速比随着批量的增大逐渐趋于平缓, 从14.0降低至3.7, 这是由于MKL-DNN使用矩阵乘法实现卷积, 在批量较小时的加速性能并不好。
4 结束语针对swDNN并行卷积算法批量受限和申威处理器上传统gemm卷积算法效率不高的问题, 本文提出一种通用并行卷积算法。通过设计DMA操作与计算的软件流水, 并结合从核内与从核间的数据重用方法来降低从核访存开销, 采用手动向量化的方法来提高浮点的计算性能。将64个从核分为32对, 并使奇数号从核与偶数号从核按照相反方向迭代, 以解决数据重用方法带来的从核同步问题和不同行列之间从核通信效率低的问题。实验结果表明, 该算法的加速比较高且不受批量的影响。下一步将把该算法集成到神威·太湖之光深度学习框架或者深度学习库中, 以实现卷积神经网络在神威·太湖之光上的应用。
[1] |
GIRSHICK R. Fast R-CNN[C]//Proceedings of IEEE International Conference on Computer Vision. Washington D. C., USA: IEEE Press, 2015: 1440-1448.
|
[2] |
ZHOU Feiyan, JIN Linpeng, DONG Jun. Review of convolutional neural network[J]. Chinese Journal of Computers, 2017, 40(6): 1229-1251. (in Chinese) 周飞燕, 金林鹏, 董军. 卷积神经网络研究综述[J]. 计算机学报, 2017, 40(6): 1229-1251. |
[3] |
MNIH V, KAVUKCUOGLU K, SILVER D, et al. Playing Atari with deep reinforcement learning[EB/OL].[2019-01-05].https://arxiv.org/pdf/1312.5602v1.pdf.
|
[4] |
BOJARSKI M, DEL TESTA D, DWORAKOWSKI D, et al. End to end learning for self-driving cars[EB/OL].[2019-01-05].https://arxiv.org/pdf/1604.07316.pdf.
|
[5] |
ROSKA T, CHUA L O. The CNN universal machine:an analogic array computer[J]. IEEE Transactions on Circuits and Systems II:Analog and Digital Signal Processing, 2015, 40(3): 163-173. |
[6] |
CHEN Hongcai, CHENG Yu, ZHANG Changyou. Application of convolutional neural network in vehicle target detection[J]. Journal of Software, 2017, 28(S1): 107-114. (in Chinese) 陈宏彩, 程煜, 张常有. 卷积神经网络在车辆目标快速检测中的应用[J]. 软件学报, 2017, 28(S1): 107-114. |
[7] |
LIAN Yiya, WU Xiaojun. Research on image super-resolution reconstruction of super deep convolutional neural network[J]. Computer Engineering, 2019, 45(1): 217-220. (in Chinese) 连逸亚, 吴小俊. 超深卷积神经网络的图像超分辨率重建研究[J]. 计算机工程, 2019, 45(1): 217-220. |
[8] |
SZEGEDY C, IOFFE S, VANHOUCKE V, et al. Inception-v4, inception-resnet and the impact of residual connections on learning[EB/OL].[2019-01-05].https://arxiv.org/pdf/1602.07261.pdf.
|
[9] |
GUPTA S, ZHANG Wei, WANG Fei. Model accuracy and runtime tradeoff in distributed deep learning: a systematic study[C]//Proceedings of 2016 IEEE International Conference on Data Mining. Washington D. C., USA: IEEE Press, 2016: 171-180.
|
[10] |
KRIZHEVSKY A. One weird trick for parallelizing convolutional neural networks[EB/OL].[2019-01-05].https://arxiv.org/pdf/1404.5997.pdf.
|
[11] |
FU Haohuan, LIAO Junfeng, YANG Jinzhe, et al. The Sunway Taihu Light supercomputer:system and applications[J]. Science China Information Sciences, 2016, 59: 1-16. |
[12] |
FANG Jiarui, FU Haohuan, ZHAO Wenlai, et al.swDNN: a library foraccelerating deep learning applications on Sunway Taihu Light[C]//Proceedings of 2017 IEEE International Parallel and Distributed Processing Symposium. Washington D. C., USA: IEEE Press, 2017: 615-624.
|
[13] |
JIA Yangqing, SHELHAMER E, DONAHUE J, et al. Caffe: convolutional architecture for fast feature embedding[EB/OL].[2019-01-05].https://arxiv.org/pdf/1408.5093.pdf,2014:675-678.
|
[14] |
YU Yang, AN Hong, CHEN Junshi, et al. Pipelining computation and optimization strategies for scaling GROMACS on the Sunway many-core processor[C]//Proceedings of International Conference on Algorithms and Architectures for Parallel Processing. Berlin, Germany: Springer, 2017: 18-32.
|
[15] |
LAVIN A, GRAY S. Fast algorithms for convolutional neural networks[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2016: 4013-4021.
|
[16] |
MATHIEU M, HENAFF M, LECUN Y. Fast training of convolutional networks through FFTs[EB/OL].[2019-01-05].https://arxiv.org/pdf/1312.5851.pdf.
|
[17] |
KRIZHEVSKY A, SUTSKEVER I, HINTON G E. Imagenet classification with deep convolutional neural networks[C]//Proceedings of the 25th International Conference on Neural Information Processing Systems. New York, USA: ACM Press, 2012: 1097-1105.
|
[18] |
SZEGEDY C, LIU Wei, JIA Yangqing, et al. Going deeper with convolutions[C]//Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2015: 1-9.
|
[19] |
SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[EB/OL].[2019-01-05].https://arxiv.org/pdf/1409.1556.pdf.
|
[20] |
LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324. DOI:10.1109/5.726791 |
[21] |
RONNEBERGER O, FISCHER P, BROX T. U-net: convolutional networks for biomedical image segmentation[C]//Proceedings of International Conference on Medical Image Computing and Computer-assisted Intervention. Berlin, Germany: Springer, 2015: 234-241.
|
[22] |
CHETLUR S, WOOLLEY C, VANDERMERSCH P, et al.cuDNN: efficient primitives for deep learning[EB/OL].[2019-01-05].https://arxiv.org/pdf/1410.0759.pdf.
|
[23] |
FANG Jiarui, FU Haohuan, JIANG Jinlei, et al.swCaffe: a parallel framework for accelerating deep learning applications on Sunway Taihu Light[C]//Proceedings of 2018 IEEE International Conference on Cluster Computing. Washington D. C., USA: IEEE Press, 2018: 413-422.
|
[24] |
WANG Endong, ZHANG Qing, SHEN Bo, et al. High-performance computing on the Intel® Xeon Phi[M]. Berlin, Germany: Springer, 2014: 167-188.
|