构建和调度用于并行处理的任务制造技术

技术编号:33079973 阅读:12 留言:0更新日期:2022-04-15 10:30
本发明专利技术公开了构建和调度用于并行处理的任务。一种逻辑包括:用于构建包括数据项的任务的任务构建器、用于调度任务以由并行处理器处理的任务调度器、被布置成将每个数据项的内容映射到项目ID的数据储存库,以及包括每个项目ID的条目的链表RAM。对于每个新数据项,任务构建器通过启动新链表或将数据项添加到现有链表来创建新任务。在每个链表中,每个数据项的条目记录指向列表中的下一项目ID的指针。任务构建器指示任务中的任一个何时准备好进行调度。任务调度器基于来自任务构建器的指示,识别准备就绪的任务,并且作为响应,遵循相应链表中的指针,以便调度任务的数据项以进行处理。理。理。

【技术实现步骤摘要】
构建和调度用于并行处理的任务


[0001]本专利技术涉及构建和调度用于并行处理的任务。

技术介绍

[0002]处理器是用于执行机器代码指令的装置。给定处理器被配置成识别指令类型的特定预定义集合,称为处理器的指令集。每个指令类型由相应的操作码和零或更多操作数字段定义。处理器被配置成从存储器获取指令以用于执行。处理器可以包括许多不同种类的子单元,以用于根据正在执行的指令的类型,执行不同类别的操作。例如,处理器可以包括用于响应于算术指令类型而执行整数算术运算的整数算术逻辑单元,用于响应于浮点指令类型而执行浮点运算的浮点算术逻辑单元,以及用于响应于加载和存储指令类型而执行存储器访问操作的加载存储单元。
[0003]例如,在精简指令集计算机(RISC)中,加载指令需要至少两个操作数:源存储器地址和在处理器的寄存器文件中指定目的地寄存器的标识符。执行时,加载指令会作用于加载存储单元,以将来自源地址的值加载到目的地寄存器中。取决于指令的类型,逻辑指令可以获取不同数目的操作数。例如,诸如加或乘指令等的逻辑指令可以采用三个操作数:两个在寄存器文件中指定两个相应的源寄存器,一个在寄存器文件中指定目的地寄存器。当执行时,逻辑指令作用于相关逻辑单元,例如整数或浮点算术逻辑单元,以便对指定源寄存器中的值执行相关逻辑操作,并将结果置于指定目的地寄存器中。要执行的操作以及触发哪个逻辑单元以执行此操作将取决于相关指令的操作码。将逻辑操作的结果存储回存储器涉及存储指令。存储指令需要至少两个操作数:一个指定寄存器文件中的源寄存器,一个指定存储器中的目的地地址。当执行时,存储指令作用于加载

存储单元以将指定源寄存器中的值存储到目的地存储器地址。
[0004]可以针对特定应用定制诸如图形处理单元(GPU)的专用处理器的一种方式是将一种或多种专用指令类型包括在处理器的指令集中。此类指令类型将执行比响应相关类型的单个机器代码指令的单个实例而触发的简单加载、存储、加或乘等更复杂的操作。例如,这可以是特定的数学运算,例如在相关应用中经常出现的乘法累加(MAC)。相同的操作可以通过通用加和乘指令等的组合来构建,但是与使用更专业化指令集的指令相比,这会降低代码密度。
[0005]在某些种类的处理器,例如矢量处理器、SIMD(单指令多数据)或SIMT(单指令多线程)处理器中,处理器包括多个并行处理通道(例如,SIMD通路)。所述并行处理通道中的每一个可以包括相同种类的逻辑单元中的至少一个的相应实例。例如,每个通道可以包括相应的算术逻辑单元(ALU),例如整数算术逻辑单元或浮点算术逻辑单元。响应于在单个提取操作中提取的相同指令的相同实例的执行,触发不同并行通道中的一些或所有逻辑单元以对不同数据执行相同操作,例如对指定为操作源的矢量寄存器中的矢量的不同元素执行相同操作。例如,每个ALU可操作以执行乘法累加(MAC),也称为乘加。这需要两个乘法输入(有时称为乘数和被乘数)和加数输入(也称为累加数),并且将加数添加到两个乘法输入的乘
积。MAC可以实施为融合的乘法加法,由此在一个融合步骤中执行乘法累加。每个并行逻辑单元的MAC的结果可以放置在目的地矢量寄存器的相应元件中。
[0006]为了利用并行处理资源,可能希望将待处理的数据一起分组到任务中,其中给定任务的数据可以由相同程序并行处理,并且不同任务要由不同程序处理。
[0007]示例出现于光线跟踪中。光线跟踪是指通过跟踪光通过建模环境的路径并模拟其与沿途物体相遇的效果来生成图像的图形处理技术。建模光线从建模光源被跟踪到建模视点(前向光线跟踪),或反之从建模视点向后被跟踪到建模光源(即,反向光线跟踪,其通常更有效率,因为前向光线跟踪通常导致处理轨迹最终从未命中视点的光线)。可以通过光线的起点的坐标、指定光线方向的矢量、沿着该矢量的光线的最大和最小范围以及任选地光线颜色来描述光线。在反向光线跟踪的情况下,光线跟踪始于从图像中的每个像素将光线投射到建模环境中。光线可以在建模环境中与之相互作用的对象被分成几何图元,例如三角形小面。对于每个光线,光线跟踪包括寻找与光线相互作用的最接近的几何图元(如果有的话)。在一些图形处理器中,这种搜索在固定功能硬件中执行。当入射光线相交时,它接着可终止、反射或折射。反射或折射引入相对于入射光线具有新方向的一个或多个二次光线,所述入射光线被终止(即,反射或折射光线被建模为新光线)。二次光线也可以相对于入射光线积累新值(颜色)。
[0008]确定光线与几何图元相互作用的效果通常在软件中分析地解决。进行此操作的程序被称为着色器程序。通常存在运行以处理不同交互场景的不同着色器程序。
[0009]例如,不同着色器程序可以包括:错过着色器程序、最近命中着色器程序、任何命中着色器程序和相交着色器程序。当光线未命中任何东西时,运行错过着色器程序。当光线命中几何形状时,运行最近命中着色器程序,其中,已知将保持此命中并且需要所述程序计算光在命中点处的效果。当光线命中几何形状时,运行任何命中着色器程序,但还需要该程序决定是否保持该命中。如果保持该命中,则随后将运行最近命中着色器程序。当光线命中其中具有用户定义的几何形状的框时,运行相交着色器程序,并且需要该程序程序性地生成或从存储器加载该几何形状,检查这些几何形状中哪一个被光线命中,然后决定是否保持该命中。如果保持该命中,则随后将运行最近命中程序。以上是从光线跟踪API标准导出的分类。在一种实施方式中,任何命中着色器和相交着色器可以一起分组到遍历着色器中。
[0010]一般来说,为支持光线跟踪而进行的操作是:光线生成(产生光线)、光线相交(针对图元或包含图元的框测试光线)、光线遍历(搜索上述框的树或其它此类场景加速结构,以及沿着树的行走路线调度相交)。
[0011]为了利用诸如SIMD处理器中的并行SIMD通路的并行处理资源的可用性,待处理的不同光线可以一起分组到任务中,其中给定任务可以包括将由相同着色器程序处理的多个光线,并且不同任务由不同着色器程序处理。期望将要由相同着色器程序处理的光线一起分组到任务中(其中,“光线”在此上下文中是指表示光学光线的数据)。此过程被称为相干性聚集。着色器程序的执行可以通过光线的相交或其它事物调用。还应注意,这不一定仅仅是由着色器程序处理的光线,而在实施例中,也包括与光线相关联的其他因素。
[0012]有时这可以包括对待由相同着色器程序和相同几何图元处理的光线进行分组。例如,在不同光线命中加速结构的相同框或节点的情况下,着色器将需要针对该框或树节点的所有子女为所有光线调度相交测试(但是,在其他实施方式中,这可以在固定功能硬件中
进行)。
[0013]将光线一起分组到任务中的处理器模块可以被称为任务构建器。承担由任务构建器构建的任务并调度这些任务以进行处理的模块可以被称为任务调度器。在一些处理器中,这些可以在固定功能硬件中实施。
[0014]在将光线分组到任务中时,要进行折衷。一方面,希望将光线一起分组为可由并行处理器并行处理的最大数目。例如,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种逻辑,包括:任务构建器,所述任务构建器用于构建多个任务,每个任务包括待由相应程序处理的相应组的数据项;任务调度器,所述任务调度器用于调度待由在并行处理子系统上运行的所述相应程序处理的任务中的每一个,由此对于每个任务,并行处理所述相应组的数据项中的至少一些;数据储存库,所述数据储存库被布置成至少暂时保存映射到相应项目ID的所述数据项中的每一个的相应数据内容;以及链表RAM,所述链表RAM包括每个项目ID的相应条目;其中所述任务构建器被配置成通过以下方式构建所述任务:当新数据项接收到所述数据储存库中时,确定是否存在针对所述新数据项的现有任务,并且a)如果不存在,通过在包括所述新数据项的链表RAM中启动新的相应链表来创建新任务,但是b)如果存在,将所述新数据项添加到所述链表RAM中的现有相应链表,其中在每个链表中,在列表中的从头部数据项到尾部数据项之前的至少最后数据项的每个数据项的条目都记录指向所述链表中的下一项目ID的指针;其中所述任务构建器还被配置成指示所述任务中的任一个何时准备好进行调度;并且其中所述任务调度器被布置成基于来自所述任务构建器的指示,识别准备好进行调度的任务,并且作为响应,遵循相应链表中的指针,以便调度相应任务的数据项以供所述并行处理子系统处理。2.根据权利要求1所述的逻辑,其中所述任务构建器被配置成通过在所述链表RAM中断言相应标志以标记所述任务中的任一个何时准备好进行调度来执行所述指示;并且其中所述任务调度器被布置成通过监测所述链表RAM以发现断言标志来执行所述识别,并且在所述相应标志被断言时检测所述任务中的一个准备就绪。3.根据权利要求1或2所述的逻辑,其中所述任务构建器包括被布置成存储正在构建的任务的一个或多个指示的临时存储装置,并且所述任务构建器被配置成基于一个或多个预定标准从所述临时存储装置移除所选任务的指示,并且指示所述所选任务准备好进行调度。4.根据权利要求3所述的逻辑,其中所述临时存储装置包括高速缓存,所述高速缓存包括多个区格,每个区格可操作以通过临时记录所述任务的指示来高速缓存所述任务中的一个,其中当创建新任务时,所述新任务被高速缓存在所述区格中的一个中,其中所述一个或多个预定标准包括驱逐策略,并且所述高速缓存被配置成根据所述驱逐策略从所述区格中驱逐任务,并且其中所述任务构建器被配置成在所述所选任务从所述高速缓存中驱逐时,指示所述所选任务准备好进行调度。5.根据权利要求4所述的逻辑,其中所述驱逐策略包括:当创建新任务并且适合高速缓存所述新任务的一组区格已满时,从所述组的一个区格驱逐现有任务以容纳所述新任务。6.根据权利要求5所述的逻辑,其中:所述高速缓存被布置成组和路,每个组包括所述路中的一个或多个,并且所述路是所述区格,其中每个组被映射到所述任务的子集,并且所述高速缓存被配置成使得当创建新任务时,所述新任务被添加到映射到所述新任务的组的路中的一个;并且
其中所述驱逐策略包括:当创建新任务并且映射到所述新任务的组的所有路已满时,从此组的路中的一个驱逐现有任务以容纳所述新任务。7.根据权利要求5所述的逻辑,其中以下各项中的一者:每个任务都具有在所述高速缓存中记录的关联优先级,所述关联优先级指示用于调度相应任务的优先级,并且其中选择以供驱逐的现有任务是所述组中的具有最高调度优先级的任务;或选择以供驱逐的现有任务是相应链表中的具有最大数目的数据项的任务;或每个任务都具有在所述高速缓存中记录的关联年龄,所述关联年龄指示自所述任务创建以来的时间,并且选择以供驱逐的现有任务是具有最老年龄的任务。8.根据权利要求4所述的逻辑,其中以下各项中的一者或多者:每个任务都具有在所述高速缓存中记录的关联年龄,所述关联年龄指示自所述...

【专利技术属性】
技术研发人员:A
申请(专利权)人:想象技术有限公司
类型:发明
国别省市:

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

1