工作组处理方法、装置、计算机设备、存储介质和计算机程序产品与流程
- 国知局
- 2024-08-22 14:23:06
本技术涉及计算机,特别是涉及一种工作组处理方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术:
1、opencl是一个为异构平台编写程序的框架,此异构平台可由cpu(centralprocessing unit,中央处理器)、gpu(graphics processing unit,图形处理器)或其他类型的处理器组成。opencl由一门用于编写kernels(核函数,在opencl设备上运行的函数)的语言(基于c99)和一组用于定义并控制平台的api组成。
2、传统技术中,gpu硬件执行opencl kernel时,kernel将以线程束为单位执行。gpu线程组构造器即负责把工作组分割为多个线程束,并做任务发射。
3、然而,gpu线程组构造器在处理工作组成为线程束、并做任务发射时,会产生诸多硬件开销,主要集中在构造/释放资源(寄存器等上下文硬件资源)。在传统方案中,对于每个工作组,线程组构造器均需要拆分为多个wave调度到pe(执行单元)中并行执行,并在wave结束后收回资源用于下次的工作组拆分和执行,这会产生频繁的构造/释放资源(寄存器等上下文硬件资源)开销,降低线程束wave执行的效率。
技术实现思路
1、基于此,有必要针对上述技术问题,提供一种能够降低硬件线程组构造器的工作量,从而减少线设备端构造/释放资源所带来的硬件开销的工作组处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
2、第一方面,本技术提供一种工作组处理方法,所述方法包括:
3、通过驱动器确定折叠后的工作组的数量;
4、基于所述折叠后的所述工作组的数量,对初始索引空间进行折叠,得到目标索引空间;
5、将所述目标索引空间所描述的工作组发送至设备端,所述目标索引空间所描述的工作组用于指示所述设备端进行线程束构造;
6、通过所述驱动器获取所述目标索引空间的工作组的折叠信息,并向编译器发送所述工作组的折叠信息,并通过所述编译器基于所述工作组的折叠信息对所述目标索引空间中的折叠工作组进行展开,以映射为所述原始索引空间所描述的多个工作组;展开后的工作组在所述设备端构造的线程束中被处理。
7、在其中一个实施例中,所述通过驱动器确定折叠后的工作组的数量,包括:
8、获取所述设备端的硬件资源信息以及执行所述初始索引空间所描述的工作组的任务需要的硬件资源信息;
9、基于所述设备端的硬件资源信息和执行所述初始索引空间所描述的工作组的任务需要的硬件资源信息,确定折叠后的工作组的数量。
10、在其中一个实施例中,所述基于所述折叠后的所述工作组的数量对初始索引空间进行折叠,得到目标索引空间,包括:
11、通过预设规则以及所述折叠后的所述工作组的数量,确定各个维度工作组的目标数目;
12、获取所述初始索引空间的各个维度的工作组的初始数目以及各个维度的工作项的初始数目;
13、分别基于对应维度的目标数目和所述工作组的初始数目,确定各个维度的折叠次数;
14、获取工作组对应的第一折叠步长以及工作项对应的第二折叠步长;
15、基于所述折叠次数、所述第一折叠步长、所述工作组的初始数目、所述第二折叠步长以及所述工作项的初始数目对所述初始索引空间进行折叠,得到目标索引空间。
16、在其中一个实施例中,所述通过所述驱动器向编译器发送工作组的折叠信息,包括:
17、通过所述驱动器向所述编译器发送所述初始索引空间中各个维度的工作组的初始数目以及各个工作项的初始数目、各维度的折叠次数、工作组对应的第一折叠步长以及工作项对应的第二折叠步长。
18、在其中一个实施例中,所述通过所述编译器基于所述工作组的折叠信息对所述目标索引空间中的折叠工作组进行展开,包括:
19、基于所述各维度的折叠次数以及工作组对应的第一折叠步长,分别对所述目标索引空间中各维度的折叠后的工作组进行展开;
20、当展开后的各维度的工作组的展开数目等于所述各个维度的工作组的初始数目时,停止展开处理;
21、基于所述初始索引空间中各个维度的工作组的初始数目以及各个工作项的初始数目、所述第一折叠步长以及所述第二折叠步长,更新各工作项函数的语义信息。
22、在其中一个实施例中,所述基于所述各维度的折叠次数、工作组对应的第一折叠步长以及工作项对应的第二折叠步长,分别对所述目标索引空间中的各折叠后的工作组进行展开,包括:
23、以所述各维度的折叠次数为各展开循环次数阈值,以各当前循环次数为各维度的循环变量分别对各维度进行展开;
24、在当前维度的所述循环变量小于对应的所述展开循环次数阈值时,基于工作组对应的第一折叠步长确定所述当前维度上展开后的工作组的位置,基于所述当前维度的折叠次数确定展开后的工作组的数量,基于所述展开后的工作组的位置以及展开后的工作组的数量对当前工作组进行展开;
25、对所述当前循环变量进行递增更新,直至所述当前维度的所述当前循环变量不小于对应的所述展开循环次数阈值时,获取下一维度作为当前维度,并继续执行基于工作组对应的第一折叠步长确定所述当前维度上展开后的工作组的位置的步骤,直至所述目标索引空间中的各折叠后的工作组的各维度均展开。
26、在其中一个实施例中,基于所述初始索引空间中各个维度的工作组的初始数目以及各个工作项的初始数目、所述第一折叠步长以及所述第二折叠步长,更新各工作项函数的语义信息,包括:
27、基于展开前各维度上工作组的编号、对应维度的所述展开循环次数阈值、对应维度的所述当前循环次数以及对应维度的所述第一折叠步长得到展开后各维度上工作组的编号;
28、基于所述展开后各维度上工作组的编号、对应维度的所述第二折叠步长、展开前对应维度上工作组内的工作项的编号以及全局空间的偏移量,得到展开后对应维度上全局工作项编号;
29、基于所述初始索引空间中各个维度的工作组的初始数目,更新展开后的各个维度的工作组的数目;
30、基于所述初始索引空间中各个维度的工作项的初始数目,更新展开后的各个维度的工作项的数目。
31、在其中一个实施例中,所述基于所述初始索引空间中各个维度的工作组的初始数目以及各个工作项的初始数目、所述第一折叠步长以及所述第二折叠步长,更新各工作项函数的语义信息,包括:
32、基于展开前各维度上工作组的编号、对应维度的所述当前循环次数以及对应维度的所述第一折叠步长得到展开后各维度上工作组的编号;
33、基于所述展开前各维度上工作组的编号、对应维度的所述第二折叠步长、对应维度的所述当前循环次数以及全局空间的偏移量,得到展开后对应维度上全局工作项编号;
34、基于所述初始索引空间中各个维度的工作组的初始数目,更新展开后的各个维度的工作组的数目;
35、基于所述初始索引空间中各个维度的工作项的初始数目,更新展开后的各个维度的工作项的数目。
36、第二方面,本技术还提供一种工作组处理装置,所述装置包括:
37、折叠数据确定模块,用于通过驱动器确定折叠后的工作组的数量;
38、折叠模块,用于基于所述折叠后的所述工作组的数量对初始索引空间进行折叠,得到目标索引空间;
39、发送模块,用于将所述目标索引空间所描述的工作组,发送至设备端,所述目标索引空间所描述的工作组用于指示所述设备端进行线程束构造;
40、编译模块,用于通过所述驱动器获取所述目标索引空间的工作组的折叠信息,并向编译器发送工作组的折叠信息,并通过所述编译器基于所述工作组的折叠信息对所述目标索引空间中的折叠工作组进行展开,以映射为所述原始索引空间所描述的多个工作组;展开后的工作组在所述设备端构造的线程束中被处理。
41、第三方面,本技术还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的任意一个实施例中的方法的步骤。
42、第四方面,本技术还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的任意一个实施例中的方法的步骤。
43、第五方面,本技术还提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述的任意一个实施例中的方法的步骤。
44、上述工作组处理方法、装置、计算机设备、存储介质和计算机程序产品,通过驱动器确定折叠后的工作组的数量;基于折叠后的所述工作组的数量对初始索引空间进行折叠,得到目标索引空间;将目标索引空间所描述的工作组发送至设备端,目标索引空间所描述的工作组的数量用于指示设备端进行线程束构造,这样设备端实际看到的折叠后的工作组数量需要进行执行,从而可以使得设备端一次上下文组织实际可以负责原来折叠之前的多个工作组,以减少线程组构造器的上下文构造开销,且通过编译器实现工作组的展开,从而设备端在执行任务处理时并不会存在错误,这样保证了任务的正确执行,且降低硬件线程组构造器的工作量,从而减少线程组构造器构造/释放资源所带来的硬件开销。
本文地址:https://www.jishuxx.com/zhuanli/20240822/278477.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。