发明内容
本发明实施例解决的是在管理系统变量的过程中,需要占用较多的片内资源,系统性能较差的技术问题。
为解决上述技术问题,本发明实施例提供一种图形处理器的系统变量生成方法,包括:存储基准通道对应数据的系统变量基准值;所述系统变量基准值包括本地基准标识以及全局基准标识;获取所述基准通道对应数据的所述本地基准标识以及所述全局基准标识;基于所述本地基准标识及所述全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识。
可选的,所述基于所述本地基准标识及所述全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识,包括:获取网格模式;根据所述网格模式、所述本地基准标识及所述全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识。
可选的,所述网格模式选自第一网格模式和第二网格模式;所述第一网格模式对应的网格长度为线程组中通道数目的整数倍;所述第二网格模式对应的网格长度不等于所述线程组中通道数目的整数倍,且所述第二网格模式对应的网格长度与网格宽度的乘积不等于所述线程组中的通道数目的整数倍。
可选的,所述网格模式为所述第一网格模式;所述根据所述网格模式以及所述本地基准标识及所述全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识,包括:所述目标通道对应数据的本地目标x轴坐标值为:所述目标通道的标识信息与所述本地基准标识中的本地基准x轴坐标值进行或运算得到的结果,或者,所述目标通道的标识信息与所述本地基准x轴坐标值进行加法运算得到的结果;将所述本地基准标识中的基准y轴坐标值作为本地目标y轴坐标值;所述目标通道对应数据的全局目标x轴坐标值为:所述目标通道的标识信息与所述全局基准x轴坐标值进行或运算得到的结果,或者,所述目标通道的标识信息与所述全局基准x轴坐标值进行加法运算得到的结果;将所述全局基准标识中的全局基准y轴坐标值作为全局目标y轴坐标值。
可选的,所述网格模式为第二网格模式,所述根据所述网格模式以及所述本地基准标识及所述全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识,包括:根据预设的偏移量映射表,获取与所述目标通道的标识信息对应的本地x轴坐标值偏移量以及本地y轴坐标值偏移量;将所述本地x轴坐标值偏移量与本地基准x轴坐标值之和,作为所述目标通道对应数据的本地目标x轴坐标值;将所述本地y轴坐标值偏移量与本地基准y轴坐标值之和,作为所述目标通道对应数据的本地目标y轴坐标值;根据所述偏移量映射表,获取与所述目标通道对应数据的标识信息对应的全局x轴坐标值偏移量以及全局y轴坐标值偏移量;将所述全局x轴坐标值偏移量与全局基准x轴坐标值之和,作为所述目标通道对应数据的全局目标x轴坐标值;将所述全局y轴坐标值偏移量与全局基准y轴坐标值之和,作为所述目标通道对应数据的全局目标y轴坐标值。
可选的,所述图形处理器的系统变量生成方法还包括:若网格的长度和/或宽度与线程组中的通道数目无关,选取所述第一网格模式或所述第二网格模式对所述网格进行模式划分。
可选的,所述选取所述第一网格模式或所述第二网格模式对所述网格进行模式划分,包括:采用所述第一网格模式对所述网格进行模式试划分,并基于试划分结果确定所述网格内定义的计算任务所需的线程组数目;采用所述第二网格模式对所述网格进行模式试划分,并基于试划分结果确定所述网格内定义的计算任务所需的线程组数目;选取所需的线程组数目最少的网格模式,对所述网格进行模式划分。
可选的,所述目标通道与所述基准通道为同一线程组中的通道。
本发明实施例还提供了一种图形处理器,包括:存储单元,用于存储基准通道对应数据的系统变量基准值;所述系统变量基准值包括本地基准标识以及全局基准标识;获取单元,用于获取所述基准通道对应数据的所述本地基准标识以及所述全局基准标识;生成单元,用于基于所述本地基准标识及所述全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识。
可选的,所述生成单元,用于获取网格模式;根据所述网格模式、所述本地基准标识及所述全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识。
可选的,所述网格模式选自第一网格模式和第二网格模式;所述第一网格模式对应的网格长度为线程组中通道数目的整数倍;所述第二网格模式对应的网格长度不等于所述线程组中通道数目的整数倍,且所述第二网格模式对应的网格长度与网格宽度的乘积不等于所述线程组中的通道数目的整数倍。
可选的,所述网格模式为所述第一网格模式时,所述生成单元,生成的所述目标通道对应数据的本地目标x轴坐标值为:所述目标通道的标识信息与所述本地基准标识中的本地基准x轴坐标值进行或运算得到的结果,或者,所述目标通道的标识信息与所述本地基准x轴坐标值进行加法运算得到的结果;将所述本地基准标识中的基准y轴坐标值作为本地目标y轴坐标值;所述目标通道对应数据的全局目标x轴坐标值为:所述目标通道的标识信息与所述全局基准x轴坐标值进行或运算得到的结果,或者,所述目标通道的标识信息与所述全局基准x轴坐标值进行加法运算得到的结果;将所述全局基准标识中的全局基准y轴坐标值作为全局目标y轴坐标值。
可选的,所述网格模式为所述第二网格模式时,所述生成单元,用于根据预设的偏移量映射表,获取与所述目标通道的标识信息对应的本地x轴坐标值偏移量以及本地y轴坐标值偏移量;将所述本地x轴坐标值偏移量与本地基准x轴坐标值之和,作为所述目标通道对应数据的本地目标x轴坐标值;将所述本地y轴坐标值偏移量与本地基准y轴坐标值之和,作为所述目标通道对应数据的本地目标y轴坐标值;根据所述偏移量映射表,获取与所述目标通道对应数据的标识信息对应的全局x轴坐标值偏移量以及全局y轴坐标值偏移量;将所述全局x轴坐标值偏移量与全局基准x轴坐标值之和,作为所述目标通道对应数据的全局目标x轴坐标值;将所述全局y轴坐标值偏移量与全局基准y轴坐标值之和,作为所述目标通道对应数据的全局目标y轴坐标值。
可选的,所述图形处理器还包括:模式划分单元,用于在网格的长度和/或宽度与线程组中的通道数目无关时,选取所述第一网格模式或所述第二网格模式对所述网格进行模式划分。
可选的,所述模式划分单元,用于采用所述第一网格模式对所述网格进行模式试划分,并基于试划分结果确定所述网格内定义的计算任务所需的线程组数目;采用所述第二网格模式对所述网格进行模式试划分,并基于试划分结果确定所述网格内定义的计算任务所需的线程组数目;选取所需的线程组数目最少的网格模式,对所述网格进行模式划分。
可选的,所述目标通道与所述基准通道为同一线程组中的通道。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述任一种所述的系统变量生成方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
存储基准通道对应数据的系统变量基准值,系统变量基准值包括本地基准标识以及全局基准标识。基于本地基准标识以及全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识。由此,只需要存储基准通道对应的本地基准标识以及全局基准标识即可,故能够有效减少需要存储的系统变量,且无需通过额外的指令指示计算所需的数据,提高系统性能。
具体实施方式
如背景技术中所述,GPU在运行过程中,管理并维护上述的系统变量通常采用的两种方案中,方案1需要占用较多宝贵的片内资源,方案2需要采用额外的指令计算以得到所需的数据,会影响GPU的系统性能。
而在本发明实施例中,存储基准通道对应数据的系统变量基准值,系统变量基准值包括本地基准标识以及全局基准标识。基于本地基准标识以及全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识。由此,只需要存储基准通道对应的本地基准标识以及全局基准标识即可,故能够有效减少需要存储的系统变量,且无需通过额外的指令指示计算所需的数据,提高系统性能。
为使本发明的上述目的、特征和有益效果能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
本发明实施例提供了一种图形处理器的系统变量生成方法,参照图1,以下通过具体步骤进行详细说明。
步骤100,存储基准通道对应数据的系统变量基准值。
在本发明实施例中,系统变量基准值包括本地基准标识以及全局基准标识。
步骤101,获取基准通道对应数据的本地基准标识以及全局基准标识。
在具体实施中,在GPU并行计算过程中,通常以网格(grid)的格式来分割并管理需要并行计算的任务。分割得到的每一个网格对应的数据块可以三维(xyz)的方式表示。
在GPU内部,线程组(warp)是最基本的调度单元。一个线程组可以包括2n个真实的运算单元,每个运算单元称之为一条通道(lane)。网格中定位的计算任务最终会被分配到线程组中的通道执行。
如本发明一实施例,一个线程组包括64条通道。如本发明另一实施例,一个线程组包括32条通道。
在本发明实施例中,可以针对每一个线程组,选择一条通道作为该线程组对应的基准通道。或者,也可以对应于多个线程组,选择某一个线程组中的一条通道作为上述多个线程组对应的基准通道。
在确定了基准通道之后,即可获取该基准通道对应数据的本地标识(local id),作为本地基准标识;获取该基准通道对应数据的全局标识(global id),作为全局基准标识。
在本发明实施例中,基准通道对应数据的本地标识以及全局标识,实质上用于表征该数据在数据块中所处的位置。在具体应用中,基准通道对应数据的本地标识以及全局标识可以坐标值的形式呈现。
在具体实施中,基准通道对应数据的本地基准标识,实质上可以视为基准通道对应数据在数据块中的本地坐标值,也即本地基准坐标值;基准通道对应数据的全局基准标识,实质上可以视为基准通道对应数据在数据块中的全局坐标值,也即全局基准坐标值。
在本发明实施例中,基准通道对应数据的本地基准坐标值与全局基准坐标值均可以为二维坐标值,或者均可以为三维坐标值。本地基准坐标值与全局基准坐标值的维度可以与网格的维度相同。
换言之,若网格的维度为二维,则本地基准坐标值与全局基准坐标值均为二维坐标值;若网格的维度为三维,则本地基准坐标值与全局基准坐标值均为三维坐标值。
例如,本地基准坐标值为(x0,y0,z0),全局基准坐标值为(X0,Y0,Z0)。又如,本地基准坐标值为(x0,y0),全局基准坐标值为(X0,Y0)。
步骤102,基于本地基准标识以及全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识。
在本发明实施例中,可以根据基准通道对应数据的本地基准标识以及全局基准标识,生成目标通道对应数据的本地标识以及全局标识。
在本发明实施例中,基准通道与目的通道可以为同一目的线程组中的通道。换言之,基准通道与目标通道属于同一线程组。
基准通道与目标通道也可以为不同线程组中的通道。换言之,基准通道与目标通道可以属于不同的线程组。
在本发明下述实施例中,目标通道对应数据的本地标识简称为本地目标标识,目标通道对应数据的全局标识简称为全局目标标识。
在具体实施中,本地目标标识与全局目标标识,可以用于表征目标通道对应数据在数据块中所处的位置。在具体应用中,本地目标标识以及全局目标标识可以坐标值的形式呈现。此时,本地目标标识即为本地目标坐标值,全局目标标识即为全局目标坐标值。
本地目标坐标值与全局目标坐标值均可以为二维坐标值,或者均可以为三维坐标值。本地目标坐标值与全局目标坐标值的维度可以与网格的维度相同。
换言之,若网格的维度为二维,则本地目标坐标值与全局目标坐标值均为二维坐标值;若网格的维度为三维,则本地目标坐标值与全局目标坐标值均为三维坐标值。
具体地,若分割得到的网格为三维数据块,则本地基准坐标值以三维形式呈现,分别为本地基准x轴坐标值、本地基准y轴坐标值以及本地基准z轴坐标值;本地目标坐标值以三维形式呈现,分别为本地目标x轴坐标值、本地目标y轴坐标值以及本地目标z轴坐标值。
相应地,若分割得到的网格为二维数据块,则本地基准坐标值以二维形式呈现,分别为本地基准x轴坐标值、本地基准y轴坐标值;本地目标坐标值以二维形式呈现,分别为本地目标x轴坐标值、本地目标y轴坐标值。
在本发明实施例中,网格模式可以包括第一网格模式以及第二网格模式。具体地,第一网格模式对应的网格长度可以为线程组中通道数目的整数倍。第二网格模式对应的网格长度不等于线程组中通道数目的整数倍,且第二网格模式对应的网格长度与网格宽度的乘积等于线程组中的通道数目的整数倍。
例如,线程组包括64条通道。对于第一网格模式,其对应的网格长度为64条通道。又如,第一网格模式对应的网格长度为128条通道。
对于第二网格模式,网格长度为8条通道,网格宽度为8条通道,共计64条通道。又如,对于第二网格模式,网格长度为32条通道,网格宽度为8条通道。
参照图2,给出了本发明实施例中的一种第一网格模式的通道分布示意图。参照图3,给出了本发明实施例中的一种第二网格模式的通道分布示意图。
图2中,第一网格模式对应的网格长度为64条通道,也即X轴方向上的数据由64条通道执行。第一网格模式对应的网格宽度为4条通道,如Y轴方向所示。图2中的网格对应4个线程组。
图3中,第二网格模式对应的网格长度为8条通道,也即X轴方向上的数据由8条通道执行。第二网格模式对应的网格宽度为8条通道,如Y轴方向所示。图3中的网格对应4个线程组。图2及图3中,表格对应的数字为通道的编号。
在本发明实施例中,网格模式为第一网格模式时,目标通道与基准通道属于同一线程组:
若目标通道对应数据以三维形式呈现,则:
目标通道对应数据的本地目标x轴坐标值为:目标通道的标识信息与本地基准x轴坐标值进行或运算得到的结果,或者,目标通道的标识信息与本地基准x轴坐标值进行加法运算得到的结果;目标通道对应数据的本地目标y轴坐标值为:基准通道对应数据的本地基准y轴坐标值;目标通道对应的本地目标z轴坐标值为:基准通道对应数据的本地基准z轴坐标值。
目标通道对应数据的全局目标x轴坐标值为:目标通道的标识信息与全局基准x轴坐标值进行或运算得到的结果,或者,目标通道的标识信息与全局基准x轴坐标值进行加法运算得到的结果;目标通道对应数据的全局目标y轴坐标值为:基准通道对应数据的全局基准y轴坐标值;目标通道对应的全局目标z轴坐标值为:基准通道对应数据的全局基准z轴坐标值。
若目标通道对应数据以二维形式呈现,则:
目标通道对应数据的本地目标x轴坐标值为:目标通道的标识信息与本地基准x轴坐标值进行或运算得到的结果,或者,目标通道的标识信息与本地基准x轴坐标值进行加法运算得到的结果;目标通道对应数据的本地目标y轴坐标值为:基准通道对应数据的本地基准y轴坐标值。
目标通道对应数据的全局目标x轴坐标值为:目标通道的标识信息与本地基准x轴坐标值进行或运算得到的结果,或者,目标通道的标识信息与本地基准x轴坐标值进行加法运算得到的结果;目标通道对应数据的全局目标y轴坐标值为:基准通道对应数据的全局基准y轴坐标值。
下面以第一网格模式对应的网格长度为64条通道,网格宽度为2条通道,网格高度为3条通道为例进行说明。
基准通道为线程组中的第一条通道。基准通道对应数据的本地基准x轴坐标值为64,本地基准y轴坐标值为2,本地基准z轴坐标值为3。则目标通道对应数据的基准目标x轴坐标值为x=64|lane id,此处的lane id即为目标通道对应的标识(如目标通道对应的编号),也即将64与该目标通道对应的编号(如上述图2或图3中所示的0~63,即为通道对应的编号)进行或运算;目标通道对应数据的本地目标y轴坐标值为2,目标通道对应数据的本地目标z轴坐标值为3。
基准通道对应数据的全局基准x轴坐标值为128,全局基准y轴坐标值为3,全局基准z轴坐标值为3。则目标通道对应数据的全局目标x轴坐标值为x=128|lane id,也即将128与该目标通道对应的编号进行或运算;目标通道对应数据的全局目标y轴坐标值为3,目标通道对应数据的全局目标z轴坐标值为3。
对于第二网格模式,可以预先设置偏移量映射表,偏移量映射表可以包括本地偏移量映射表以及全局偏移量映射表。根据目标通道的标识信息(如目标通道的编号),从偏移量映射表中查找目标通道对应的本地x轴坐标值偏移量以及本地y轴坐标值偏移量、本地z轴坐标值偏移量;将基准通道对应的本地基准x轴坐标值与本地x轴坐标值偏移量相加,得到的和值即为本地目标x轴坐标值;将基准通道对应的本地基准y轴坐标值与本地y轴坐标值偏移量相加,得到的和值即为本地目标y轴坐标值;将基准通道对应的本地基准z轴坐标值与本地z轴坐标值偏移量相加,得到的和值即为本地目标z轴坐标值。
相应地,根据目标通道的标识信息(如目标通道的编号),从偏移量映射表中查找目标通道对应的全局x轴坐标值偏移量以及全局y轴坐标值偏移量、全局z轴坐标值偏移量;将基准通道对应的全局基准x轴坐标值与全局x轴坐标值偏移量相加,得到的和值即为全局目标x轴坐标值;将基准通道对应的全局基准y轴坐标值与全局y轴坐标值偏移量相加,得到的和值即为全局目标y轴坐标值;将基准通道对应的全局基准z轴坐标值与全局z轴坐标值偏移量相加,得到的和值即为全局目标z轴坐标值。
在同一线程组中,各通道对应的z轴坐标值相等。也就是说,对于目标通道的z轴坐标值,与基准通道的z轴坐标值相等,故无需进行相应偏移计算即可直接获取。
在具体实施中,可能还存在如下场景:分割出的网格大小既不属于第一网格模式,也不属于第二网格模式。继续以上述示例中线程组包括64条通道为例,分割出的网格的大小为100×100×2,也即网格的长度为100个数据,宽度为100个数据,高度为2个数据。可见,分割出的网格的模式既不属于第一网格模式,也不属于第二网格模式。下述将既不属于第一网格模式又不属于第二网格模式的网格模式统称为其他网格模式。
在本发明实施例中,针对其他网格模式,可以将其进行二次划分,也即先按照第一网格模式及第二网格模式,重新对其他网格模式进行试划分;根据试划分所需启动的线程组总数,确定将其他网格模式划分为第一网格模式,还是划分为第二网格模式。
在具体实施中,可以采用第一网格模式对网格进行模式试划分,基于试划分结果确定网格内定义的计算任务所需的线程组数目;采用第二网络模式对网格进行模式试划分,基于试划分结果确定网格内定义的计算任务所需的线程组数目。将两次试划分得到的所需的线程组数目进行比较,选取所需的线程组数目较少的网格模式,对网格进行模式划分。
以上述示例,网格的大小为100×100×2。第一网格模式对应的长度为64。
若采用第一网格模式,则每个x方向需要启动2个线程组,第二个线程组中之后前100-64=36条通道有效。总共需要启动2×100×2=400个线程组。
若采用第二网格模式,则每个x方向需要确定13个线程组,最后一个线程组在x方向上仅有100-8×12=4条通道有效。在y方向也需要启动13个线程组最后一个线程组在y方向上仅有100-8×12=4条通道有效。总共需要启动13×13×2=338个线程组。
由此,选择第二网格模式,能够在启动较少线程组的同时,有效减少需要存储的系统变量,且无需通过额外的指令指示计算所需的数据,提高系统性能。
在本发明实施例中,基准通道可以为线程组中的第一条通道或者其他通道。具体地,可以根据实际需要来从线程组对应的所有通道中选择一条通道作为基准通道。例如,选择线程组中的最后一条通道作为基准通道。
本领域技术人员能够理解,选取的基准通道不同,仅会对目标通道对应数据的本地目标标识(如上述实施例中的本地目标坐标值)和全局目标标识(如上述实施例中的全局目标坐标值)的具体计算方式产生影响,而不会对本发明实施例的方案产生影响。
综上可见,在本发明实施例中,只需要存储基准通道对应的本地基准标识以及全局基准标识即可,故能够有效减少需要存储的系统变量,且无需通过额外的指令指示计算所需的数据,提高系统性能。
参照图4,给出了本发明实施例还提供了一种图形处理器40,包括:存储单元400、获取单元401以及生成单元402,其中:
存储单元400,用于存储基准通道对应数据的系统变量基准值;所述系统变量基准值包括本地基准标识以及全局基准标识;
获取单元401,用于获取基准通道对应数据的所述本地基准标识以及所述全局基准标识;
生成单元402,用于基于所述本地基准标识及所述全局基准标识,生成目标通道对应数据的本地目标标识以及全局目标标识。
在具体实施中,上述存储单元、获取单元401以及生成单元402的具体执行过程可以对应参照上述步骤100~步骤102,此处不做赘述。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质为非易失性存储介质或非瞬态存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时执行上述任一种步骤100~步骤102对应的系统变量生成方法的步骤。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指示相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。