Gpu的资源分配方法和装置制造方法

文档序号:6533154阅读:606来源:国知局
Gpu的资源分配方法和装置制造方法
【专利摘要】资源分配方法和装置通过将使用通用GPU(GPGPU)的任务分类到操作中并且将相同的操作组合到请求中来高效地利用GPU资源。根据本公开的图形处理单元(GPU)的资源分配方法包括:接收包括至少一个操作的任务;以请求为单位存储至少一个操作;合并每个请求的相同的操作的数据;以及,根据请求的运行次序来分配GPU资源。
【专利说明】GPU的资源分配方法和装置

【技术领域】
[0001]本公开涉及图形处理单元(GPU)的资源分配方法和装置。更具体地,本公开涉及能够通过将使用通用GPU(GPGPU)的任务分类到操作中并且将相同的操作合并到请求中来高效地利用GPU资源的资源分配方法和装置。

【背景技术】
[0002]图1图示出用于使用GPU来处理请求的常规编程模型的结构。图1涉及在利用不同的程序大小执行相同的操作的三种情况下关于GPGPU请求的GPU核利用率。
[0003]在图1中,情况A、B和C分别涉及具有40、20和30的程序大小的GPGPU请求。阴影块101指示执行操作的核,并且空白块102指示不执行操作的核。因为GPU核的数量是100,所以GPU核的利用率至多是40%、20%和30%。
[0004]因为正在执行相同的操作,所以相同的程序被加载到核上。而且,因为在相应的情况A、B和C中数据的数量是40、20和30 ;尽管它们被求和,但是数据的总数变为小于GPU核的数量(即100)的90。因为对于GPU的操作请求是以任务为单位生成的,所以这是当前出现的不可避免的问题。
[0005]在常规GPGPU编程模型中,以任务为单位来处理数据处理请求。因此,不可能在低于任务级的操作级优化利用率。
[0006]同时,如果以流水线机制操作的GPU能够依序执行相同类型的操作,则由GPU核运行的程序被固定以增加流水线的效率。然而,在常规GPGPU编程模型中,以任务为单位来处理请求,并且因此不可能依序运行相同类型的操作。


【发明内容】

[0007]技术问题
[0008]为了解决以上讨论的现有技术的不足,本公开的主要目的是提供能够在操作级高效地分配GPU资源的资源分配方法和装置。
[0009]本公开的另一个目的是提供能够提高GPU的流水线效率的资源分配方法和装置。
[0010]对问题的解决方案
[0011]根据本公开的一个方面,一种图形处理单元(GPU)的资源分配方法包括:接收包括至少一个操作的任务;以请求为单位存储至少一个操作;合并每个请求的相同的操作的数据;以及根据请求的运行次序来分配GPU资源。
[0012]根据本公开的另一个方面,一种图形处理单元(GPU)的资源分配装置包括:存储器,存储至少一个请求;以及控制器,控制:接收包括至少一个操作的任务,以请求为单位存储至少一个操作,合并每个请求的相同的操作的数据,以及根据请求的运行次序来分配GPU资源。
[0013]发明的有益效果
[0014]本公开的资源分配方法和装置能够减小GPU的请求处理次数,以便提高GPU核利用的效率。
[0015]而且,本公开的资源分配方法和装置能够增加GPU流水线的效率,导致系统响应延迟的降低。

【专利附图】

【附图说明】
[0016]图1图示出用于使用GPU处理请求的常规编程模型的结构;
[0017]图2图示出根据本公开的实施例的资源分配装置的框图;
[0018]图3图示出根据本公开的实施例的资源分配方法的流程图;
[0019]图4a图示出根据本公开的实施例的、在资源分配方法中由操作运行次序生成的示例性数据相关性;
[0020]图4b图示出根据本公开的实施例的、在资源分配方法中由操作特性所引起的示例性数据相关性,即,操作内数据相关性;
[0021]图5a图示出根据本公开的实施例的图3的请求优化步骤350的详情的流程图;
[0022]图5b图示出通过图5a的请求优化过程所优化的请求处理结构;
[0023]图6图示出根据本公开的另一个实施例的图3的请求优化步骤350的详情的流程图;
[0024]图7图示出根据本公开的实施例的、在资源分配方法中用于请求优化的窗口机制;并且
[0025]图8图示出根据本公开的实施例的资源分配装置的配置。

【具体实施方式】
[0026]在进行以下的【具体实施方式】之前,阐述贯穿该专利文献所使用的某些语词的定义可能是有利的:术语“包括”和“包含”以及其派生意指不进行限制的包括;术语“或”是可兼的,意指和/或;字句“与...相关联的”和“与此相关联的”以及其派生可以意指包括、被包括在内、与...互连、包含、被包含在内、连接到或与...连接、耦合到或与...耦合、与...通信、与...协作、交织、并置、接近于、绑定到或与...绑定、具有、具有...的属性等等;并且术语“控制器”意指控制至少一个操作的任何设备、系统或其部分,这样的设备可以实施在硬件、固件或软件或者其至少两个的某组合中。应当注意到,与任何特定控制器相关联的功能不管是本地还是远程的都可以是集中的或分布的。贯穿该专利文献来提供对于某些语词的定义,那些本领域普通技术人员应该理解,在许多、即使不是最多实例中,这样的定义适用于这样的定义的语词的在先的以及将来的使用。
[0027]以下讨论的图2至8以及在该专利文献中用于描述本公开的原理的各种实施例是仅仅作为说明并且不管怎样不应当被理解为限制本公开的范围。本领域技术人员将理解,可以在任何适当地布置的系统或设备中实施本公开的原理。
[0028]贯穿附图使用相同的附图标记来指代相同的或类似的部分。在附图中,为了本公开的清楚可以夸大或省略或示意地描绘某些要素,并且不反映要素的实际的大小。参考附图来详细地描述本公开的示例性实施例。
[0029]图2图示出根据本公开的实施例的资源分配装置的框图。
[0030]如图2中所示,资源分配装置200包括GPU资源分配器220、即控制器、和存储器230。尽管图2涉及CPU 210和资源分配装置200被描绘为分离的功能块的示例性实施例,但本公开不局限于该配置。根据系统实施,资源分配装置200能够被配置为与CPU 210或GPU 240相关联地进行操作。
[0031]CPU 210向资源分配装置200传递利用GPGPU编程模型生成的任务信息。一旦接收到任务信息,资源分配装置200将任务划分到操作中来指配GPU资源分配优先级。如果从资源应用装置200接收到指配结果,则GPU 240按优先级的次序来处理(运行)请求。
[0032]更详细地,控制器220控制存储器230来接收包括至少一个操作的任务、将至少一个操作分类到请求中,并且按先进先出方式的次序将请求存储在队列中。
[0033]控制器220也确定请求的数量是否大于阈值以检查操作的数据的相关性,即,执行当前操作是否需要其他操作结果。执行该确定以防止请求优化操作引起显著的开销。
[0034]如果堆叠在队列中的请求的数量大于阈值,则这意味着,数据没有相关性,并且因此控制器220运行请求优化操作。控制器220根据优化结果将队列中的请求运行优先级进行重排序。稍后参考附图来描述优化过程。
[0035]图3图示出根据本公开的实施例的资源分配方法的流程图。
[0036]在步骤310,控制器220接收通过GPGPU编程模型生成的任务。接下来,控制器220将所接收的任务划分到操作中,以生成请求队列。在队列中,在步骤320中,依序对每个任务将被运行的操作进行排队。
[0037]在步骤330,控制器220确定请求的数量是否大于阈值。根据系统实施能够由控制器220来提前设定阈值,并且稍后参考图8进行详细描述。
[0038]如果所请求的操作的数量不大于用于优化的阈值,则控制器220向GPU传递排队的操作,使得在步骤360GPU依序运行操作。
[0039]如果所请求的操作的数量大于阈值,则在步骤340控制器220检查数据相关性。
[0040]控制器220按运行次序来确定在相同的任务中所请求的至少两个操作的输入和输出数据是否具有数据相关性。控制器220通过注意所请求的操作的特征来添加输入数据以及原始输入数据,以确定所添加的输入数据是否可能影响输出数据。
[0041]对数据相关性进行检查,这是因为当在所合并或按顺序排列的操作的数据之间存在任何相关性时,合并开销变得大于通过合并而预期的得益。因此,优选的是,只有当没有数据相关性问题存在时才执行请求优化。参考图4a和4b来描述数据相关性。
[0042]图4a图示出根据本公开的实施例的、在资源分配方法中由操作运行次序生成的示例性数据相关性。
[0043]并非总可以合并操作或使操作按顺序排列。这是因为数据相关性。数据相关性问题能够被分类为由相同任务中的运行次序所引起的操作间相关性问题和由操作的特征所引起的操作内数据相关性。
[0044]具有如图4a中所示的运行次序的操作能够是操作间相关性问题的示例。在图4a中,“a”、“b”、“c”和“d”可以表示矢量或矩阵。作为第二和第三操作的结果,确定c和d的数据。
[0045]作为第二操作的结果,第四操作是具有输入“a”和“c”的加法运算。如果为了第二和第四操作来执行数据合并,则在确定c的数据之前执行具有a的加法操作,以便获取正确结果。
[0046]在第一和最后一个操作的情况中,不可能执行使操作按顺序排列。这是因为尽管两个情况都是相乘运算,但必须利用通过第二和第三操作其值发生改变的c和d的输入来执行最后一个操作。
[0047]图4b图示出根据本公开的实施例的、在资源分配方法中由操作特性所引起的示例性数据相关性,即,操作内数据相关性。
[0048]图4b示出示例性矩阵相加和矩阵相乘运算。在矩阵相加运算的示例中,具有相同索引的数据被添加到输入矩阵中,并且操作结果也存在于具有相同索引的位置。
[0049]然而,在矩阵乘法运算的示例中,运算受到具有不同索引的数据的值的影响。如果需要通过数据合并来处理存在于先前请求中的数据,则处理开销变得大于通过数据合并而预期的得益。因此,必须只有当没有数据相关性问题时才执行请求优化处理。
[0050]返回到图3,在步骤350控制器220执行请求优化处理,这将参考图5和图6来详细描述。
[0051]图5a图示出根据本公开的实施例的图3的请求优化步骤350的详情的流程图。
[0052]控制器220在步骤510确定是否存在相同的操作,并且如果存在相同的操作,则在步骤520存储操作的数据和操作的数据的地址。这是因为所请求的任务和数据的位置彼此不同。
[0053]在步骤530控制器220将相同的操作合并到请求中。在本公开中,将至少两个相同的操作的数据组合到请求中被称为合并(merging)。
[0054]最后,在步骤540,控制器220改变队列中的请求运行次序。
[0055]图5b是图示出通过图5a的请求优化过程所优化的请求处理结构的图。
[0056]图5b示出与100个GPU核相关联的分别具有40、20和30的编程大小的请求情况A、B和C的示例。
[0057]如果如在常规方法中那样独立地执行每个情况,则操作必须被执行三次。根据本公开的实施例,如果各个情况的操作彼此等同,则可以通过为情况B和C分配情况A的空闲核560来一次处理操作。
[0058]图6图示出根据本公开的另一个实施例的图3的请求优化步骤350的详情的流程图。
[0059]控制器220在步骤610检查相同类型的操作的存在,并且存储操作的数据和包括操作的任务的地址。这是因为操作在所请求的任务和数据位置方面是不同的。
[0060]在步骤630,控制器220将相同类型的操作配置为顺序的请求。在本公开中,依序布置至少两个相同的操作被称为按顺序排列。
[0061]GPGPU执行用于将被实施以运行操作的着色器程序加载到顶点处理器和片段处理器上的工作。在反复处理相同的操作的情况下,可以减小由于操作的频繁的改变而必须被连续地改变的着色器程序的加载工作。
[0062]如果依序运行相同的操作,要做的事情是改变数据集以使得顶点处理器和片段处理器的运行时间变得一致,结果是流水线效率的提高。因此,在请求列表中分布相同的操作的情况下,如果操作能够被按顺序排列,则可以增加流水线效率。在步骤630,控制器220将操作按顺序排列。最后,在步骤640,控制器220改变队列的请求运行次序。
[0063]返回到图3,在步骤360,控制器220请求GPU 240进行处理。
[0064]此后,如果GPU 240已经完成了处理,则控制器220从GPU 240接收结果数据,并且基于在步骤图5a的520和图6的620存储的任务和数据地址来向CPU 210传递结果数据。
[0065]图7图示出根据本公开的实施例的、在资源分配方法中用于请求优化的窗口机制。
[0066]根据本公开的实施例,资源分配装置220使用用于确定执行优化处理的时间的窗口机制。这是因为请求列表优化操作可能造成开销。
[0067]因此,当GPGPU请求的数量大于用于优化处理的范围、即优化窗口中的预定阈值时,资源分配装置200运行优化处理。图7涉及窗口大小是8的情况。如果请求的数量大于窗口大小(即,阈值)时,则触发优化处理。能够根据系统不同地设置窗口大小和阈值。
[0068]图7的上部分及下部分示出优化前后在队列中的请求列表的状态。如图7中所示,在优化之前GPU以任务为单位生成请求;在相同的任务中请求的操作被收集。
[0069]在优化以后,加减运算分别地被合并为相同类型的操作。此外,任务D的两个矩阵相乘请求被优化以便以相继次序被布置。
[0070]图8图示出根据本公开的实施例的资源分配装置的配置。
[0071]图8涉及用于在多核和多任务环境中执行用于GPGPU请求的操作级优化的基于队列的数据结构的示例性情况。
[0072]如图8中所示,根据本公开的实施例的资源分配装置200包括:合并模块810,用于执行对于任务所排队的请求的优化;操作顺序排列模块820 ;和相关性检查模块830,用于在开始优化处理之前检查所请求的数据的相关性。根据系统实施,这些模块的运行位置能够是GPU设备驱动器或操作系统。
[0073]图8中描绘的任务2、4和5是使用GPGPU编程模型的任务。任务2、4和5请求GPGPU服务(询问和函数调用)。在队列中,依序对每个任务将被运行的操作进行排队。
[0074]如果所请求的操作的数量不大于优化的阈值,则资源分配装置200借助于GPU设备驱动器来依序运行队列中的操作。
[0075]如果在GPU正操作的状态中存储在队列中的请求的数量变得大于阈值,则资源分配装置200执行对于请求列表的优化处理。
[0076]资源分配装置200借助于相关性检查模块来提取关于窗口中的请求列表的数据相关性信息,并且基于数据相关性信息来执行数据合并和操作顺序排列处理。
[0077]如果在完成先前的操作之后GPU进入空闲状态,则资源分配装置200以优化的次序运行在队列中等待的请求。资源分配装置200进一步包括回叫模块840,其使用在队列数据结构中存储的回叫机制来向已经请求GPGPU服务的任务通知操作完成。回叫机制可以取决于实施方式而变化,诸如回叫功能、事件触发器和信号之类。
[0078]尽管已经就示例性实施例描述了本公开,但可以向本领域技术人员建议各种改变和修改。本公开旨在包括属于所附权利要求的范围的这样的改变和修改。
【权利要求】
1.一种图形处理单元(GPU)的资源分配方法,该方法包括: 接收包括至少一个操作的任务; 以请求为单位存储至少一个操作; 合并每个请求的相同的操作的数据;以及 根据请求的运行次序来分配GPU资源。
2.根据权利要求1所述的方法,进一步包括:按请求的顺序来布置相同的操作。
3.根据权利要求1所述的方法,进一步包括:在合并数据之前,确定请求的数量是否大于预定阈值。
4.根据权利要求3所述的方法,进一步包括:在确定请求的数量是否大于预定阈值之后并且在合并数据之前,确定操作的数据是否与彼此相关。
5.根据权利要求1所述的方法,其中,使用通用GPU(GPGPU)程序语言来生成任务。
6.根据权利要求1所述的方法,其中,存储包括以请求为单位在队列结构中存储操作。
7.根据权利要求6所述的方法,其中,合并包括存储相同的操作的数据和包括相同的操作的任务的地址。
8.根据权利要求7所述的方法,进一步包括:在合并数据之后,改变队列结构中的请求的运行次序。
9.一种图形处理单元(GPU)的资源分配装置,该装置包括: 存储器,被配置为存储一个或多个请求;以及 控制器,被配置为对接收包括至少一个操作的任务、以请求为单位存储至少一个操作、合并每个请求的相同的操作的数据以及根据请求的运行次序来分配GPU资源进行控制。
10.根据权利要求9所述的装置,其中,控制器被配置为按请求的顺序来布置相同的操作。
11.根据权利要求9所述的装置,其中,控制器被配置为确定请求的数量是否大于预定阈值。
12.根据权利要求11所述的装置,其中,控制器被配置为确定操作的数据是否与彼此相关。
13.根据权利要求9所述的装置,其中,使用通用GPU(GPGPU)程序语言来生成任务。
14.根据权利要求9所述的装置,其中,控制器被配置为对以请求为单位在队列结构中存储操作进行控制。
15.根据权利要求14所述的装置,其中,控制器被配置为对存储相同的操作的数据和包括相同的操作的任务的地址进行控制。
16.根据权利要求15所述的装置,其中,控制器被配置为对在合并数据之后改变队列结构中的请求的运行次序进行控制。
17.—种体现用于图形处理单元(GPU)的资源分配的计算机程序的非瞬时性计算机可读介质,计算机程序包括用于如下的程序代码: 接收包括至少一个操作的任务; 以请求为单位存储至少一个操作; 合并每个请求的相同的操作的数据;以及 根据请求的运行次序来分配GPU资源。
18.根据权利要求17所述的计算机可读介质,进一步包括用于按请求的顺序来布置相同的操作的程序代码。
19.根据权利要求18所述的计算机可读介质,进一步包括用于在合并数据之前确定请求的数量是否大于预定阈值的程序代码。
20.根据权利要求19所述的计算机可读介质,进一步包括用于在确定请求的数量是否大于预定阈值之前确定操作的数据是否与彼此相关的程序代码。
【文档编号】G06F9/50GK104137075SQ201380011250
【公开日】2014年11月5日 申请日期:2013年1月24日 优先权日:2012年1月27日
【发明者】金捲植, 安泳禹, 宋正翼, 吕寅春 申请人:三星电子株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1