当前位置: 首页 > 专利查询>英特尔公司专利>正文

用于基于GPU的解块的高并行依赖性模式制造技术

技术编号:16114519 阅读:51 留言:0更新日期:2017-08-30 07:51
线程依赖性方案可显著减少依赖性负担,并在一些实施例中改进采用相对高的依赖性的视频压缩技术(诸如VP9)中的并行效率。一个基本特征是要将单独的大内核程序分裂成多个不那么依赖的较小内核程序,由此显著提高了能够潜在地并行运行的软件线程的数量。另一个特征是要定义具有特定线程的空间位置和相关联的上下文的较大数量的线程依赖性(用于各线程的所有依赖性候选的超集),并且掩蔽一些不必要的线程依赖性。

【技术实现步骤摘要】
【国外来华专利技术】用于基于GPU的解块的高并行依赖性模式
技术介绍
VP9是Google所提出的领先视频压缩标准,其在互联网媒体应用(包括流播视频和视频会议)上经历着日益增长的普及。VP9致力于64×64像素的超级块。VP9的解块模块通过首先对垂直边缘并且其次对水平边缘进行滤波(filtering),来减少超级块上的块状伪像。VP9的解块模块因其对近邻结果的高依赖性而在传统软件实现中消耗计算成本的大部分。更具体来说,线程在能够使用由那些邻近线程进行的执行的结果来完成执行之前需要等待邻近块的线程的执行。采用传统图形处理单元(GPU)实现,计算并行效率由于VP9解块模块的新空间依赖性模式而是非常差的。附图说明关于下列的图来描述一些实施例:图1示出按照一个实施例的波前26依赖性;图2示出按照一个实施例的超级块的解块边缘及其最靠近的近邻;图3示出按照一个实施例的用于各边缘的依赖性模式;图4示出按照一个实施例、分裂成128个较小线程的64×64像素超级块;图5示出用于一个实施例的七个依赖性候选;图6示出按照一个实施例、具有变换单元(TU)大小信息的依赖性插图;图7是用于一个实施例的流程图;图8是用于一个实施例的示意绘图;以及图9是按照一个实施例的系统的前视图。具体实施方式线程依赖性方案可显著减少依赖性负担(penalty),并且在一些实施例中改进具有相对高依赖性的视频压缩技术(诸如VP9)中的并行效率。这种方法可作为图形处理单元(GPU)软件解决方案或者固定功能硬件解决方案(作为两个实施例)来应用。单独大内核程序(kernel)可分裂成多个不太相依赖的较小内核程序,由此显著提高了能够潜在并行运行的软件线程的数量。另一个特征是定义具有特定线程的空间位置和相关联的上下文的较大数量的线程依赖性(用于各线程的所有依赖性候选的超集),并且掩蔽一些不必要的线程依赖性。采用更复杂的依赖性模式,在传统GPU软件实现中,各线程处理较大(例如,64×64)像素块数据区域,并且在一个内核程序中操纵垂直和水平边缘解块二者。在64×64像素块上不可能将垂直边缘和水平边缘解块分离,因为它们相互依赖。各内核程序具有左、左顶部、顶部和右顶部空间结果依赖性。对于全高清晰度(1920×1080)分辨率图片,峰值并行线程数量沿对角线仅为15个。这个数量比普及的GPU系统上可用的硬件线程的最大数量要小许多。考虑到对于实际系统需要斜升(rampup)和冷却阶段,平均并行线程数量比峰值数量要小许多。因此,执行单元(EU)的实际使用对于VP9解块模块是非常差的。在以下论述中,提供使用VP9的示例,但是原理也应用于具有从使用相对较大的块大小而产生的相对复杂的依赖性模式的任何解块模块。为了解决这些问题,64×64像素数据区域可分裂为许多较小线程(即,对于总共128个线程,为64个垂直边缘解块线程和64个水平边缘解块线程)。与传统VP9的4个依赖性方向(左、左顶部、顶部、右顶部)相比,这种方式将总依赖性候选的方向从4个提高到7个。虽然依赖性方向的总数量为7,但是采用特定线程的上下文,人员能够进一步掩蔽一些依赖性,使得在一些实施例中对于特定线程需要7个依赖性中的仅仅3个。媒体管线可使用记分板技术来增强线程依赖性。各线程在线程空间内具有关联(X,Y)坐标。各线程可具有多达八个依赖性。依赖性关系通过记分板中的相对距离(ΔX,ΔY)来描述。波前26-度依赖性是一示例。这个模式具有按照(ΔX,ΔY)的四个依赖性(-1,0)(-1,-1)(0,-1)和(1,-1)。各线程与在其正左方、左上方、正上方和右上方的线程具有依赖性。这导致能够同时运行的线程波。图1示出这个26-度依赖性,其中方框是线程,且数字表示线程执行顺序。波前26-度产生于跨图1中所示的能够并行运行的线程集合的网格的角度。图1示出线程执行顺序,其中数字表示线程执行顺序,各框表示线程。图1中仅示出128个线程的48个。因此,在左上角标记为1的方框表示首先执行的线程,然后在右边的方框2执行,然后标记为3的方框能够执行(并行地,一次两个地)。在26-度波前依赖性模式中,线程可依赖于在其左上方、正上方、右上方和其正左方的线程。因此在图1中,线程2仅依赖于在其左边的线程1。第二行中的线程3依赖于在其上方的线程1和在其右上的线程2。波前是同时运行的线程的数量。因此,执行序列是线程1和2、两个线程3、两个线程4以及通过5所标识的三个线程、通过6所标识的三个线程、通过7所标识的四个线程和四个线程8。因此,波是线程1、然后2、然后3(2)、4(2)、5(3)、6(3)、7(4)等。在具有总共48个线程的这个示例中,能够同时运行的线程的最大数量对于图1中的线程数7-12为4个。而且,这个最大在图1中左上角附近所进行的提高同时运行的线程的数量的预热时段之后被达到,并且之后跟随在接近图1中的右下角,降低同时运行的线程的数量的冷却时段。峰值的同时线程数量与线程空间的宽度或者高度相关。线程空间中可用的软件线程越多,则能够达到的GPU并行性越大。考虑VP9解块模块中的依赖性情形。可在对垂直和水平边缘二者的4×4像素块边界上来应用最低粒度解块操作。在VP9中,每个64×64像素块区域被称作超级块。解块的数据依赖性通过解块操作排序来确定。解块排序如下所述。在超级块内部,首先按照由左至右的垂直光栅扫描顺序来应用所有垂直边缘的解块,并且然后按照由顶部至底部的水平光栅扫描顺序来应用所有水平边缘解块。图2示出具有垂直和水平解块边缘二者的VP9超级块(通过加阴影所指示的)的左上角(8×8像素块)。垂直虚线是处理垂直解块边缘的线程,以及水平虚线是水平解块边缘。超级块的加阴影部分在上方和左边具有依赖性(如图2中所指示的)。因此,64个线程用来操纵水平边缘,以及64个线程用于垂直边缘。图3示出对于垂直和水平边缘二者的五个缺省依赖性。实线是依赖性边缘,以及点线是关联或近邻边缘。一般来说,存在基于不同边缘空间位置的不同依赖性模式。图3中的顶部三个图像示出垂直边缘依赖性。垂直边缘操作依赖于其左近邻的垂直边缘的结果,如由在其左边具有点线L4的实线L3所示。如果垂直边缘处于超级块边界上,则它依赖于其左超级块近邻的水平边缘结果,如连接到水平点线L6的垂直实线L5所示。图3中的底部两个图像示出水平边缘依赖性。水平边缘操作可依赖于其顶部近邻的水平边缘结果(如由在其上部具有点线L8的实线L7所示)以及其左和右垂直边缘的结果(如由具有示出在其侧的垂直点线L10的实线L9所示)。第一基本想法是将较大线程(传统的每线程64×64像素数据区域)分裂成没有“死锁”(即,不可确定)依赖性的许多较小线程。为了避免死锁依赖性,垂直边缘操作和水平边缘操作被置于分离的交织线程中。这是对于进行分裂的关键原因,因为以其它方式依赖性死锁是不可避免的。图4示出垂直和水平线程的交织,其中L代表左,T代表顶部,V代表仅操纵垂直边缘的线程,以及H代表仅操纵水平边缘的线程。数字是线程数量。因此,V00、H00是具有不同坐标的分离线程。例如,考虑如果图4中所示线程是顶部和左超级块(没有_T或_L),则V00具有(x,y)坐标(0,0),并且H00具有(x,y)坐标(1,0)。因此,V07_L、H07_L是在被处理块中的像本文档来自技高网...
用于基于GPU的解块的高并行依赖性模式

【技术保护点】
一种方法,包括:通过将用于整个块的较大内核程序分裂成具有较少依赖性的较小部分来执行用于视频压缩的解块;以及通过消除不必要的依赖性来减少用于给定线程的依赖性的数量。

【技术特征摘要】
【国外来华专利技术】2014.12.10 US 14/565,5551.一种方法,包括:通过将用于整个块的较大内核程序分裂成具有较少依赖性的较小部分来执行用于视频压缩的解块;以及通过消除不必要的依赖性来减少用于给定线程的依赖性的数量。2.如权利要求1所述的方法,包括使用与用于视频压缩的块大小的行数量加上该块大小的列数量相等的线程数量。3.如权利要求1所述的方法,包括基于所述块内的像素位点来减少不需要的依赖性。4.如权利要求1所述的方法,包括基于变换单元大小来减少不需要的依赖性。5.如权利要求1所述的方法,包括使用64×64像素或更大的块大小。6.如权利要求1所述的方法,包括每线程指派七个依赖性,以及然后尝试减少依赖性的数量。7.如权利要求6所述的方法,包括将七个依赖性指派给当前线程左边的两个线程、所述当前线程右边的一个线程、所述当前线程上方的三个线程、以及在所述当前线程下方且在所述当前线程左边的一个线程。8.一种设备,包括:处理器,用来通过将用于整个块的较大内核程序分裂成具有较少依赖性的较小部分来执行...

【专利技术属性】
技术研发人员:H吴JA古尔德
申请(专利权)人:英特尔公司
类型:发明
国别省市:美国,US

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

1