CN105678378B - 间接访问样本数据以在并行处理系统中执行多卷积操作 - Google Patents
间接访问样本数据以在并行处理系统中执行多卷积操作 Download PDFInfo
- Publication number
- CN105678378B CN105678378B CN201510884505.3A CN201510884505A CN105678378B CN 105678378 B CN105678378 B CN 105678378B CN 201510884505 A CN201510884505 A CN 201510884505A CN 105678378 B CN105678378 B CN 105678378B
- Authority
- CN
- China
- Prior art keywords
- image
- memory
- address
- convolution
- filter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 100
- 239000011159 matrix material Substances 0.000 claims abstract description 136
- 230000015654 memory Effects 0.000 claims abstract description 124
- 238000000034 method Methods 0.000 claims description 32
- 230000003362 replicative effect Effects 0.000 claims description 3
- 241001269238 Data Species 0.000 abstract description 2
- 238000003860 storage Methods 0.000 description 28
- 238000013527 convolutional neural network Methods 0.000 description 26
- 238000010586 diagram Methods 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 15
- 239000000047 product Substances 0.000 description 14
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 238000013316 zoning Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000007667 floating Methods 0.000 description 4
- 238000005243 fluidization Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 238000004040 coloring Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 238000003475 lamination Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/172—Classification, e.g. identification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/50—Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/56—Extraction of image or video features relating to colour
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/95—Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/14—Image acquisition
- G06V30/142—Image acquisition using hand-held instruments; Constructional details of the instruments
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Human Computer Interaction (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Processing (AREA)
Abstract
本发明公开了间接访问样本数据以在并行处理系统中执行多卷积操作。在本发明的实施例中,卷积引擎配置并行处理管道,以执行多卷积操作。更具体地,卷积引擎配置并行处理管道以独立地生成和处理单个的图像拼贴。在操作中,针对每个图像拼贴,管道基于一个或多个开始地址以及一个或多个偏移来计算输入图像批中所包括的源地址。结果,管道将数据从源位置复制到图像拼贴。管道随后在图像拼贴和滤波器拼贴之间执行矩阵乘操作,以生成图像拼贴对输出矩阵的贡献。为了优化所使用的存储器的量,管道按需地在共享存储器中创建每个图像拼贴。另外,为了优化矩阵乘操作的吞吐量,偏移值由卷积预处理器预计算。
Description
相关申请的交叉引用
本申请要求具有序列号62/087,681(律师存档号14-SC-0391-USL)并且于2014年12月4日递交的美国临时专利申请的权益。该相关申请的主题内容通过引用被结合于此。
技术领域
本发明的实施例一般涉及计算机处理,并且更具体地,涉及间接访问样本数据以在并行处理系统中执行多卷积操作。
背景技术
卷积神经网络(CNN)通常被用于高效且可靠地解决大量推理问题。例如,CNN被包括在许多图像识别、笔迹识别,以及语音翻译算法中。在操作中,与许多更简单的机器学习技术相比,CNN可大幅度地降低错误率。但是,执行CNN所要求的时间通常超过了执行更简单的机器学习技术所要求的时间。因此,以产生差的结果为代价,对时间敏感的应用可被结构化为实现更简单的机器学习技术。
一般而言,执行CNN所要求的时间主要由CNN执行“多卷积”操作所要求的时间占据。多卷积操作是样本数据(诸如,图像)和滤波器之间的多维卷积操作的一种广义形式。多卷积操作通常利用基于模板(stencil-based)的技术或利用快速傅里叶变换(FFT)来实现。虽然基于模板的技术和基于FFT的技术可以使得某些卷积操作更加有效地实现,但是,这种技术一般不能允许多卷积操作在全维度以及通常与标准CNN相关联的额外参数的范围上高效地执行。
在这方面,CNN通常包括多个“卷积层”,其中每个卷积层跨越样本数据批的多个维度以及滤波器堆栈的多个维度来执行卷积操作。例如,针对涉及图像样本的四维CNN,样本数据批是批量的图像,并且图像批(imagebatch)的四个维度包括图像宽度、图像高度、每个图像的颜色平面数量,以及图像批中的图像数量。滤波器堆栈的四个维度包括滤波器宽度、滤波器高度、每个滤波器的特征平面数量,以及滤波器堆栈中的滤波器数量。额外的参数可进一步定制多卷积操作。例如,水平滤波器步幅和垂直滤波器步幅可通过减小卷积操作中所涉及的像素的子集合的大小来降低整个计算负荷。显著地,图像批和滤波器堆栈的维度以及额外参数通常在卷积层之间变化。
基于模板的技术通常被调谐以优化跨越相对较小的维度和参数的子集的多卷积操作。但是,跨越其他维度和参数的基于模板的技术的性能通常超过了执行更简单的机器学习技术所要求的时间。结果,如以上所提及的,利用基于模板的技术来执行许多CNN所要求的时间通常难以接受的长。也如以上所提及的,基于参数值,利用基于FFT的方式来执行许多CNN所要求的时间也戏剧性地变化。
一种减少跨越大范围的参数值来执行CNN所要求的时间的方式结合了如下观察---卷积是线性操作符,并且因此可被降至矩阵乘。这种方式要求将样本数据扩展成所要求的矩阵形式。更具体地,在这种实现中,卷积引擎将图像批转换成以列为主的图像矩阵,并且将滤波器堆栈表述成滤波器矩阵。结果,卷积引擎在图像矩阵和滤波器矩阵之间执行矩阵乘操作。显著地,图像矩阵和滤波器矩阵的维度对应于CNN的独立参数的子集的乘积,而非单个参数。结果,跨越不同的数据维度和参数,基于矩阵的技术展示了相对均一的性能特征。另外,由于针对许多类型的处理单元中的每一个所写入的代码库包括经优化的矩阵乘例程,因此,经由上述方式执行CNN所要求的时间可以显著地少于利用基于模板或基于FFT技术来执行CNN所要求的时间。
在卷积引擎中实现这种基于矩阵的操作的一个缺点是,作为将图像批进行扩展以适当地建立矩阵乘操作的一部分,卷积引擎不得不将图像数据复制到图像矩阵的多个位置。结果,图像矩阵的大小可增加至可用存储器被完全消耗的程度。例如,假设图像宽度是W,图像高度是H,每个图像的颜色平面的数量是C,以及图像批中的图像数量是N。另外,假设每个输出图像的维度是(P×Q)。在这种情境中,图像矩阵的维度将是(N×P×Q)×(C×R×S)。在许多系统中,存储这样大小的图像矩阵所需要的空间可能超过存储器中的可用空间。
为了降低存储器使用同时经由经优化的矩阵乘例程来执行多卷积,可实现基于拼贴(tile)的卷积引擎,其将并行处理管道配置为独立扩展并处理图像矩阵的单个拼贴。在这种方式中,并行处理管道按需地执行地址计算,以在共享的存储器中扩展图像矩阵的每个拼贴。并行处理管道随后在图像拼贴和滤波器堆栈之间执行矩阵乘操作。由于经扩展的图像矩阵以每次一个拼贴地被直接扩展至共享的存储器,因此,矩阵从不被整体存储,并且与典型的基于矩阵的卷积引擎相比,所使用的并行处理存储器的量可被戏剧性地减少。
但是,基于拼贴的卷积引擎的一个缺点是,计算以正确的次序来载入图像数据所需的地址序列以扩展经扩展的图像矩阵的拼贴涉及执行一序列的依赖型整数操作。该整数操作的序列通常要求执行相对大量的时钟周期。通常,执行整数操作所要求的时钟周期的数量可能超过执行矩阵乘操作所要求的时钟周期的数量。结果,没有完全实现经优化的矩阵乘例程的效果,并且用来执行CNN的整体时间可能难以接受的长。
更具体地,矩阵乘中的每个循环迭代针对浮点数学操作的数量设定大小,以覆盖负载的存储器延迟。例如,一个实现针对10个存储器负载可具有100个数学操作。通常,这10个存储器负载执行得相对较快,并且随着100个数学操作完成,将返回。但是,如果每个这种存储器操作采用额外10个整数操作,每一个依赖于之前的操作,其带有10个时钟延迟,则生成10个地址的花销是100个周期---这与计算用以服务那些存储器负载的存储器延迟之前的数学操作数量相匹配。如果那些存储器负载自身采用平均10个周期,则我们现在采用200个周期来载入存储器,相比于采用100个周期来计算浮点数学操作,这导致100个周期其中没有有用的数学来覆盖存储器延迟,这伤害了整体效率。
如之前所阐释的,现有技术中所需的是更加有效的方式来执行多卷积操作。
发明内容
本发明的一个实施例给出了一种用于执行多卷积操作的计算机实现的方法。所述方法包括:基于第一存储器中所存储的第一图像拼贴中所包括的第一目的地地址,选择第一开始地址;基于所述第一目的地地址,标识第一偏移;基于所述第一开始地址和所述第一偏移,计算第二存储器中所存储的图像批中所包括的第一源地址;将数据从所述第一源地址复制到所述第一目的地地址;以及在复制所述数据之后,在所述第一图像拼贴和第一滤波器拼贴之间执行一个或多个矩阵乘操作。
另外,其他的实施例提供非暂时性计算机可读介质和系统,其被配置为实现以上给出的方法。
所公开的技术的一个优点是,应用可以经由经优化的矩阵乘例程来执行多卷积操作,同时优化并行处理存储器使用。具体地,在运行中扩展虚拟图像矩阵的每个图像拼贴的同时预计算偏移减小了与计算地址相关联的延迟。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考示实施例得到对如上面所简要概括的本公开更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本公开的典型实施例,因此不应被认为是对其范围的限制,因为本发明可以允许其他等效的实施例。
图1是示出了被配置为实现本发明的一个或多个方面的计算机系统的框图;
图2是根据本发明的各种实施例的、包括在图1的并行处理子系统中的并行处理单元的框图;
图3是根据本发明的各种实施例的、包括在图2的并行处理单元中的通用处理集群的框图;
图4示出了根据本发明的各种实施例的、与多卷积操作相关联的图像批、滤波器堆栈,以及输出批;
图5示出了根据本发明的各种实施例的、图4的图像批与虚拟图像矩阵之间的关系;
图6示出了根据本发明的各种实施例的、图4的图像批、偏移序列,以及图5的虚拟图像矩阵之间的关系;
图7示出了根据本发明的各种实施例的、配置为生成图6的偏移序列的图1的卷积预处理器;
图8示出了根据本发明的各种实施例的、配置为执行多卷积操作的图1的卷积引擎;
图9是根据本发明的各种实施例的、用于在并行处理系统中执行多卷积操作的方法步骤的流程图。
具体实施方式
在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。
系统概述
图1是示出了计算机系统100的框图,其被配置为实现本发明的一个或多个方面。如所示,计算机系统100包括但不限于,中央处理单元(CPU)102和经由存储器桥105以及通信路径113耦合至并行处理子系统112的系统存储器104。存储器桥105还经由通信路径106耦合至I/O(输入/输出)桥107,并且I/O桥107被依次耦合至交换机116。
在操作中,I/O桥107被配置为从诸如键盘或鼠标之类的输入设备108接收用户输入信息,并且将输入信息经由通信路径106和存储器桥105转发至CPU 102用于处理。交换机116被配置为提供I/O桥107和计算机系统100的其他组件之间的连接,诸如网络适配器118以及各种插入卡120和121。
如所示,I/O桥107被耦合至系统盘114,该系统盘114可被配置为存储内容和应用以及数据,以供CPU 102和并行处理子系统112使用。一般而言,系统盘114针对应用和数据提供非易失性存储,并且可包括固定的或可移动的硬盘驱动、闪存设备,以及CD-ROM(紧致盘只读存储器),DVD-ROM(数字通用盘ROM),蓝光光盘,HD-DVD(高清DVD),或者其他磁的、光学的,或固态存储设备。最后,虽然未明确示出,诸如通用串行总线或其他端口连接、紧致盘驱动、数字通用盘驱动、电影录音设备等之类的其他组件也可被连接至I/O桥107。
在各种实施例中,存储器桥105可以是北桥芯片,并且I/O桥107可以是南桥芯片。另外,通信路径106和113以及计算机系统100内的其他通信路径可利用任意技术上合适的协议来实现,其包括但不限于,AGP(加速图形端口),超传输,或现有技术中已知的任何其他总线或点对点通信协议。
在某些实施例中,并行处理子系统112包括图形子系统,其将像素传送至显示设备110,该显示设备110可以是任何惯常的阴极射线管,液晶显示器,光发射二极管显示器等。在这种实施例中,并行处理子系统112合并了针对图形和视频处理优化了的电路,其例如包括视频输出电路。如在以下图2中更加详细地描述的,这种电路可跨越包括在并行处理子系统112中的一个或多个并行处理单元(PPU)被合并。在其他实施例中,并行处理子系统112合并针对通用目的和/或计算处理优化了的电路。再次,这种电路可跨越包括在并行处理子系统112中的一个或多个PPU被合并,该一个或多个PPU被配置为执行这种通用目的和/或计算操作。在又一实施例中,包括在并行处理子系统112中的一个或多个PPU可被配置为执行图形处理,通用处理,以及计算处理操作。
如所示,系统存储器104包括至少一个设备驱动器175和卷积子系统180。设备驱动器175被配置为管理并行处理子系统112中的一个或多个PPU的处理操作。卷积子系统包括但不限于,卷积预处理器182和卷积引擎184。卷积预处理器182执行被设计为提高卷积引擎184的效率的计算,并且卷积引擎184被配置为执行多卷积操作。
卷积预处理器182可在CPU 120,并行处理子系统112,或其任意组合上执行。卷积引擎184在并行处理子系统112上执行,并且并行处理子系统112执行包括在库中的经优化的矩阵乘例程。显著地,这种多卷积操作主要占据了执行卷积神经网络(CNN)所要求的时间。虽然未示出,但是系统存储器104还包括在CPU 102上执行的任意数量的软件应用,可发布控制PPU的操作的命令,并且可利用卷积子系统180,以高效地执行CNN。
在各种实施例中,并行处理子系统112可与图1的一个或多个其他元件集成,以形成单个系统。例如,并行处理子系统112可与CPU 102和单个芯片上的其他连接电路集成,以形成片上系统(SoC)。
将理解,此处所示的系统是阐释性的,并且变形和修改是可能的。连接拓扑,包括桥的数量和布置,CPU 102的数量,以及并行处理子系统112的数量,可按照希望的修改。例如,在某些实施例中,系统存储器104可被直接连接至CPU 102,而非通过存储器桥105,并且其他设备可经由存储器桥105和CPU 102与系统存储器104进行通信。在其他可替代的拓扑中,并行处理子系统112可被连接至I/O桥107或直接连接至CPU 102,而非连接至存储器桥105。在又一实施例中,I/O桥107和存储器桥105可被集成为单个芯片,而非作为一个或多个分立的设备存在。最后,在某些实施例中,图1中所示的一个或多个组件可能不在。例如,可去除交换机116,并且网络适配器118和插入卡120、121将直接连接至I/O桥107。
图2是根据本发明的各种实施例的、包括在图1的并行处理子系统112中的并行处理单元(PPU)202的框图。虽然图2描绘了一个PPU 202,但是,如以上所指示的,并行处理子系统112可包括任意数量的PPU 202。如所示,PPU 202被耦合至本地并行处理(PP)存储器204。可利用一个或多个集成电路设备来实现PPU 202和PP存储器204,诸如可编程处理器、专用集成电路(ASIC),或存储器设备,或以任何技术上可行的方式。
在某些实施例中,PPU 202包括图形处理单元(GPU),其可被配置为实现图形渲染管道,以基于CPU 102和/或系统存储器104提供的图形数据来执行与生成像素数据相关的各种操作。当处理图形数据时,PP存储器204可被用作图形存储器,其存储一个或多个惯常的帧缓冲器,并且如果需要的话,还存储一个或多个其他渲染目标。此外,PP存储器204可被用来存储和更新像素数据,并且传送最终的像素数据或显示帧至显示设备110以用于显示。在某些实施例中,PPU 202还可被配置用于通用处理和计算操作。
在操作中,CPU 102是计算机系统100的主处理器,其控制并协调其他系统组件的操作。具体地,CPU 102发布控制PPU 202的操作的命令。在某些实施例中,CPU 102将针对PPU 202的命令流写入到数据结构(图1或图2中未明确示出)中,该数据结构可位于系统存储器104、PP存储器204、或可访问CPU 102和PPU 202二者的另一存储位置。指向数据结构的指针被写入至推缓冲器(pushbuffer)中,以发起对数据结构中的命令流的处理。PPU 202从推缓冲器读取命令流,并且随后相对于CPU 102的操作来异步地执行命令。在生成了多个推缓冲器的实施例中,可由应用程序经由设备驱动器175针对每个推缓冲器指派执行优先权,以控制对不同推缓冲器的调度。
如所示,PPU 202包括I/O(输入/输出)单元205,其经由通信路径113和存储器桥105与计算机系统100的其余部分通信。I/O单元205生成用于在通信路径113上传输的分组(或其他信号),并且还从通信路径113接收所有进来的分组(或其他信号),其将进来的分组引导至PPU 202的合适的组件。例如,与处理任务相关的命令可被引导至主机接口206,而与存储器操作(例如,从PP存储器204读取或写入至PP存储器204)的命令可被引导至交叉开关单元210。主机接口206读取每个推缓冲器,并且将存储在推缓冲器中的命令流传输至前端212。
如以上结合图1所述,PPU 202至计算机系统100的其余部分的连接可以变化。在某些实施例中,包括至少一个PPU 202的并行处理子系统112可实现为插入卡,其可被插入至计算机系统100的扩展槽中。在其他实施例中,PPU 202可用总线桥来集成在单个芯片上,诸如存储器桥105或I/O桥107。再次,在另一实施例中,PPU 202的某些或全部元件可与CPU102一起被包括在单个集成电路或片上系统(SoC)中。
在操作中,前端212将从主机接口206接收的处理任务传输至任务/工作单元207中的工作分布单元(未示出)。工作分布单元接收指向处理任务的指针,该处理任务被编码为任务元数据(TMD)并存储在存储器中。指向TMD的指针被包括在命令流中,该命令流作为推缓冲器被存储并且从主机接口206由前端单元212接收。可被编码为TMD的处理任务包括索引,该索引与将要处理的数据以及状态参数和定义了如何处理数据的命令相关联。例如,状态参数和命令可定义将要在数据上执行的程序。任务/工作单元207从前端212接收任务,并且确保在初始化每个TMD所指派的处理任务之前,GPC 208被配置为有效状态。可以针对每个TMD指派优先级,该优先级被用于调度处理任务的执行。还可从处理集群阵列230接收处理任务。可选地,TMD可包括参数,该参数控制TMD被添加至处理任务列表(或者指向处理任务的指针的列表)的头部还是尾部,从而提供对执行优先级的另一级别的控制。
有优势地,PPU 202基于包括C个一般处理集群(GPC)208(其中C≥1)的集合的处理集群阵列230来实现高度并行的处理体系架构。每个GPC 208能够并发执行大量的(例如,成百或上千的)线程,其中每个线程是程序的实例。在各种应用中,不同的GPC 208可被分配用于处理不同类型的程序或用于执行不同类型的计算。取决于针对每种类型的程序或计算所引起的工作负荷,对GPC 208的分配可以不同。
存储器接口214包括D个分区单元215(其中D≥1)的集合。每个分区单元215被耦合至驻于PPM存储器204内的一个或多个动态随机存取存储器(DRAM)220。在一个实施例中,分区单元215的数量等于DRAM 220的数量,并且每个分区单元215被耦合至不同的DRAM 220。在其他实施例中,分区单元215的数量可以不同于DRAM 220的数量。本领域技术人员将理解,可以用其他任何技术上合适的存储设备来替代DRAM 220。在操作中,诸如纹理贴图和帧缓冲器之类的各种渲染目标可跨越DRAM 220存储,这允许分区单元215并行地写入每个渲染目标的部分,以高效地利用PP存储器204的可用带宽。
给定的GPC 208可处理将被写入到PP存储器204中的任意DRAM 220的数据。交叉开关单元210被配置为将每个GPC 208的输出路由至任意分区单元215的输入或任意其他GPC208,以用于进一步的处理。GPC 208经由交叉开关单元210与存储器接口214通信,以从各种DRAM 220读取或写入至各种DRAM 220。在一个实施例中,交叉开关单元210除了经由存储器接口214的与PP存储器204的连接之外,还具有到I/O单元205的连接,从而使得不同GPC 208内的处理核心能够与系统存储器104或其他对于PPU 202非本地的存储器进行通信。在图2的实施例中,交叉开关单元210被直接连接至I/O单元205。在各种实施例中,交叉开关单元210可使用虚拟信道来分割GPC 208和分区单元215之间的流量流。
再次,GPC 208可被编程以执行与大量应用相关的处理任务,其包括但不限于,线性和非线性数据变换、对视频和/或音频数据的过滤、建模操作(例如,应用物理规律来确定位置、速度和对象的其他属性)、图像渲染操作(例如,镶嵌着色、顶点着色、几何着色,以及/或像素/片段着色程序)、一般的计算操作等。在操作中,PPU 202被配置为将数据从系统存储器104和/或PP存储器204传输至一个或多个芯片上的存储器单元,处理数据,并且将结果数据写回至系统存储器104和/或PP存储器204。结果数据可随后被其他系统组件访问,其包括CPU 102、并行处理子系统112中的另一PPU 202,或计算机系统100内的另一并行处理子系统112。
如以上所述,任何数量的PPU 202可被包括在并行处理子系统112中。例如,多个PPU 202可被设置在单个插入卡上,或者多个插入卡可被连接至通信路径113,或一个或多个PPU 202可被集成至桥芯片中。多PPU系统中的PPU 202可以是相同的或彼此不同的。例如,不同的PPU 202可具有不同数量的处理核心和/或不同量的PP存储器204。在存在多个PPU 202的实现中,那些PPU可被并行操作,以比单个PPU 202所可能达到的更高的吞吐量来处理数据。合并了一个或多个PPU 202的系统可以多个配置和形式因子来实现,其包括但不限于,台上型、膝上型、手持个人计算机或其他手持设备、服务器、工作站、游戏控制台、嵌入式系统,等等。
图3是根据本发明的各种实施例的、包括在图2的并行处理单元中的通用处理集群的框图。在操作中,GPC 208可被配置为并行执行大量线程,以执行图形、一般处理和/或计算操作。如此处所使用的,“线程”指执行在输入数据的特定集合上的特定程序的实例。在某些实施例中,单指令多数据(SIMD)指令发布技术被用于支持对大量线程的并行执行,而不提供多个依赖性指令单元。在其他实施例中,单指令多线程(SIMT)技术被用于支持对大量一般同步的线程的并行执行,其利用通用指令单元,该通用指令单元被配置为向GPC 208内的处理引擎的集合发布指令。与SIMD执行机制不同,其中所有的处理引擎通常执行相同的指令,SIMT执行允许不同的线程容易地通过给定程序来移动追随发散的执行路径。本领域技术人员将理解,SIMD处理机制代表SIMT处理机制的功能性子集。
对GPC 208的操作由管道管理器305控制,该管道管理器305将从任务/工作单元207内的工作分布单元(未示出)接收的处理任务发布至一个或多个流化多处理器(SM)310。管道管理器305还可被配置为通过对SM310输出的经处理的数据指派目的地来控制工作分布交叉开关330。
在一个实施例中,GPC 208包括M个SM 310(其中M≥1)的集合。每个SM 310还包括功能性执行单元的集合(图3中未示出),诸如执行单元和负载存储单元。特定于任意功能性执行单元的处理操作可被管道化,这使得新指令能够被发布,以用于在之前的指令已经完成执行之前被执行。可提供给定SM 310内的功能性执行单元的任意组合。在各种实施例中,功能性执行单元可被配置为支持各种不同的操作,包括整数和浮点数算数(例如,加法和乘法),比较操作,布尔操作(AND,OR,XOR),移位,以及各种代数函数的计算(例如,平面插值和三角函数,指数,以及拉格朗日函数等)。有优势地,相同的功能性执行单元可被配置为执行不同的操作。
在操作中,每个SM 310被配置为处理一个或多个线程组。如此处所使用的,“线程组”或“线程束(warp)”指同时在不同的输入数据上执行相同的程序的一组线程,该组的一个线程被指派给SM 310内的不同的执行单元。线程组可包括比SM 310内的执行单元数量更少的线程,在该情况下,当该线程组正被处理时,某些执行在周期期间可能是空闲的。线程组还可包括多于SM 310内的执行单元的数量的线程,在该情形中,处理可出现在连续的时钟周期上。由于每个SM 310可同时支持至多G的线程组,因此,在任意给定时刻,在GPC 208中,至多G*M个线程组可被执行。
另外,SM310中的多个相关的线程组可以同时是活动的(在不同的执行阶段)。此处该线程组的聚集可被称为“协同线程阵列”(“CTA”)或“线程阵列”。特定CTA的大小等于m*k,其中k是线程组中同时执行的线程的数量,其通常是SM 310内的多个执行单元数量的整数倍,而m是SM 310内同时活动的线程组的数量。
如所示,每个SM 310包括但不限于,共享存储器382和一级(L1)高速缓存384。共享存储器382通常为SM 310本地的静态随机存取存储器(SRAM)的相对较小的一部分。共享存储器382的一个或多个部分被共享以应对CTA中的线程。此外,L1高速缓存器384支持由执行单元所执行的载入和存储操作。
每个SM 310还有权对二级(L2)高速缓存(未示出)进行访问,该二级(L2)高速缓存在PPU 202的所有GPC 208中被共享。L2高速缓存可被用于在线程之间传输数据。最后,SM310还有权访问芯片外存储器,其可包括PP存储器204(还被称为“全局”存储器)和/或系统存储器104。另外,如图3中所示,一点五级(L1.5)的高速缓存335可被包括在GPC 208中并且被配置为接收并保持经由存储器接口214由SM 310请求的数据。这种数据可包括但不限于,指令、均一的数据,以及常数数据。在GPC 208中具有多个SM 310的实施例中,SM 310可有益地共享通用指令和在L1.5高速缓存335中所缓存的数据。
每个GPC 208可具有相关联的存储器管理单元(MMU)320,其被配置为将虚拟地址映射至物理地址。在各种实施例中,MMU 320可驻于GPC208或存储器接口214中。MMU 320包括页表条目(PTE)的集合,其被用于将虚拟地址映射至拼贴或存储器页以及可选地高速缓存线索引的物理地址。MMU 320可包括地址翻译后备缓冲器(TLB)或高速缓存,高速缓存可驻于SM 310内,或一个或多个L1高速缓存内,或GPC 208内。
在图形和计算应用中,GPC 208可被配置,使得每个SM 310被耦合至纹理单元315,以用于执行纹理映射操作,诸如确定纹理样本位置、读取纹理数据,以及过滤纹理数据。
在操作中,每个SM 310将经处理的任务传输至工作分组交叉开关330,以便将经处理的任务提供给另一GPC 208,以用于进一步的处理或经由交叉开关单元210将经处理的任务存储在L2高速缓存(未示出)、并行处理单元204,或系统存储器104。另外,预光栅操作(preROP)单元325被配置为从SM 310接收数据,将数据引导至分区单元215内的一个或多个光栅操作(ROP)单元,针对颜色混合执行优化,组织像素彩色数据,以及执行地址翻译。
将理解,此处所描述的核心体系架构是阐释性的,并且,变化和修改是可以的。另外,任意数量的处理单元,诸如SM 310,纹理单元315,或preROP单元325可被包括在GPC 208内。另外,如以上结合图2所描述的,PPU 202可包括任意数量的GPC 208,其被配置为功能上彼此相似,使得执行行为不依赖于哪个GPC 208接收特定的处理任务。另外,每个GPC 208独立于PPU 202内的其他GPC 208而操作,以执行一个或多个应用程序的任务。鉴于前述,本领域技术人员将理解,图1至图3中所描述的体系架构绝不限制本发明的范围。
生成图像拼贴
一般而言,SM 310可被配置为并行执行大量的线程,以执行图形、一般处理和/或计算操作。显著地,SM 310所提供的并发性和专用的存储器资源允许SM 310优化计算密集性操作的执行。一种特别适于SM 310执行的计算密集性操作是多卷积操作。通常,在惯常的利用并行处理子系统来执行多卷积操作的技术中,SM 310执行包括在库中的经优化的矩阵乘例程。
这种基于矩阵的方式来执行多卷积操作的一个缺陷是建立有效的矩阵乘操作所要求的存储器可用尽可用的PP存储器204。更具体地,输入到矩阵乘的图像矩阵是扩展的版本---其包括显著冗余的数据,该数据是输入到多卷积图像的图像批的数据。在操作中,SM310在子矩阵上执行矩阵乘操作,此处称为图像批的拼贴。因此,为了利用经优化的矩阵乘例程而不用尽PP存储器204,针对每个“图像拼贴”,卷积子系统180按需地生成图像拼贴,处理图像拼贴,并且随后丢弃图像拼贴。有优势地,在给定时刻仅有图像矩阵的一部分被存储在共享存储器382中。在可替换的实施例中,卷积子系统180可操作于任意类型的数据输入上,此处还称为“样本”,而非图像数据。
图4示出了根据本发明的各种实施例的、与多卷积操作相关联的图像批410、滤波器堆栈440,以及输出批470。在图4的上下文中,流化多处理器(SM)310被配置为在图像批410和过滤器堆栈440之间执行多卷积操作,以产生输出批470。多卷积操作对应于执行包括在CNN中的特定卷基层所涉及的主要计算。
如所示,图像批410包括但不限于任意数量的输入图像420(0:N-1)。处于解释目的,相似对象的多个实例用标识对象的参考标号以及标识实例的括号标号(如果需要的话)来表示。另外,范围为“X”的对象用括号范围表示(即,(0:X-1))。输入图像420中的每一个包括但不限于任意数量的颜色平面430(0:C-1)。例如,输入图像420中的每一个可包括三个颜色平面430:颜色平面430(0)“红色”,颜色平面430(1)“绿色”,以及颜色平面430(2)“蓝色”。输入图像420中的每一个被与图像高度(示出为“H”)和图像宽度(示出为“W”)相关联。显著地,图像高度和图像宽度定义了颜色平面430的每个的维度。因此,图像批410包括(N×C×H×W)个唯一值。
以一种补充的方式,过滤器堆栈440包括但不限于任意数量的过滤器450(0:K-1)。在某些实施例中,过滤器450中的每一个可表示与CNN的层相关联的触发搜索项。例如,CNN可被包括在脸部识别算法中,并且过滤器450(0)可表示耳朵。过滤器450中的每一个包括但不限于特征平面460(0:C-1),其中特征平面460的数量等于颜色平面430的数量。过滤器450中的每一个与过滤器高度(示出为“R”)和过滤器宽度(示出为“S”)相关联。过滤器高度和过滤器宽度定义了特征平面460的每个的维度,并且因此,过滤器堆栈440包括(K×C×R×S)个唯一值。
还如所示,存在与多卷积操作相关联的众多参数465。图像批410和过滤器堆栈440的维度表示多卷积操作的五个独立的参数:N(图像批410中的输入图像420的数量),C(输入图像420中的每一个的颜色平面430的数量以及过滤器450中的每一个的特征平面460的数量),H(图像高度),W(图像宽度),K(过滤器堆栈440中的过滤器450的数量),R(过滤器高度),以及S(过滤器宽度)。参数465还包括但不限于V(水平过滤器步幅),以及U(垂直过滤器步幅)。水平过滤器步幅和垂直过滤器步幅通过减小多卷积操作中所涉及的像素子集的大小来降低计算负荷。显著地,水平过滤器步幅和垂直过滤器步幅不仅减少了执行多卷积操作所要求的时间,还减小了多卷积操作所产生的输出批470的大小。
在可替换的实施例中,额外的参数465可对应于额外的维度、步幅、优化、格式,以及其他配置选项。例如,在某些实施例中,参数465可包括垫整(padding)高度和垫整宽度。出于技术原因,诸如格式化以用于将来的操作,垫整高度和垫整宽度将零行和零列分别附加到包括在输出批470内的输出图像480。
输出批470包括但不限于输出图像480(0:N-1),其中输出图像480的数量等于输入图像420的数量。输出图像480的每一个包括但不限于特征映射490(0:K-1),其中特征映射490的数量等于滤波器450的数量。输出图像480的每一个与输出高度(示出为“P”)以及输出宽度(示出为“Q”)相关联。输出高度和输出宽度定义了特征映射490的维度。因此,输出批470包括(N×K×P×Q)个唯一值。
如此处之前所描述的,卷积子系统180利用SM 310的经优化的矩阵乘能力来有效地执行多卷积操作。本领域技术人员将意识到,输入批410和滤波器堆栈440之间的多卷积操作可被转换成图像矩阵和滤波器矩阵之间的矩阵乘操作。该转换在本领域是已知的,并且导致包括在输入批410中的值和包括在图像矩阵中的值之间的确定的关系。以补充的方式,转换操作导致包括在滤波器堆栈440中的值和包括在滤波器矩阵中的值之间的确定的关系。为了优化对PP存储器204的使用,卷积子系统180并不将图像矩阵存储在PP存储器204中。而是,卷积子系统180基于这些确定的关系来配置SM 310---在运行中扩展包括在“虚拟”图像矩阵中的图像拼贴。
图5示出了根据本发明的各种实施例的、图4的图像批410与虚拟图像矩阵510之间的关系。图5还示出了图4的滤波器堆栈440和虚拟滤波器矩阵540之间的关系。出于解释目的,参数465,以及因此图像批410的维度,虚拟图像矩阵510,滤波器堆栈440,以及虚拟滤波器矩阵540为N=1,C=2,H=3,W=3,K=2,R=2,S=2,U=1,以及V=1。另外,根据图像批410的存储器占用,图像数据步幅475为C步幅=9,H步幅=3,以及W步幅=1。
作为图像批410扩展至虚拟图像矩阵510的一部分,虚拟图像矩阵510中的四列中的每一列与包括在图像批410中的值相关联,其为计算输出矩阵(未示出)中一列值所要求的值。这种扩展包括复制图像批410中所包括的某些值。例如,如针对值“D4”所描绘的,三乘三颜色平面410的每一个的中心被使用四次,以计算输出矩阵中的四列中的每一个,并且因此,每个中心值(例如,“D4”值)与虚拟图像矩阵510的四个单独列相关联。出于说明目的,图像批410中所包括的值被称为处于“源”地址处的数据。类似地,虚拟图像矩阵510中所包括的值此处被称为处于相应的“虚拟”地址处的数据。结果,虚拟图像矩阵510中的多个虚拟地址与包括在图像批410中的单个源地址相关联。以补充的方式,虚拟滤波器矩阵540的每行包括滤波器堆栈440中所包括的值,该值是计算输出矩阵的一个或多个拼贴所要求的值。
一般而言,如果输入批410的维度是(N×C×H×W),则滤波器堆栈440的维度是(K×C×R×S),并且输出批470的维度是(N×K×P×Q),则虚拟图像矩阵510的维度是(C×R×S)×(N×P×Q),虚拟滤波器矩阵540的维度是K×(C×R×S),并且输出矩阵的维度是K×(N×P×Q)。针对所示出的示例,输入批410的维度是(1×3×3×3),滤波器堆栈440的维度是(2×3×2×2),并且输出批470的维度是(1×2×2×2)。结果,虚拟图像矩阵510的维度是(12×4),虚拟滤波器矩阵540的维度是(2×12),并且输出矩阵的维度是(2×4)。
显著地,由于虚拟图像矩阵510的维度是与多卷积操作相关联的独立参数的乘积,因此,基于矩阵的多卷积操作展现了跨越不同参数的相对均一的行为。例如,虽然跨越与特定CNN的不同层相关联的多卷积操作,参数C,R和S可单个戏剧性地变化,但是,参数C,R和S的乘积通常跨越多卷积操作并不戏剧性地变化。结果,经优化的基于矩阵的多卷积操作的性能跨越个别参数的值的变更是相对一致的。
如虚拟图像矩阵510的(C×R×S)×(N×P×Q)维度所示出的,同时并冗余地存储与虚拟图像矩阵510中所包括的所有地址相关联的值可用尽PP存储器204。结果,卷积子系统180配置SM 310,以表明并以“懒惰的”方式来处理虚拟图像矩阵510。更具体地,卷积子系统180将虚拟图像矩阵510分割成单独的图像拼贴542,并且随后配置SM 310来处理图像拼贴542。另外,卷积子系统180将每个图像拼贴542中的每个“目的地”地址与虚拟图像矩阵510中的所包括的虚拟地址相关联。例如,如图5所描绘的,卷积引擎125将图像拼贴542(0)中所包括的十六个目的地地址与包括在虚拟图像矩阵510的前四行中的十六个虚拟地址相关联。
虚拟图像矩阵510中的每个虚拟地址确定地与图像批410中所包括的源地址相关。结果,图像拼贴542中的每个目的地地址确定地与包括在图像批410中的源地址相关。因此,卷积子系统180可执行寻址计算,其使得卷积子系统180能够直接将合适的数据从图像批410复制到包括在每个图像拼贴542中的每个目的地地址,而无需创建虚拟输入矩阵510。
为了避免与执行寻址计算同时生成图像拼贴542相关联的整数延迟,卷积预处理器182被配置为利用虚拟图像矩阵510所固有的源地址的一致模式。更具体地,虽然虚拟图像矩阵510的每一列与源地址的不同序列相关联,该源地址的不同序列沿着迂回路径通过图像批410,但是,该序列是仿射的(affine)(以多维的观点来看)。
例如,虚拟图像矩阵510的第一列与三个颜色平面430中的每一个的第一源地址序列D0,D1,D3和D4相关联。将1添加至该第一序列中的每个元素产生针对三个颜色平面430的每一个的D1,D2,D4和D5---对应于与虚拟图像矩阵510的第二列相关联的源地址序列。类似地,将3添加至该第一序列的每个元素产生与虚拟图像矩阵510的第三列相关联的源地址序列,并且以此类推。图6描述了卷积预处理器182如何利用该一致模式的更加详细的示例。
作为处理每个图像拼贴542的一部分,SM 310从图像批410载入数据,以形成图像拼贴542,并且从滤波器堆栈440载入数据以形成对应的滤波器拼贴544。SM 310随后在图像拼贴542和滤波器拼贴544之间执行矩阵乘操作,将结果作为输出拼贴存储在PP存储器204中,并且随后丢弃包括在图像拼贴542和滤波器拼贴544中的数据。结果,在任意给定时间点处,共享的存储器382包括SM 310正在处理的图像拼贴542,但是并不必须包括SM 310已经处理的或还未开始处理的图像拼贴542。
卷积子系统180可以通过优化SM 310的能力的任意技术上可行的方式来设置图像拼贴542的大小。例如,卷积子系统180可基于共享存储器382的大小的任意数量和组合,每个线程组中的线程数量等来设置图像拼贴542的大小。在可替换的实施例中,卷积子系统180可接收图像拼贴542的大小,以作为对多卷积操作的辅助输入。卷积子系统180基于图像拼贴542的大小来设置滤波器拼贴544的大小。更具体地,卷积子系统180设置滤波器拼贴545的大小,使得每个图像拼贴542和对应的滤波器拼贴544之间的矩阵乘产生数据,以适当地填充输出拼贴。
在可替换的实施例中,卷积子系统180可基于对虚拟图像矩阵510和虚拟滤波器矩阵540的任意技术上可行的实现来配置SM 310,其辅助经由矩阵乘操作来执行多卷积操作。另外,卷积子系统180可通过任意技术上可行的一致方式将虚拟图像矩阵510和虚拟滤波器矩阵540中所包括的数据分割成图像拼贴542和滤波器拼贴544。
生成偏移序列
图6示出了根据本发明的各种实施例的、图4的图像批410、偏移序列640,以及图5的虚拟图像矩阵510之间的关系。出于说明目的,图像批410被描绘为图像数据610和存储器偏移620。如所示,针对图像数据610的特定值的存储器偏移620基于颜色平面430,图像内的垂直位置,图像内的水平位置,以及与图像数据610的值相关联的数据大小。例如,D4的存储器偏移620是(1*2*2)*4字节=16。
如结合图5所概述的,虽然每列的迂回模式与其他列的迂回模式相偏移,但是迂回模式表示针对虚拟图像矩阵510的每一行的均一的偏移序列。例如,针对虚拟图像矩阵510的每一列,与第二行相关联的源地址比与第一行相关联的源地址大四。在操作中,卷积预处理器182基于该迂回模式来生成偏移序列640。该偏移序列640包括针对虚拟图像矩阵510的每一行的偏移642。卷积预处理器182可通过任何技术上可行的方式生成偏移序列640,其捕获了虚拟图像矩阵510中所固有的任意模式。
另外,每一列的迂回模式与其他列的迂回模式相偏移。例如,虚拟图像矩阵510的第一列与源地址序列0,4,12,16,26,40,48,52,72,76,84和88相关联。将4添加至该序列中所包括的源地址产生与虚拟图像矩阵510的第二列相关联的源地址序列4,8,16,20,40,44,52,56,76,80,88和92。如本领域技术人员将意识到的,指定了虚拟图像矩阵510的第一列和虚拟图像矩阵510的特定列之间的差的列偏移632等于与特定列的第一行相关联的源地址。
图7示出了根据本发明的各种实施例的、配置为生成图6的偏移序列640的图1的卷积预处理器182。如所示,图7描绘了作为卷积预处理器182可实现的伪码的偏移序列生成器720。偏移序列生成器720创建偏移序列640,以从卷积引擎184卸载耗时的地址计算。这种卸载使得SM 310能够有效地执行经优化的矩阵乘例程,以执行卷积操作。
一般而言,偏移序列生成器720可执行于任意类型和数量的处理单元上,并且将偏移序列640存储在任意可访问的存储器中。例如,在某些实施例中,偏移序列生成器720可执行在CPU 102上,并且将偏移序列640存储在系统存储器104中。结果,设备驱动器175可将偏移序列640复制至PP存储器204。当卷积引擎184访问偏移序列640时,偏移序列640可通过L1高速缓存384载入。在其他实施例中,偏移序列生成器720可执行在并行处理子系统112上。在这种实施例中,偏移序列生成器720可将偏移序列640直接存储在PP存储器204中。
如所示,偏移序列生成器720基于颜色平面(c)430,滤波器高度(r),滤波器宽度(s),图像高度步幅(h步幅)以及图像宽度步幅(w步幅)生成(C*R*S)偏移642。在可替换的实施例中,图7中所描绘的伪码可被修改,以表示任意数量的维度。另外,如在伪码中所示,偏移序列生成器720可被配置为生成偏移序列640,其表示互相关操作,而非卷积操作。
如以上所概述的,偏移序列640指定从图像批410的源地址到虚拟图像矩阵510的虚拟地址的映射。由于卷积引擎125将每个图像拼贴542中的每个目的地地址与虚拟图像矩阵510中的虚拟地址相关联,卷积引擎125可利用偏移序列640来适当地填充图像拼贴542。一般而言,卷积预处理器182和卷积引擎125可被配置为基于任意数量的偏移642和任意数量的偏移序列640来利用虚拟图像矩阵510中所固有的任意模式。
执行基于矩阵的多卷积操作
图8示出了根据本发明的各种实施例的、配置为执行多卷积操作的图1的卷积引擎184。在图8的上下文中,卷积引擎184配置包括在流化多处理器(SM)310中的功能单元(例如,执行单元,载入-存储单元等),来执行实现了多卷积操作的操作。出于说明的目的,由SM310所执行的操作,包括由卷积引擎184所配置的功能执行单元所执行的操作,此处也被称为由卷积引擎184所执行的操作。
在操作中,为了利用SM 310的并行处理能力,卷积引擎184将图像拼贴542中的每一个的处理指派给线程组或线程阵列。如本领域技术人员将意识到的,卷积引擎184可将任意数量的图像拼贴542指派给单个线程组和/或可以将任意数量的操作或图像拼贴542中的目的地地址指派给单个线程。如果线程组被指派以处理多个图像拼贴542,则线程组可顺序地处理所指派的图像拼贴542或可通过任意技术上可行的方式在线程组中所包括的线程之间分配处理。如果线程被指派以处理图像拼贴542中的多个目的地地址,则线程可顺序地处理所指派的目的地地址。
有优势地,卷积引擎184可配置SM 310以对图像拼贴542的处理进行管道化,从而最小化与访问PP存储器210中所包括的输入数据相关联的延迟。更具体地,卷积引擎184可配置SM 310,以将图像批410和滤波器堆栈440中所包括的数据分别复制到图像拼贴542(0)和滤波器拼贴544(0)。卷积引擎184可配置SM 310随后执行图像拼贴542(0)和滤波器拼贴544(0)之间的矩阵乘操作,并且本质上并行地将图像批410和滤波器堆栈440中所包括的数据分别复制到图像拼贴542(1)和滤波器拼贴544(1)。在可替换的实施例中,卷积引擎184可通过任意技术上可行的方式来编排任意类型的管道化。例如,并且不限于,卷积引擎184可有策略地将对图像拼贴542的处理指派给线程组,以辅助两阶段(载入数据和执行矩阵乘操作)的管道。
如所示,卷积引擎184包括但不限于,列偏移632和开始地址634。PP存储器204包括但不限于,滤波器堆栈440,图像批410,偏移序列640,以及输出矩阵860。如利用虚线框所描绘的,卷积引擎184通常通过L1高速缓存384来访问偏移序列640。共享存储器382包括但不限于,图像拼贴542和滤波器拼贴544。针对每个线程组,卷积引擎184确定图像批410中的源地址与指派给线程组的图像拼贴542中的目的地地址相对应。
更具体地,针对每个图像拼贴542,所指派的线程组中的线程协作地计算与包括在图像拼贴542中的列相关联的列偏移632。例如,针对四乘四的图像拼贴542,线程将计算对应于四列的四个列偏移632。更具体地,针对相关列的每一个,所指派的线程组将列偏移632设置为与相关列的第一行相关联的源地址和与第一列的第一行相关联的源地址之间的差。
结果,针对每个列偏移632,所指派的线程组将图像批410的基地址与列偏移632求和,以生成开始地址634。如本领域技术人员将意识到的,开始地址634等于图像批410中的源地址,其映射至虚拟图像矩阵510的第一行。在计算图像拼贴542的开始地址634之后,所指派的线程组中的线程执行图像数据寻址850,以生成图像拼贴542。
首先,线程组访问与虚拟图像矩阵510的行相关联的偏移序列640的一部分,该虚拟图像矩阵510对应于图像拼贴542。如之前所描述的,图像拼贴542中所包括的每个目的地地址与虚拟图像矩阵510中所包括的虚拟地址相关联。因此,线程组基于图像批410中所包括的源地址与虚拟图像矩阵510中所包括的虚拟地址之间的映射来填充图像拼贴542。具体地,线程组将源地址计算作为与列相关联的开始地址634和与行相关联的偏移642的和,该源地址对应于虚拟图像矩阵510的列以及虚拟图像矩阵510的行。在计算每个源地址之后,线程组将存储在源地址(包括在图像批410中)处的图像数据610复制到图像拼贴542中所包括的对应的目的地地址。
由于卷积引擎184按需地生成图像拼贴542,因此,卷积引擎184在任意给定时刻在共享存储器382中仅存储一部分虚拟图像矩阵510。线程执行图像数据寻址850所要求的时间显著地短于执行实现在某些惯常的基于拼贴的卷积引擎中的众多的依赖型整数寻址所要求的时间。
线程组还生成与图像拼贴542相关联滤波器拼贴544。通过任意技术上可行的、与图像拼贴542中所包括的数据相一致的方式,线程组可将数据从PP存储器204中所包括的滤波器堆栈440复制到共享存储器382中所包括的滤波器拼贴544。例如,线程组可基于与图像拼贴542相关联的源地址来实现滤波器堆栈440和滤波器拼贴544之间的线性映射。
在每个线程组已经完成生成所指派的图像拼贴542和对应的滤波器拼贴544之后,线程组在SM 310中所包括的浮点单元内执行,其实现了“每个拼贴的矩阵乘”855的功能。更具体地,每个线程组配置浮点单元,以执行所指派的图像拼贴542和对应的滤波器拼贴544之间的矩阵乘操作。线程组还配置浮点单元,以基于矩阵乘的结果来更新输出矩阵860。
在线程组已经完成生成包括在输出矩阵860中的输出拼贴之后,线程组将输出矩阵860转置成输出批470(图8中未示出),其也被包括在PP存储器204中。线程组可实现任意数量的格式化操作,该格式化操作基于输出矩阵860中所包括的数据的任意组织或任意子集或超集来生成输出批470。通常,输出批470实现与图像批410相一致的格式,从而使得输出批470能够被用作多卷积操作的输入批410,该多卷积操作实现了包括在CNN内的下一卷积层。
一般而言,计算机系统100中所包括的组件可以以PP存储器204中所包括的任意类型的存储器结构来存储图像批410,滤波器堆栈440,偏移序列640,和/或输出矩阵860中的任意一个。例如,任意数量(包括零)的图像批410,滤波器堆栈440,偏移序列640和/或输出矩阵860可被包括在帧缓冲器中。在其他实施例中,计算机系统100中所包括的组件可以以PP存储器204以外的任意类型的存储器来存储图像批410,滤波器堆栈440,偏移序列640,和/或输出矩阵860。类似地,在可替换的实施例中,卷积引擎125可以以共享存储器382以外的任意类型的存储器来存储图像拼贴542和滤波器拼贴544。
在可替换的实施例中,卷积子系统180可配置偏移序列640,以基于以任意组合的任意数量的参数465和任意数量的图像数据步幅475来包括任意数量的偏移642。例如,与图像批410相关联的维度数目,与滤波器堆栈440相关联的维度数目,图像数据步幅475,以及虚拟图像矩阵510中所包括的行数,可跨越各种实施例而不同。另外,在某些实施例中,偏移序列640可仅包括维度的子集。例如,卷积预处理器182可基于图像高度步幅和图像宽度步幅来计算针对虚拟图像矩阵510的(R*S)列的每一列的偏移642。以补充的方式,卷积引擎184可被配置为重复应用偏移642---针对C个颜色平面430中的每一个进行一次---跨越虚拟图像矩阵510的每一列,以确定与虚拟图像矩阵510的(C*R*S)行的每一行相关联的源地址。
图9是根据本发明的各种实施例的、用于在并行处理系统中执行多卷积操作的方法步骤的流程图。虽然方法步骤是与图1-8的系统一同描述的,但是,本领域技术人员将理解,任何被配置为以任意次序来实现方法步骤的系统落入本发明的范围中。
如所示,方法900开始于步骤902处,其中卷积子系统180接收图像批410和滤波器堆栈440。在步骤904处,卷积预处理器182计算与虚拟图像矩阵510相关联的偏移序列640,并且随后将偏移序列640存储在PP存储器204中。卷积预处理器182可以通过任意技术上可行的方式计算偏移序列640,该方式是一种模式的代表,该模式基于行将图像批410中的源地址的子集沿着虚拟图像矩阵510的图像矩阵列544映射至对应的虚拟地址。例如,假设输入批410的维度是(N×C×H×W),并且滤波器堆栈440的维度是(K×C×R×S)。在这种示例中,卷积预处理器182可以基于C步幅,H步幅和W步幅来针对虚拟图像矩阵510的(C*R*S)行的每一行来计算偏移642。
卷积预处理器182可在任意处理单元(例如,CPU 182,SM 310等)上执行,并且可通过任意技术上可行的方式将偏移序列640存储在PP存储器204中。例如,在某些实施例中,卷积预处理器182可在CPU 182上执行,并且将偏移序列640存储在系统存储器104中。结果,设备驱动器175可将偏移序列640从系统存储器104复制到PP存储器204。当SM 310初始访问偏移序列640时,SM 310可将偏移序列640载入到L1高速缓存384。
在步骤906处,卷积子系统180确定图像拼贴542的大小,并且随后定义图像拼贴542---将每个图像拼贴542的目的地地址与虚拟图像矩阵510中的虚拟地址相关联。在步骤908处,卷积引擎184将对每个图像拼贴542的处理指派给线程组。卷积引擎184随后配置SM310以执行线程组。
在步骤910处,针对图像拼贴542中的每一个,所指派的线程组计算与包括在图像拼贴542中的列相关联的开始地址634。更具体地,针对每一列,所指派的线程组将开始地址634设置到图像批410中所包括的源地址,其与虚拟图像矩阵510的列以及虚拟图像矩阵510的第一行相关联。在步骤912处,针对每个图像拼贴542,线程组计算图像批410中的源地址,并且将源地址处所存储的数据复制到共享存储器382中所存储的所指派的图像拼贴542中的对应的目的地地址。显著地,所指派的线程组中的线程计算源地址,将其作为与列相关联的开始地址634和与行相关联的偏移642之和,该源地址对应于虚拟图像矩阵510的特定列以及虚拟图像矩阵510的特定行。
在步骤916处,针对每个图像拼贴542,线程组执行图像拼贴542和对应的滤波器拼贴544之间的矩阵乘操作。在所有的线程组已经完成处理所有所指派的图像拼贴542之后,输出矩阵860是完成的,并且由卷积子系统180配置的线程将输出矩阵860中所包括的数据复制到PP存储器204中所包括的输出批470。
总而言之,所公开的技术使得卷积子系统能够高效地在并行处理系统中执行多卷积操作。一般而言,卷积子系统实现了虚拟图像矩阵,其符合以列为主的形式,这使能基于矩阵的卷积操作。卷积子系统包括卷积预处理器,其在CPU和/或并行处理子系统中所包括的流化多处理器(SM),以及卷积引擎上执行,该卷积引擎在并行处理子系统中所包括的SM上执行。
在操作中,卷积预处理器中所包括的偏移序列生成器预计算偏移序列,其反映了与虚拟图像矩阵的列相关联的源存储器地址的迂回模式。显著地,该模式跨越与每一列相关联的第一源存储器地址有关的列是一致的。驱动器随后执行复制操作,其将偏移序列存储在并行处理存储器中。卷积引擎将虚拟图像矩阵划分为独立的图像拼贴,并且随后将对每个图像拼贴的处理指派给不同的线程组。
针对每个线程组,每个线程组中所包括的线程协同地计算开始地址,其中每个开始地址对应于与以所指派的图像拼贴中所表现的列相关联的第一源地址。结果,为了填充图像拼贴,线程基于开始地址和偏移序列,间接地访问并行处理存储器中所存储的图像批中所包括的合适的图像数据。线程随后执行图像拼贴和对应的滤波器拼贴之间的矩阵乘操作,以生成针对输出矩阵的部分结果。显著地,随着每个线程处理所指派的图像拼贴,线程逐步通过偏移序列。在线程组已经完成处理所有图像拼贴之后,卷积引擎配置线程以将输出矩阵中所包括的数据复制到输出批。
所公开的方式的至少一个优点是,卷积子系统充分地利用并行处理系统固有的益处来获得CNN所提供的高准确性,同时优化了执行速度和所使用的并行处理存储器的量。更具体地,通过配置CPU以预计算偏移序列,卷积引擎从性能关键的矩阵乘操作解耦合与填充虚拟图像矩阵的拼贴相关联的计算密集的寻址操作。另外,在任何给定时刻,仅有一部分虚拟图像矩阵驻于共享存储器中,并且整个图像矩阵并未存储在并行处理存储器中。结果,并行处理管道实现了经优化的矩阵乘的益处,同时最小化所使用的并行处理存储器的量。
出于阐释目的,已经呈现了对各种实施例的描述,但是并不意欲穷尽或限制所公开的实施例。在不偏离所描述的实施例的范围和精神的前提下,许多修改和变化对于本领域技术人员而言是显然的。
本实施例的方面可体现为系统,方法或计算机程序产品。因此,本公开的方面可采用完全硬件实施例的形式,完全软件实施例(包括固件,常驻软件,微代码等)的形式,或组合了软件和硬件方面的实施例的形式,此处其一般均可称为“电路”,“模块”或“系统”。另外,本公开的方面可采用体现为一个或多个计算机可读介质的计算机程序产品的形式,其具有体现于其上的计算机可读程序代码。
可以使用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质例如可以是但不限于,电的,磁的,光学的,电磁的,红外的或半导体系统,装置,或设备,或前述任意合适的组合。计算机可读存储介质的更具体的示例(非穷尽的列表)将包括以下:具有一个或多个线缆的电连接,便携的计算机软磁盘,硬盘,随机存取存储器(RAM),只读存储器(ROM),可擦除可编程只读存储器(EPROM或闪存),光纤,便携紧致盘只读存储器(CD-ROM),光贮存设备,磁贮存设备,或前述的任意合适的组合。在本文的上下文中,计算机可读介质可以是任意有形的介质,其可包括或存储程序,以用于指令执行系统,装置或设备或与其一起使用。
通过参照流程图和/或根据本公开的实施例的方法、装置(系统)和计算机程序产品的框图,描述了本公开的方面。将理解,流程图和/或框图的每个框,以及流程图和/或框图中的框的组合可由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,以产生机器,使得经由计算机和其他可编程数据处理装置的处理器来执行的指令使能对流程图和/或框图或框中所指派的功能/动作的实现。这种处理器可以是但不限于,通用处理器,专用处理器,特定于应用的处理器,或场编程处理器或门阵列。
示图中的流程图和框图阐释了根据本公开的各种实施例的系统,方法和计算机程序产品的可能实现的体系架构,功能和操作。在这方面,流程图或框图中的每个框可表示模块,片段,或部分代码,其包括一个或多个可执行指令,以用于实现一个或多个所指派的逻辑功能。应当注意,在某些可替换的实现中,框中所表示的功能可不遵循示图中所表示的顺序。例如,示出为连续的两个框,实际上可能被本质上同时执行,或者框有时可被以相反的顺序执行,这取决于所涉及的功能。还将注意,框图和/或流程图的每个框,以及框图和/或流程图中的框的组合可由基于专用硬件的系统实现,该系统执行所指派的功能或动作,或专用硬件和计算机指令的组合。
虽然前述涉及本公开的实施例,但是可构思本公开其他和另外的实施例,而不偏离基本的范围,并且其范围由以下权利要求所确定。
Claims (10)
1.一种用于执行多卷积操作的计算机实现的方法,所述方法包括:
基于第一存储器中所存储的第一图像拼贴中所包括的第一目的地地址,选择第一开始地址,并且所述第一图像拼贴包括与图像批中所包括的图像数据相关联的多个行;
基于所述第一目的地地址,标识偏移序列中的第一偏移,其中所述偏移序列对应于所述图像批中所包括的所述图像数据的源地址的模式,并且所述偏移序列针对所述第一图像拼贴中所包括的每行指定偏移;
基于所述第一开始地址和所述第一偏移,计算所述图像批中所包括的第一源地址;
将数据从所述第一源地址复制到所述第一目的地地址;以及
在复制所述数据之后,在所述第一图像拼贴和第一滤波器拼贴之间执行一个或多个矩阵乘操作。
2.根据权利要求1所述的计算机实现的方法,其中所述第一存储器包括共享存储器,并且其中所述图像批存储在第二存储器中,所述第二存储器包括并行处理存储器。
3.根据权利要求1所述的计算机实现的方法,其中所述第一滤波器拼贴被存储在所述第一存储器中,并且还包括:
基于所述第一目的地地址,计算滤波器源地址;以及
将所述滤波器源地址处的滤波器堆栈中所存储的数据复制到所述第一滤波器拼贴中所包括的滤波器目的地地址。
4.根据权利要求1所述的计算机实现的方法,其中选择所述第一开始地址包括:
将所述第一目的地地址与虚拟图像矩阵的列相关联;以及
执行一个或多个操作,所述一个或多个操作将所述列映射到所述图像批中所包括的地址。
5.根据权利要求1所述的计算机实现的方法,其中标识所述第一偏移包括:
将第一目的地位置与虚拟图像矩阵的行相关联;以及
基于所述行,取回所述偏移序列中所包括的值。
6.根据权利要求5所述的计算机实现的方法,还包括基于所述图像批和所述虚拟图像矩阵之间的确定关系,生成所述偏移序列。
7.根据权利要求1所述的计算机实现的方法,还包括将所述第一图像拼贴指派给第一线程组,并且配置所述线程组中的至少一个线程来计算所述第一源地址。
8.根据权利要求7所述的计算机实现的方法,还包括将第二图像拼贴指派给第二线程组,并且配置所述第二线程组中的至少一个线程以基于第二开始地址和所述第一偏移来计算所述图像批中所包括的第二源地址。
9.一种配置为执行多卷积操作的系统,所述系统包括:
第一存储器;
第二存储器;以及
卷积引擎,所述卷积引擎耦合至所述第一存储器和所述第二存储器二者,并且配置为:
基于所述第一存储器中所存储的第一图像拼贴中所包括的第一目的地地址,标识偏移序列中所包括的第一偏移,并且所述第一图像拼贴包括与存储在所述第二存储器中的图像批中所包括的图像数据相关联的多个行,其中所述偏移序列对应于所述图像批中所包括的源地址的模式,并且所述偏移序列针对所述第一图像拼贴中所包括的每行指定偏移;
基于所述第一偏移,计算图像批中所包括的第一源地址;
将数据从所述第一源地址复制到所述第一目的地地址;以及
在复制所述数据之后,在所述第一图像拼贴和第一滤波器拼贴之间执行一个或多个矩阵乘操作。
10.根据权利要求9所述的系统,其中所述第一存储器包括共享存储器,并且所述第二存储器包括并行处理存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462087681P | 2014-12-04 | 2014-12-04 | |
US62/087,681 | 2014-12-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105678378A CN105678378A (zh) | 2016-06-15 |
CN105678378B true CN105678378B (zh) | 2018-10-26 |
Family
ID=55974875
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510884505.3A Active CN105678378B (zh) | 2014-12-04 | 2015-12-04 | 间接访问样本数据以在并行处理系统中执行多卷积操作 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10255547B2 (zh) |
CN (1) | CN105678378B (zh) |
DE (1) | DE102015224026A1 (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10223333B2 (en) * | 2014-08-29 | 2019-03-05 | Nvidia Corporation | Performing multi-convolution operations in a parallel processing system |
US9904976B2 (en) * | 2015-01-16 | 2018-02-27 | Nec Corporation | High performance portable convulational neural network library on GP-GPUs |
US10095479B2 (en) * | 2015-04-23 | 2018-10-09 | Google Llc | Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure |
US10497089B2 (en) * | 2016-01-29 | 2019-12-03 | Fotonation Limited | Convolutional neural network |
WO2017214728A1 (en) * | 2016-06-14 | 2017-12-21 | The Governing Council Of The University Of Toronto | Accelerator for deep neural networks |
CN106228240B (zh) * | 2016-07-30 | 2020-09-01 | 复旦大学 | 基于fpga的深度卷积神经网络实现方法 |
CN107742150B (zh) | 2016-10-31 | 2020-05-12 | 腾讯科技(深圳)有限公司 | 一种卷积神经网络的数据处理方法和装置 |
CN108073550A (zh) * | 2016-11-14 | 2018-05-25 | 耐能股份有限公司 | 缓冲装置及卷积运算装置与方法 |
US10360494B2 (en) * | 2016-11-30 | 2019-07-23 | Altumview Systems Inc. | Convolutional neural network (CNN) system based on resolution-limited small-scale CNN modules |
CN110050267B (zh) * | 2016-12-09 | 2023-05-26 | 北京地平线信息技术有限公司 | 用于数据管理的系统和方法 |
CN108205700B (zh) * | 2016-12-20 | 2021-07-30 | 上海寒武纪信息科技有限公司 | 神经网络运算装置和方法 |
US10228937B2 (en) * | 2016-12-30 | 2019-03-12 | Intel Corporation | Programmable matrix processing engine |
US11748625B2 (en) * | 2016-12-30 | 2023-09-05 | Intel Corporation | Distributed convolution for neural networks |
US20190392297A1 (en) * | 2016-12-30 | 2019-12-26 | Intel Corporation | Deep learning hardware |
US11567765B2 (en) * | 2017-03-20 | 2023-01-31 | Intel Corporation | Systems, methods, and apparatuses for tile load |
US10346944B2 (en) | 2017-04-09 | 2019-07-09 | Intel Corporation | Machine learning sparse computation mechanism |
US10176551B2 (en) * | 2017-04-27 | 2019-01-08 | Apple Inc. | Configurable convolution engine for interleaved channel data |
US11113051B2 (en) * | 2017-04-28 | 2021-09-07 | Tenstorrent Inc. | Processing core with metadata actuated conditional graph execution |
US10817293B2 (en) | 2017-04-28 | 2020-10-27 | Tenstorrent Inc. | Processing core with metadata actuated conditional graph execution |
US10268951B2 (en) | 2017-06-14 | 2019-04-23 | International Business Machines Corporation | Real-time resource usage reduction in artificial neural networks |
CN109144470B (zh) * | 2017-06-27 | 2022-01-25 | 上海寒武纪信息科技有限公司 | 一种计算装置及方法 |
CN112214727A (zh) * | 2017-07-07 | 2021-01-12 | 华为技术有限公司 | 运算加速器 |
KR20190066473A (ko) * | 2017-12-05 | 2019-06-13 | 삼성전자주식회사 | 뉴럴 네트워크에서 컨볼루션 연산을 처리하는 방법 및 장치 |
US10747844B2 (en) * | 2017-12-12 | 2020-08-18 | Tesla, Inc. | Systems and methods for converting a matrix input to a vectorized input for a matrix processor |
CN107885700B (zh) * | 2017-12-29 | 2021-05-14 | 中国人民解放军国防科技大学 | 一种大规模矩阵卷积的多核实现方法 |
US11995448B1 (en) | 2018-02-08 | 2024-05-28 | Marvell Asia Pte Ltd | Method and apparatus for performing machine learning operations in parallel on machine learning hardware |
US10970080B2 (en) * | 2018-02-08 | 2021-04-06 | Marvell Asia Pte, Ltd. | Systems and methods for programmable hardware architecture for machine learning |
JP7104546B2 (ja) * | 2018-04-13 | 2022-07-21 | キヤノン株式会社 | 情報処理装置、情報処理方法 |
CN108564524A (zh) * | 2018-04-24 | 2018-09-21 | 开放智能机器(上海)有限公司 | 一种视觉图像的卷积计算优化方法 |
US11200490B2 (en) | 2018-05-04 | 2021-12-14 | Apple Inc. | Processing group convolution in neural network processor |
US11783174B2 (en) | 2018-05-04 | 2023-10-10 | Apple Inc. | Splitting of input data for processing in neural network processor |
US10997510B1 (en) | 2018-05-22 | 2021-05-04 | Marvell Asia Pte, Ltd. | Architecture to support tanh and sigmoid operations for inference acceleration in machine learning |
US11016801B1 (en) | 2018-05-22 | 2021-05-25 | Marvell Asia Pte, Ltd. | Architecture to support color scheme-based synchronization for machine learning |
WO2019236251A1 (en) * | 2018-06-04 | 2019-12-12 | Lightmatter, Inc. | Convolutional layers for neural networks using programmable nanophotonics |
CN110175949A (zh) * | 2018-06-11 | 2019-08-27 | 腾讯科技(深圳)有限公司 | 图像处理方法、装置、系统、存储介质和计算机设备 |
US11132124B2 (en) * | 2018-06-12 | 2021-09-28 | Intel Corporation | Memory subsystem operations with unaligned and scatter gather feature to support convolution and dimension shuffle |
CN110659446B (zh) * | 2018-06-29 | 2022-09-23 | 合一智芯科技(北京)有限公司 | 一种卷积运算控制方法、装置和介质 |
CN109324984B (zh) * | 2018-09-14 | 2020-06-26 | 北京地平线机器人技术研发有限公司 | 在卷积运算中使用循环寻址的方法和装置 |
CN112306555A (zh) * | 2019-07-30 | 2021-02-02 | 北京百度网讯科技有限公司 | 并行提取多个卷积窗中的图像数据的方法、装置、设备以及计算机可读存储介质 |
CN111311599B (zh) * | 2020-01-17 | 2024-03-26 | 北京达佳互联信息技术有限公司 | 图像处理方法、装置、电子设备和存储介质 |
US11314674B2 (en) | 2020-02-14 | 2022-04-26 | Google Llc | Direct memory access architecture with multi-level multi-striding |
KR20220028899A (ko) * | 2020-08-31 | 2022-03-08 | 삼성전자주식회사 | 가속기, 가속기의 동작 방법 및 이를 포함한 전자 장치 |
CN112241509B (zh) * | 2020-09-29 | 2024-03-12 | 格兰菲智能科技有限公司 | 图形处理器及其加速方法 |
GB2605157B (en) * | 2021-03-24 | 2023-08-23 | Sony Interactive Entertainment Inc | Image rendering method and apparatus |
GB2605158B (en) | 2021-03-24 | 2023-05-17 | Sony Interactive Entertainment Inc | Image rendering method and apparatus |
CN113392957B (zh) * | 2021-05-20 | 2023-01-17 | 中国科学院深圳先进技术研究院 | 卷积运算的处理方法、电子设备、移动终端及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101375311A (zh) * | 2005-12-19 | 2009-02-25 | 德克索实验室 | 用于在具有一个或者多个处理器和存储器的平台上处理对象的方法和使用该方法的平台 |
US7912889B1 (en) * | 2006-06-16 | 2011-03-22 | Nvidia Corporation | Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication |
CN103885752A (zh) * | 2012-12-20 | 2014-06-25 | 辉达公司 | 多线程处理单元中可编程的混合 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5581778A (en) * | 1992-08-05 | 1996-12-03 | David Sarnoff Researach Center | Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock |
US6188797B1 (en) * | 1997-05-27 | 2001-02-13 | Apple Computer, Inc. | Decoder for programmable variable length data |
JP2002252770A (ja) * | 2001-02-22 | 2002-09-06 | Matsushita Graphic Communication Systems Inc | 画像情報の分類方法,画像符号化方法および画像符号化装置 |
US7747070B2 (en) * | 2005-08-31 | 2010-06-29 | Microsoft Corporation | Training convolutional neural networks on graphics processing units |
US8990280B2 (en) * | 2005-09-30 | 2015-03-24 | Nvidia Corporation | Configurable system for performing repetitive actions |
FR2895103B1 (fr) | 2005-12-19 | 2008-02-22 | Dxo Labs Sa | Procede et systeme de traitement de donnees numeriques |
US8644643B2 (en) * | 2006-06-14 | 2014-02-04 | Qualcomm Incorporated | Convolution filtering in a graphics processor |
JP5171118B2 (ja) * | 2007-06-13 | 2013-03-27 | キヤノン株式会社 | 演算処理装置及びその制御方法 |
JP5135121B2 (ja) * | 2008-08-22 | 2013-01-30 | 株式会社東芝 | データ受信装置、データ受信方法、及びデータ受信プログラム |
US10007527B2 (en) * | 2012-03-05 | 2018-06-26 | Nvidia Corporation | Uniform load processing for parallel thread sub-sets |
US9679084B2 (en) * | 2013-03-14 | 2017-06-13 | Oracle International Corporation | Memory sharing across distributed nodes |
US10223333B2 (en) | 2014-08-29 | 2019-03-05 | Nvidia Corporation | Performing multi-convolution operations in a parallel processing system |
-
2015
- 2015-11-25 US US14/951,588 patent/US10255547B2/en active Active
- 2015-12-02 DE DE102015224026.6A patent/DE102015224026A1/de active Pending
- 2015-12-04 CN CN201510884505.3A patent/CN105678378B/zh active Active
-
2019
- 2019-03-26 US US16/365,634 patent/US20190220731A1/en active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101375311A (zh) * | 2005-12-19 | 2009-02-25 | 德克索实验室 | 用于在具有一个或者多个处理器和存储器的平台上处理对象的方法和使用该方法的平台 |
US7912889B1 (en) * | 2006-06-16 | 2011-03-22 | Nvidia Corporation | Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication |
CN103885752A (zh) * | 2012-12-20 | 2014-06-25 | 辉达公司 | 多线程处理单元中可编程的混合 |
Also Published As
Publication number | Publication date |
---|---|
US20160162402A1 (en) | 2016-06-09 |
US20190220731A1 (en) | 2019-07-18 |
CN105678378A (zh) | 2016-06-15 |
US10255547B2 (en) | 2019-04-09 |
DE102015224026A1 (de) | 2016-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105678378B (zh) | 间接访问样本数据以在并行处理系统中执行多卷积操作 | |
US10223333B2 (en) | Performing multi-convolution operations in a parallel processing system | |
US9934153B2 (en) | Patch memory system | |
US20230251861A1 (en) | Accelerating linear algebra kernels for any processor architecture | |
EP3757901A1 (en) | Schedule-aware tensor distribution module | |
US11604649B2 (en) | Techniques for efficiently transferring data to a processor | |
CN109978751A (zh) | 多gpu帧渲染 | |
CN103793893B (zh) | 采用限缓冲区处理的世界和屏幕空间管线间基元重新排序 | |
US20170206231A1 (en) | Tree traversal with backtracking in constant time | |
TWI437507B (zh) | 具有多線程執行單元之繪圖處理裝置及其記憶體存取方法 | |
US11651194B2 (en) | Layout parasitics and device parameter prediction using graph neural networks | |
CN112785485A (zh) | 用于有效的结构附接存储器的技术 | |
US10699427B2 (en) | Method and apparatus for obtaining sampled positions of texturing operations | |
US11645533B2 (en) | IR drop prediction with maximum convolutional neural network | |
US11327900B2 (en) | Securing memory accesses in a virtualized environment | |
CN103885893A (zh) | 用于访问内容寻址存储器的技术 | |
CN110659219A (zh) | 虚拟内存管理 | |
US20110072438A1 (en) | Fast mapping table register file allocation algorithm for simt processors | |
US11907717B2 (en) | Techniques for efficiently transferring data to a processor | |
US20210255963A1 (en) | Addressing cache slices in a last level cache | |
US11941743B2 (en) | Generation of sample points in rendering applications using elementary interval stratification | |
US20220269558A1 (en) | System and methods for hardware-software cooperative pipeline error detection | |
CN116775518A (zh) | 用于高效访问多维数据结构和/或其他大型数据块的方法和装置 | |
US9772864B2 (en) | Methods of and apparatus for multidimensional indexing in microprocessor systems | |
CN101751356B (zh) | 用于改进直接存储器存取传送效率的方法、系统和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |