一种多维数据扩充传输的方法、装置以及系统制造方法及图纸

技术编号:15746162 阅读:292 留言:0更新日期:2017-07-03 00:52
本发明专利技术提供了一种多维数据扩充传输的方法、装置以及系统,其中,于数据传输前需要确定对数据集的每一维度的扩充区域的位置、扩充区域的大小和扩充区域填充的数值,并根据上述设定构建多个控制寄存器,在从主机的存储区向片上存储传输数据时,可以同时将数据集扩充为程序员设定的格式,无需在片上或者在主机端对数据进行拷贝,既能够节约memory的空间,也可以减少传输的时间。

Method, device and system for multidimensional data expansion transmission

The present invention provides a method for multidimensional data transmission, expansion device and system, which, in data transmission before the need to determine the data set of each dimension expansion zone, numerical extension area and extension area filling, and according to the above setting to form a plurality of control registers, in the storage area from the host to cache data transmission, can also be extended to the programmer set data set format, without in the film or on the host side of the data copy, not only can save the space of memory, but also can reduce the transmission time.

【技术实现步骤摘要】
一种多维数据扩充传输的方法、装置以及系统
本专利技术涉及数据扩充领域,具体而言,涉及一种多维数据扩充传输的方法、装置以及系统。
技术介绍
目前,深度学习、人工智能以及大数据应用等领域中,处理多维矩阵或图像的应用越来越多。在处理过程中,可能需要对数据集进行一些扩充处理,例如以下两种情况:(1)输入数据集不规则,需要补全的情况。例如,在调用openBLAS库的GEMM时,该函数是将矩阵切割成固定大小的块后进行加速,如果输入矩阵的行和列无法对应地整除加速块的行和列,即无法全部切分成需要的固定大小的块,这时就需要对矩阵进行填充。(2)在输入集的边界处理时,需要在超出输入集边界的地方取0或MAX,或者某个特定数的情况。例如,sift的卷积过程中,为了防止图片卷积后出现黑边,需要在边界处理时改变卷积核的大小,或者是不改变卷积核而是将图片的边界扩大,即超出部分采用输入集的边界值。面对上述两种情况时,目前比较常用处理方式有两种,其中一种是在程序中写分支语句,当超出输入数据集的大小时,采取对应的方式进行解决;另一种是将数据集进行读取,改变其结构后,再存入memory中。但在目前很多片上结构、加速器中,上述方法不能很好的解决问题。在很多的加速器上,每个PE较为简单,可能只由几个计算部件组成,无法支持分支指令;而片上存储是有限的,如果在片上展开矩阵,那么片上存储的利用率会降低,而且增加了很多读写操作,加速器的效率也会降低。而在主机端对数据展开的话,加速器需要等待主机将数据集展开,传输到片上后再进行处理,这样会增加等待时间,并且增加了传输的数据集的量,传输速度会进一步受到memory的带宽影响。综上可知,从主机向片上存储比较小的片上系统或加速器传输一些不规则的数据集或者是需要对边界进行处理的数据集时,片上的计算单元无法使用分支指令,且在片上进行数据扩充会占用比较大的片上存储,而在主机端进行数据扩充会增加传输的数据量和传输时间。
技术实现思路
本专利技术提供一种多维数据扩充传输的方法、装置以及系统,用以通过硬件的方式于主机端向片上传输数据的同时将数据集进行扩充。为达到上述目的,本专利技术提供了一种多维数据扩充传输的方法,该方法用于将一数据集从一主机传输至一片上系统或加速器中,并于传输的同时对该数据集进行扩充,当该多维数据为二维数据时,其包括以下步骤:S1:确定需要传输的数据集A的行数row0、列数col0和首地址a0,其中,数据集A位于一主机的存储区;S2:确定对数据集A的每一维度的扩充区域的位置、扩充区域的大小和扩充区域填充的数值,其中,二维扩充区域为2Dformer和2Dlatter,一维扩充区域为1Dformer和1Dlatter,2Dformer和2Dlatter之间为数据集A的二维区域2Dmiddle,1Dformer和1Dlatter为数据集A的一维区域1Dmiddle;S3:根据S2的结果确定扩充后的数据集B的行数row1、列数col1以及接收数据的首地址a1,其中,数据集B位于一片上系统或加速器的存储区,接收数据的首地址a1即为数据集B的首地址,并且数据集B的2Dformer、2Dlatter、1Dformer、1Dlatter、2Dmiddle和1Dmiddle所在的区域与数据集A中的相应区域对应;S4:根据S2的结果,分别构建一2D控制模块与一1D控制模块,其中,2D控制模块包括2Dformer模块、2Dmiddle模块和2Dlatter模块,1D控制模块包括1Dformer、1Dmiddle模块和1Dlatter模块,并且分别为2Dformer模块、2Dlatter模块、1Dformer模块和1Dlatter模块构建多个控制寄存器,多个控制寄存器的名称及其功能定义如下表:S5:启动数据传输过程,以将数据集A及其扩充区域传输至以首地址a1为起始地址的存储区,2D控制模块首先向其中的2Dformer模块发送开始传输命令;S6:2Dformer模块接收到开始传输命令后查看自身Pad_valid中写入的数值,若为0则不填充数据,若为1则进一步查看Pad_type中写入的值;S7:若pad_type中写入的值为0则执行步骤S8-S11,通过步骤S8-S11向数据集B的2Dformer区域写入一个固定的数,若pad_type中写入的值为1则执行步骤S12-S16,通过步骤S12-S16将数据集B的2Dformer区域降维为多个1D区域并对多个1D区域完成数据写入,每个1D区域中的1Dmiddle所在区域写入的均是数据集A的上边界;S8:进一步查看Pad_num_type中写入的值,若Pad_num_type中写入的值为0,2Dformer模块则从Pad_num中读取数据,若为1则从Pad_num索引的地址中读取数据;S9:2Dformer模块将读取到的数据与Pad_length中写入的数值发送至一2Dpadding模块,2Dpadding模块读取col1的值并向一store模块发送Pad_length*col1次写请求,写请求中包括步骤S8中读取到的数据以及每写入一次数据后,下次写入数据的首地址;S10:store模块根据上一步骤接收到的消息从接收数据的首地址a1开始进行数据写入,store模块每完成一次写入后自动记录下次写入数据的首地址,直至Pad_length*col1次写请求全部完成;S11:2Dpadding模块向2Dformer模块发送写入完成消息;S12:2Dformer模块向1D控制模块发送写入开始消息,消息包括数据集A的首地址a0、row0、col0;S13:1D控制模块向1Dformer模块发送开始消息,1Dformer模块查看自身Pad_valid、Pad_length、Pad_type、Pad_num_type和Pad_num中写入的数值并向store模块发送Pad_length次写请求,store模块进行数据写入,直至Pad_length次写请求全部完成,此处的Pad_length为1Dformer模块对应的名称为Pad_length的控制寄存器中写入的数值;S14:1Dformer模块向1Dmiddle模块发送消息,1Dmiddle模块读取步骤S12中接收到的首地址a0和col0并从首地址a0开始读取col0个数据并向store模块发送col0次写请求,store模块进行数据写入直至col0次写请求全部完成;S15:1Dmiddle模块向1Dlatter模块发送消息,1Dlatter模块根据上述步骤S13中1Dformer模块控制的写入方式进行数据写入;S16:1Dlatter模块完成写入后,1D控制模块向2Dformer模块发送一写入完成消息;S17:2Dformer模块接收到1Dlatter模块发送的写入完成消息后,发送写入下一行数据的消息至1D控制模块,1D控制模块控制写入数据集B中的下一行数据,直至Pad_length个消息全部完成,此处的Pad_length为2Dformer模块对应的控制寄存器中定义的数值,其中,向数据集B写入每一行数据均通过步骤S13~S16进行;S18:2Dformer模块向2Dmiddle模块发送开始传输命令;S19:2Dmiddle模块读取row0的数值并向本文档来自技高网
...
一种多维数据扩充传输的方法、装置以及系统

【技术保护点】
一种多维数据扩充传输的方法,该方法用于将一数据集从一主机传输至一片上系统或加速器中,并于传输的同时对该数据集进行扩充,当该多维数据为二维数据时,其特征在于,包括以下步骤:S1:确定需要传输的数据集A的行数row0、列数col0和首地址a0,其中,数据集A位于一主机的存储区;S2:确定对数据集A的每一维度的扩充区域的位置、扩充区域的大小和扩充区域填充的数值,其中,二维扩充区域为2D former和2D latter,一维扩充区域为1D former和1D latter,2D former和2D latter之间为数据集A的二维区域2D middle,1D former和1D latter为数据集A的一维区域1D middle;S3:根据S2的结果确定扩充后的数据集B的行数row1、列数col1以及接收数据的首地址a1,其中,数据集B位于一片上系统或加速器的存储区,接收数据的首地址a1即为数据集B的首地址,并且数据集B的2D former、2D latter、1D former、1D latter、2D middle和1D middle所在的区域与数据集A中的相应区域对应;S4:根据S2的结果,分别构建一2D控制模块与一1D控制模块,其中,2D控制模块包括2D former模块、2D middle模块和2D latter模块,1D控制模块包括1D former、1D middle模块和1D latter模块,并且分别为2D former模块、2D latter模块、1D former模块和1D latter模块构建多个控制寄存器,多个控制寄存器的名称及其功能定义如下表:...

【技术特征摘要】
1.一种多维数据扩充传输的方法,该方法用于将一数据集从一主机传输至一片上系统或加速器中,并于传输的同时对该数据集进行扩充,当该多维数据为二维数据时,其特征在于,包括以下步骤:S1:确定需要传输的数据集A的行数row0、列数col0和首地址a0,其中,数据集A位于一主机的存储区;S2:确定对数据集A的每一维度的扩充区域的位置、扩充区域的大小和扩充区域填充的数值,其中,二维扩充区域为2Dformer和2Dlatter,一维扩充区域为1Dformer和1Dlatter,2Dformer和2Dlatter之间为数据集A的二维区域2Dmiddle,1Dformer和1Dlatter为数据集A的一维区域1Dmiddle;S3:根据S2的结果确定扩充后的数据集B的行数row1、列数col1以及接收数据的首地址a1,其中,数据集B位于一片上系统或加速器的存储区,接收数据的首地址a1即为数据集B的首地址,并且数据集B的2Dformer、2Dlatter、1Dformer、1Dlatter、2Dmiddle和1Dmiddle所在的区域与数据集A中的相应区域对应;S4:根据S2的结果,分别构建一2D控制模块与一1D控制模块,其中,2D控制模块包括2Dformer模块、2Dmiddle模块和2Dlatter模块,1D控制模块包括1Dformer、1Dmiddle模块和1Dlatter模块,并且分别为2Dformer模块、2Dlatter模块、1Dformer模块和1Dlatter模块构建多个控制寄存器,多个控制寄存器的名称及其功能定义如下表:S5:启动数据传输过程,以将数据集A及其扩充区域传输至以首地址a1为起始地址的存储区,2D控制模块首先向其中的2Dformer模块发送开始传输命令;S6:2Dformer模块接收到开始传输命令后查看自身Pad_valid中写入的数值,若为0则不填充数据,若为1则进一步查看Pad_type中写入的值;S7:若pad_type中写入的值为0则执行步骤S8-S11,通过步骤S8-S11向数据集B的2Dformer区域写入一个固定的数,若pad_type中写入的值为1则执行步骤S12-S16,通过步骤S12-S16将数据集B的2Dformer区域降维为多个1D区域并对多个1D区域完成数据写入,每个1D区域中的1Dmiddle所在区域写入的均是数据集A的上边界;S8:进一步查看Pad_num_type中写入的值,若Pad_num_type中写入的值为0,2Dformer模块则从Pad_num中读取数据,若为1则从Pad_num索引的地址中读取数据;S9:2Dformer模块将读取到的数据与Pad_length中写入的数值发送至一2Dpadding模块,2Dpadding模块读取col1的值并向一store模块发送Pad_length*col1次写请求,写请求中包括步骤S8中读取到的数据以及每写入一次数据后,下次写入数据的首地址;S10:store模块根据上一步骤接收到的消息从接收数据的首地址a1开始进行数据写入,store模块每完成一次写入后自动记录下次写入数据的首地址,直至Pad_length*col1次写请求全部完成;S11:2Dpadding模块向2Dformer模块发送写入完成消息;S12:2Dformer模块向1D控制模块发送写入开始消息,消息包括数据集A的首地址a0、row0、col0;S13:1D控制模块向1Dformer模块发送开始消息,1Dformer模块查看自身Pad_valid、Pad_length、Pad_type、Pad_num_type和Pad_num中写入的数值并向store模块发送Pad_length次写请求,store模块进行数据写入,直至Pad_length次写请求全部完成,此处的Pad_length为1Dfor...

【专利技术属性】
技术研发人员:向陶然安述倩马丽娜叶笑春王达张浩范东睿
申请(专利权)人:北京中科睿芯科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1