发明名称 一种GPU线程调度优化方法
摘要 本发明公开了一种GPU线程的调度方法,对线程块进行编号,并对线程块通过hash的方式影射到SM上,对于同一个SM中的线程块赋予不同的优先级,对块内的warp按照流水线的阶段数分成固定大小的分组。组内的warp,组,块均采用round-robin的方式进行调度。本发明提供一种更好的GPU线程调度的方法,通过warp三级调度策略,解决了所有的warp在同一时间到达相同的长延迟操作的可能,一定程度上缓解了因为长延迟操作造成的FU周期的空闲,提高了GPU计算资源的利用率。
申请公布号 CN103336718A 申请公布日期 2013.10.02
申请号 CN201310278628.3 申请日期 2013.07.04
申请人 北京航空航天大学 发明人 傅娇;王锐;栾钟治;钱德沛
分类号 G06F9/48(2006.01)I 主分类号 G06F9/48(2006.01)I
代理机构 代理人
主权项 一种GPU线程调度方法,其特征在于是这样实现的:步骤一:体系结构(A)本文中提到的GPU体系结构指的是CUDA结构。(B)内部包含多个SM(流多处理器),每个SM包含多个CUDA核。(C)每个CUDA核有一个计算单元FU(FP Unit)。(D)一个warp包含32个线程,同一个warp中的线程执行同一条指令,处理不同的数据。步骤二:线程块(A)一个kernel对应一个线程珊格,线程珊格是对应的kernel生成的所有的线程的总称,珊格的维度由编程人员在编程时指定。(B)线程珊格中包含多个快,块的维度由编程人员指定。对线程块从0开始进行编号。(C)线程块根据编号采用hash的方法影射到SM上,具体的影射方式是:(线程块编号)mod(SM数)。(D)同一个SM上的块有优先级,开始编号最小的块优先级最高,编号次小的块次之,以此类推。当编号最小的线程块停止时,优先级降为最低,编号次小的块的优先级最高,以此类推。步骤三:线程组(A)对线程块内warp进行分组,并对分组从0开始编号。(B)分组的大小和GPU核的流水的阶数有关,一般8个warp分为一组。(C)组有优先级,开始时组0具有最高的优先级,组1次之,当编号为0的线程组停止时,优先级降为最低,1号线程组的优先级最高,以此类推。步骤四:warp调度过程(A)块的维度是由程序员确定的,块的大小也是固定的。对线程珊格中的所有块按顺序进行从0进行编号,然后按照hash的方式影射到SM上,具体的影射方式是:(线程块编号)mod(SM数)。例如共有16个线程块,8个SM,则,线程块0和8被影射到SM0上,如图3所示。在同一个SM中,开始时编号最小的块具有最高的优先级,当编号最小的块因为长延迟操作停顿时,使块编号次小的块具有 最高的优先级,编号最小的块具有最低的优先级,以此类推。对线程块的调度采用round‑robin策略进行。(B)把块内所有并发执行的warp分成固定大小的取指组,一个组中有8个warp,这个和GPU核流水线的阶段数有关,例如32个warp,可以分成2组,编号为:0,1,2,3。组0具有最高的优先级,组1次之,以此类推。当组0因为长延迟操作停顿时,使组1具有最高的优先级,组0具有最低的优先级,以此类推。对线程组的调度是采用round‑robin策略进行的。(C)组内warp具有相同的优先级,采用round‑robin策略进行调度,每次从已经就绪的warp队列中选择一个warp进行发射。
地址 100191 北京市海淀区学院路37号