本技术涉及数据处理,尤其涉及一种cuda架构中的线程块处理系统、方法及相关设备。
背景技术:
1、cuda(compute unified device architecture,统一计算设备架构)是显卡厂商英伟达(nvidia)推出的运算平台,是一种通用并行计算编程语言。cuda中的计算实现通常需要编写核函数(kernel),核函数可以描述单个线程(thread)的行为。应理解,该架构中在调用核函数前,需要根据待处理数据的维度信息将核函数分割为多个线程块(threadblock),为了避免核函数处理的线程超出待处理数据的维度,目前的分块方式需要在核函数中增加条件判断。然而,该条件判断会增加核函数的冗余,导致并行处理的性能降低。
技术实现思路
1、针对上述问题,本技术提供了一种cuda架构中的线程块处理系统、方法及相关设备,有利于去除核函数中对线程越界的判断处理,提升核函数的执行效率,进而提升cuda中并行计算的性能。
2、为实现上述目的,本技术实施例第一方面提供了一种cuda架构中的线程块处理系统,该系统包括线程索引配置器、多个处理单元pe和每个pe对应的线程索引选择器;
3、线程索引配置器,配置为根据待处理数据的第一维度信息和设定的普通线程块的第二维度信息,将核函数分割为多个普通线程块和多个余量线程块,以及向线程索引选择器下发第一配置信息;
4、线程索引选择器,配置为根据第一配置信息为对应的pe选择普通线程块或余量线程块执行。
5、结合第一方面,在一种可能的实施方式中,线程索引配置器,具体配置为:
6、根据第一维度信息和第二维度信息,得到余量线程块的第三维度信息;
7、根据第二维度信息和第三维度信息,将核函数分割为多个普通线程块和多个余量线程块。
8、结合第一方面,在一种可能的实施方式中,该系统还包括线程索引生成器,线程索引配置器,具体配置为:
9、根据第一维度信息和第二维度信息,得到余量线程块的第三维度信息;
10、向线程索引生成器下发第二配置信息;第二配置信息包括第二维度信息和第三维度信息;
11、线程索引生成器,配置为:
12、根据第二维度信息和第三维度信息,将核函数分割为多个普通线程块和多个余量线程块。
13、结合第一方面,在一种可能的实施方式中,线程索引配置器,具体配置为:
14、根据第一维度信息和第二维度信息,得到核函数对应的网格的第四维度信息;
15、根据第一维度信息、第二维度信息和第四维度信息,得到第三维度信息。
16、结合第一方面,在一种可能的实施方式中,线程索引生成器,还配置为:
17、根据第二维度信息,生成普通线程块对应的第一线程标识。
18、结合第一方面,在一种可能的实施方式中,线程索引生成器,还配置为:
19、根据第二维度信息和第三维度信息,得到余量线程块所属的多种索引配置;
20、根据多种索引配置,分别得到多种索引配置下的余量线程块对应的多套第二线程标识;多套第二线程标识与多种索引配置一一对应。
21、结合第一方面,在一种可能的实施方式中,第一配置信息包括第四维度信息和线程索引选择器对应的pe的待执行线程块的索引;线程索引选择器,具体配置为:
22、根据第四维度信息和待执行线程块的索引,确定待执行线程块为普通线程块或余量线程块;
23、若待执行线程块为普通线程块,则使用第一线程标识为对应的pe选择待执行线程块中的线程执行;
24、若待执行线程块为余量线程块,则确定待执行线程块所属的目标索引配置,使用目标索引配置对应的一套第二线程标识为对应的pe选择待执行线程块中的线程执行;多种索引配置中包括目标索引配置。
25、结合第一方面,在一种可能的实施方式中,该系统还包括调度器;调度器,配置为在任意一个线程索引选择器a对应的pe执行完待执行线程块的情况下,向线程索引配置器指示未执行的线程块的索引;
26、线程索引配置器,还配置为向线程索引选择器a下发未执行的线程块的索引。
27、结合第一方面,在一种可能的实施方式中,余量线程块为满足以下至少一种的线程块:
28、在x方向的索引等于核函数对应的网格在x方向的维度减1;
29、在y方向的索引等于核函数对应的网格在y方向的维度减1;
30、在z方向的索引等于核函数对应的网格在z方向的维度减1;
31、普通线程块为核函数对应的网格中除余量线程块之外的线程块。
32、本技术实施例第二方面提供了一种cuda架构中的线程块处理方法,应用于如第一方面所述的系统,该方法包括:
33、线程索引配置器根据待处理数据的第一维度信息和设定的普通线程块的第二维度信息,将核函数分割为多个普通线程块和多个余量线程块,以及向线程索引选择器下发第一配置信息;
34、线程索引选择器根据第一配置信息为对应的pe选择普通线程块或余量线程块执行。
35、结合第二方面,在一种可能的实施方式中,根据待处理数据的第一维度信息和设定的普通线程块的第二维度信息,将核函数分割为多个普通线程块和多个余量线程块,包括:
36、线程索引配置器根据第一维度信息和第二维度信息,得到余量线程块的第三维度信息;
37、线程索引配置器根据第二维度信息和第三维度信息,将核函数分割为多个普通线程块和多个余量线程块。
38、结合第二方面,在一种可能的实施方式中,根据待处理数据的第一维度信息和设定的普通线程块的第二维度信息,将核函数分割为多个普通线程块和多个余量线程块,包括:
39、线程索引配置器根据第一维度信息和第二维度信息,得到余量线程块的第三维度信息;
40、线程索引配置器向线程索引生成器下发第二配置信息;第二配置信息包括第二维度信息和第三维度信息;
41、线程索引生成器根据第二维度信息和第三维度信息,将核函数分割为多个普通线程块和多个余量线程块。
42、结合第二方面,在一种可能的实施方式中,根据第一维度信息和第二维度信息,得到余量线程块的第三维度信息,包括:
43、线程索引配置器根据第一维度信息和第二维度信息,得到核函数对应的网格的第四维度信息;
44、线程索引配置器根据第一维度信息、第二维度信息和第四维度信息,得到第三维度信息。
45、结合第二方面,在一种可能的实施方式中,该方法还包括:
46、线程索引生成器根据第二维度信息,生成普通线程块对应的第一线程标识。
47、结合第二方面,在一种可能的实施方式中,该方法还包括:
48、线程索引生成器根据第二维度信息和第三维度信息,得到余量线程块所属的多种索引配置;
49、线程索引生成器根据多种索引配置,分别得到多种索引配置下的余量线程块对应的多套第二线程标识;多套第二线程标识与多种索引配置一一对应。
50、结合第二方面,在一种可能的实施方式中,根据第一配置信息为对应的pe选择普通线程块或余量线程块执行,包括:
51、线程索引选择器根据第四维度信息和待执行线程块的索引,确定待执行线程块为普通线程块或余量线程块;
52、若待执行线程块为普通线程块,则线程索引选择器使用第一线程标识为对应的pe选择待执行线程块中的线程执行;
53、若待执行线程块为余量线程块,则线程索引选择器确定待执行线程块所属的目标索引配置,使用目标索引配置对应的一套第二线程标识为对应的pe选择待执行线程块中的线程执行;多种索引配置中包括目标索引配置。
54、结合第二方面,在一种可能的实施方式中,该方法还包括:
55、调度器在任意一个线程索引选择器a对应的pe执行完待执行线程块的情况下,向线程索引配置器指示未执行的线程块的索引;
56、线程索引配置器向线程索引选择器a下发未执行的线程块的索引。
57、结合第二方面,在一种可能的实施方式中,余量线程块为满足以下至少一种的线程块:
58、在x方向的索引等于核函数对应的网格在x方向的维度减1;
59、在y方向的索引等于核函数对应的网格在y方向的维度减1;
60、在z方向的索引等于核函数对应的网格在z方向的维度减1;
61、普通线程块为核函数对应的网格中除余量线程块之外的线程块。
62、本技术实施例第三方面提供了一种芯片,该芯片包括如上述第一方面所述的系统,该系统中的线程索引配置器、多个处理单元pe和每个pe对应的线程索引选择器相互配合,以实现如上述第二方面中任一项所述的方法。
63、本技术实施例第四方面提供了一种电子设备,该电子设备包括如上述第三方面所述的芯片。
64、本技术实施例第五方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有一条或多条指令,一条或多条指令适于由芯片加载并执行如上述第二方面所述的方法。
65、本技术实施例第六方面提供了一种计算机程序产品,其中,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使电子设备执行如上述第二方面所述的方法。
66、本技术的上述方案至少包括以下有益效果:
67、本技术实施例中,通过该系统可以根据待处理数据的维度信息和普通线程块的维度信息,将核函数分割为多个普通线程块和多个余量线程块,各个方向上普通线程块中的线程和余量线程块中的线程的总数不会超出待处理数据的维度,即核函数处理的线程不会超出待处理数据的维度,因此,可以去除核函数中线程是否越界的条件判断,从而降低核函数的冗余,提升核函数的执行效率,进而提升cuda中并行计算的性能。