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较为简单,可能只由几个计算部件组成,无法支持分支指令;而片上存储是有限的,如果在片上展开矩阵,那么片上存储的利用率会降低,而且增加了很多读写操作,加速器的效率也会降低。而在主机端对数据展开的话,加速器需要等待主机将数据集展开,传输到片上后再进行处理,这样会增加等待时间,并且增加了传输的数据集的量,传输速度会进一步受到memo ...
【技术保护点】
一种多维数据扩充传输的方法,该方法用于将一数据集从一主机传输至一片上系统或加速器中,并于传输的同时对该数据集进行扩充,当该多维数据为二维数据时,其特征在于,包括以下步骤: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的 ...
【技术特征摘要】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。