CN103336718B - 一种gpu线程调度优化方法 - Google Patents
一种gpu线程调度优化方法 Download PDFInfo
- Publication number
- CN103336718B CN103336718B CN201310278628.3A CN201310278628A CN103336718B CN 103336718 B CN103336718 B CN 103336718B CN 201310278628 A CN201310278628 A CN 201310278628A CN 103336718 B CN103336718 B CN 103336718B
- Authority
- CN
- China
- Prior art keywords
- thread block
- thread
- warp
- priority
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种GPU线程的调度方法,对线程块进行编号,并对线程块通过hash的方式影射到SM上,对于同一个SM中的线程块赋予不同的优先级,对块内的warp按照流水线的阶段数分成固定大小的分组。组内的warp,组,块均采用round-robin的方式进行调度。本发明提供一种更好的GPU线程调度的方法,通过warp三级调度策略,解决了所有的warp在同一时间到达相同的长延迟操作的可能,一定程度上缓解了因为长延迟操作造成的FU周期的空闲,提高了GPU计算资源的利用率。
Description
技术领域
本发明涉及一种属于计算机系统结构中的多线程调度方法,特别涉及一种异构体系结构中的GPU线程调度方法。
背景技术
Graphicsprocessingunits(GPUs)已经成为一种执行普通并行应用程序的流行平台。像CUDA、ATI和OpenCL等编程系统允许编程人员把应用程序并行成执行相同代码的成千上万的线程。现有的研究也表明了应用程序运行在GPU上比运行在CPU上有巨大的加速。GPU之所以能取得如此巨大的加速是因为它比CPU有更多的具有同等计算能力的资源,编程人员通过开发线程间的并行性(TLP,thread-levelparallelism)来充分利用GPU中丰富的计算资源。GPU中虽然有大量的计算资源,但是目前GPU核内的计算资源并没有得到充分利用,这主要有两个原因:1.条件分支语句的存在,2.长延迟操作造成的停顿。对于条件分支语句的问题可以通过更大的warp(大于目前的每一个warp中有32个线程)来解决。对于长延迟操作造成的停顿,最近的研究成果是采用两级调度的方式,通过避免核内所有warp在同一个时间停顿,在一定程度上提高了核内计算资源的利用率,但是由于一个块内的线程也需要同步与通信,如果一块内的大多数线程都在等待某些warp内的线程的完成,势必会造成整个系统的性能降低。
现有的GPU核(CUDA所指的SM)使用round-robinwarp取指令策略,该策略对正在执行的warp赋予同样的优先级,在这种策略下,对以相同速率处理程序的warp比较有利,既然warp有许多的数据局部性,GPU的编程人员被鼓励使连续的线程访问连续的存储器位置,以便于访存请求可以被合并,这就暗含着不同的warp有大量的空间局部性。当一个warp产生了一个访存请求时,其他的warp也可能产生被影射到相同行缓冲的访存请求,只要产生的访存请求足够地接近,就能开发行缓冲的局部性。公平的round-robin允许这种情况发生,然而调度策略的结果是不平衡的warp进度破坏了这种局部性。但是一个纯round-robin调度策略倾向于使所有的warp在同一时间到达相同的长延迟操作,既然所有的warp都被停止,没有足够的warp来隐藏长延迟,结果就造成一些周期的FU空闲。
发明内容
本发明的目的是提供一种更好的GPU线程调度的方法,通过warp三级调度策略,解决了所有的warp在同一时间到达相同的长延迟操作的可能,一定程度上缓解了因为长延迟操作造成的FU周期的空闲,提高了GPU计算资源的利用率。
本发明是一种GPU的线程调度优化方法,其特征在于包含以下步骤:
步骤一:体系结构
(A)本文中提到的GPU体系结构指的是CUDA结构。
(B)内部包含多个SM(流多处理器),每个SM包含多个CUDA核。
(C)每个CUDA核有一个计算单元FU(FPUnit)。
(D)一个warp包含32个线程,同一个warp中的线程执行同一条指令,处理不同的数据。
步骤二:线程块
(A)一个kernel对应一个线程栅格,线程栅格是对应的kernel生成的所有的线程的总称,栅格的维度由编程人员在编程时指定。
(B)线程栅格中包含多个快,块的维度由编程人员指定,对线程块从0开始进行编号。
(C)线程块根据编号采用hash的方法映射到SM上。
(D)同一个SM上的块有优先级,开始编号为0的优先级最高,1次之,以此类推。当编号为0的线程块停止时,优先级降为最低,1号线程块的优先级最高,以此类推。
步骤三:线程组
(A)对线程块内的warp进行分组,并对分组从0开始编号。
(B)分组的大小和SM流水的阶段数有关,一般8个warp分为一组。
(C)组有优先级,开始时组0具有最高的优先级,组1次之,当编号为0的线程组停止时,优先级降为最低,1号线程组的优先级最高,以此类推。
步骤四:warp调度过程
(A)线程块设置不同的优先级,线程块之间采用round-robin策略进行调度。
(B)对线程组设置不同的优先级,线程组之间采用round-robin策略进行调度。
(C)组内warp采用round-robin策略进行调度,每次从已经就绪的warp队列中选择一个warp进行发射。
本发明线程调度策略的优点在于:
①本发明对线程块和组采用不同的优先级,避免所有的线程在同一时间都因为长延迟出现停顿,提高了计算资源的利用率。
②本发明为三级线程调度,相比二级线程调度方法,线程块因为具有不同的优先级,块内的线程具有更接近的运行时间,既在一定程度上开发了数据局部性,也减少了块内线程同步的开销。
附图说明
图1是GPU的内部结构。
图2是SM的流水线结构图。
图3是线程块到SM影射结构图。
具体实施方式
本发明是一种GPU线程调度方法,包括下列处理步骤:
步骤一:体系结构
(A)本文中提到的GPU体系结构指的是CUDA结构。
(B)内部包含多个SM(流多处理器),每个SM包含多个CUDA核。
(C)每个CUDA核有一个计算单元FU。
(D)一个warp包含32个线程,同一个warp中的线程执行同一条指令,处理不同的数据。
步骤二:线程块
(A)一个kernel对应一个线程栅格,线程栅格是对应的kernel生成的所有的线程的总称,栅格的维度由编程人员在编程时指定。
(B)线程栅格中包含多个快,块的维度由编程人员指定。对线程块从0开始进行编号。
(C)线程块根据编号采用hash的方法影射到SM上,具体的影射方式是:(线程块编号)mod(SM数)。
(D)同一个SM上的块有优先级,开始编号最小的块优先级最高,编号次小的块次之,以此类推。当编号最小的线程块停止时,优先级降为最低,编号次小的块的优先级最高,以此类推。
步骤三:线程组
(A)对线程块内warp进行分组,并对分组从0开始编号。
(B)分组的大小和SM流水的阶段数有关,一般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,这个和SM流水线的阶段数有关,例如32个warp,可以分成4组,编号为:0,1,2,3。组0具有最高的优先级,组1次之,以此类推。当组0因为长延迟操作停顿时,使组1具有最高的优先级,组0具有最低的优先级,以此类推。对线程组的调度是采用round-robin策略进行的。
(C)组内warp具有相同的优先级,采用round-robin策略进行调度,每次从已经就绪的warp队列中选择一个warp进行发射。
Claims (2)
1.一种GPU线程调度方法,其特征在于是这样实现的:
步骤一:线程的组织方法
(A)提到的GPU体系结构指的是CUDA结构;
(B)内部包含多个SM(多核流处理器,StreamingMultiprocessor),每个SM包含多个CUDA核;
(C)每个CUDA核有一个计算单元FU(FPUnit);
(D)一个warp包含32个线程,同一个warp中的线程执行同一条指令,处理不同的数据;
步骤二:线程块的映射方法
(A)一个kernel对应一个线程栅格,线程栅格是对应的kernel生成的所有线程的总称,栅格的维度由编程人员在编程时指定;
(B)线程栅格中包含多个线程块,线程块的维度由编程人员指定,线程块从0开始编号;
(C)线程块根据编号采用hash的方法映射到SM上,具体的映射方式是:线程块编号modSM数;
(D)同一个SM上的线程块有优先级,开始时编号最小的线程块优先级最高,编号次小的线程块次之,以此类推,当编号最小的线程块停止时,优先级降为最低,编号次小的线程块的优先级最高,以此类推;
步骤三:线程分组方法
(A)对线程块内的warp进行分组,并对分组从0开始编号;
(B)分组的大小和GPU核流水线的阶数有关,8个warp分为一组;
(C)组有优先级,开始时组0具有最高的优先级,组1次之,当编号为0的线程组停止时,优先级降为最低,1号线程组的优先级最高,以此类推;
步骤四:warp调度过程
(A)线程块的维度是由程序员确定的,线程块的大小也是固定的,对线程栅格中的所有线程块按顺序从0进行编号,然后按照hash的方式映射到SM上,具体的映射方式是:线程块编号modSM数,在同一个SM中,开始时编号最小的线程块具有最高的优先级,当编号最小的线程块因为长延迟操作停顿时,使编号次小的线程块具有最高的优先级,编号最小的线程块具有最低的优先级,以此类推,对线程块的调度采用round-robin策略进行;
(B)把线程块内所有并发执行的warp分成固定大小的取指组,一个组中有8个warp,这个和GPU核流水线的阶段数有关,组0具有最高的优先级,组1次之,以此类推,当组0因为长延迟操作停顿时,使组1具有最高的优先级,组0具有最低的优先级,以此类推,对线程组的调度是采用round-robin策略进行的;
(C)组内warp具有相同的优先级,采用round-robin策略进行调度,每次从已经就绪的warp队列中选择一个warp进行发射。
2.根据权利要求1所述的GPU线程调度方法,其特征在于:
对线程块进行编号:对线程栅格中的所有线程块按顺序从0进行编号,线程块到SM的映射方法是:把线程块按照hash的方式映射到SM上,具体的映射方式是:线程块编号modSM数,线程块具有不同的优先级,并且优先级是轮转的,避免了使所有的warp在同一时刻处于停顿状态,提高了计算资源的利用率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310278628.3A CN103336718B (zh) | 2013-07-04 | 2013-07-04 | 一种gpu线程调度优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310278628.3A CN103336718B (zh) | 2013-07-04 | 2013-07-04 | 一种gpu线程调度优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103336718A CN103336718A (zh) | 2013-10-02 |
CN103336718B true CN103336718B (zh) | 2016-07-06 |
Family
ID=49244892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310278628.3A Expired - Fee Related CN103336718B (zh) | 2013-07-04 | 2013-07-04 | 一种gpu线程调度优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103336718B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636207B (zh) * | 2015-02-06 | 2018-01-16 | 中国科学院深圳先进技术研究院 | 基于gpgpu体系结构的协同调度方法及系统 |
CN106156786B (zh) * | 2015-04-19 | 2019-12-27 | 北京典赞科技有限公司 | 基于多gpu的随机森林训练方法 |
KR102384345B1 (ko) | 2015-05-15 | 2022-04-19 | 삼성전자 주식회사 | 스레드를 실행하는 방법, 프로세서 및 기록매체 |
CN106325995B (zh) * | 2015-06-19 | 2019-10-22 | 华为技术有限公司 | 一种gpu资源的分配方法及系统 |
CN106407006A (zh) * | 2016-08-31 | 2017-02-15 | 上海交通大学 | 一种基于Whippletree模型的GPU动态任务分配方法 |
CN106502771B (zh) * | 2016-09-09 | 2019-08-02 | 中国农业大学 | 基于kernel函数的时间开销模型构建方法及系统 |
CN106708473B (zh) * | 2016-12-12 | 2019-05-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种统一染色器阵列多warp取指电路 |
CN107577524A (zh) * | 2017-08-04 | 2018-01-12 | 东华理工大学 | 非访存任务优先的gpgpu线程调度方法 |
CN108109104B (zh) * | 2017-12-06 | 2021-02-09 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向统一染色架构gpu的三级任务调度电路 |
CN108710536B (zh) * | 2018-04-02 | 2021-08-06 | 上海交通大学 | 一种多层次细粒度的虚拟化gpu调度优化方法 |
US20190370059A1 (en) * | 2018-05-30 | 2019-12-05 | Advanced Micro Devices, Inc. | Multi-kernel wavefront scheduler |
CN108897416A (zh) * | 2018-06-28 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种控制gpu下电的方法、装置及计算机可读存储介质 |
CN109445565B (zh) * | 2018-11-08 | 2020-09-15 | 北京航空航天大学 | 一种基于流多处理器内核独占和预留的gpu服务质量保障方法 |
CN109783386A (zh) * | 2019-01-17 | 2019-05-21 | 南京大学 | 基于gpu的大规模软件高精度静态分析方法 |
CN110806900B (zh) * | 2019-04-30 | 2021-07-09 | 成都海光微电子技术有限公司 | 一种访存指令处理方法及处理器 |
CN111026528B (zh) * | 2019-11-18 | 2023-06-30 | 中国航空工业集团公司西安航空计算技术研究所 | 一种高性能大规模染色阵列程序调度分发系统 |
CN112114877B (zh) * | 2020-09-28 | 2023-03-14 | 西安芯瞳半导体技术有限公司 | 一种动态补偿线程束warp的方法、处理器及计算机存储介质 |
CN113420672B (zh) * | 2021-06-24 | 2023-03-14 | 清华大学 | 一种基于gpu对脑电信号处理过程进行并行加速的方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819675A (zh) * | 2010-04-19 | 2010-09-01 | 浙江大学 | 一种基于gpu的层次包围盒的快速构造方法 |
-
2013
- 2013-07-04 CN CN201310278628.3A patent/CN103336718B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819675A (zh) * | 2010-04-19 | 2010-09-01 | 浙江大学 | 一种基于gpu的层次包围盒的快速构造方法 |
Non-Patent Citations (1)
Title |
---|
《异构GPU集群的任务调度方法研究及实现》;黄锦增;《计算机技术与发展》;20120531;第22卷(第5期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN103336718A (zh) | 2013-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103336718B (zh) | 一种gpu线程调度优化方法 | |
CN106257411B (zh) | 单指令多线程计算系统及其方法 | |
Narasiman et al. | Improving GPU performance via large warps and two-level warp scheduling | |
US9811340B2 (en) | Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor | |
TWI525540B (zh) | 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 | |
US20090113181A1 (en) | Method and Apparatus for Executing Instructions | |
US20080046689A1 (en) | Method and apparatus for cooperative multithreading | |
US20170139751A1 (en) | Scheduling method and processing device using the same | |
US10318261B2 (en) | Execution of complex recursive algorithms | |
CN105159654A (zh) | 基于多线程并行的完整性度量散列算法优化方法 | |
Allen et al. | Slate: Enabling workload-aware efficient multiprocessing for modern GPGPUs | |
Meenderinck et al. | A case for hardware task management support for the StarSs programming model | |
Zhang et al. | Locality based warp scheduling in GPGPUs | |
US20130339689A1 (en) | Later stage read port reduction | |
Awatramani et al. | Increasing GPU throughput using kernel interleaved thread block scheduling | |
Singh et al. | Collaborative adaptation for energy-efficient heterogeneous mobile SoCs | |
Chen et al. | Balancing scalar and vector execution on gpu architectures | |
CN111026444A (zh) | 一种gpu并行阵列simt指令处理模型 | |
Li et al. | Efficient kernel management on GPUs | |
Woolley | GPU optimization fundamentals | |
Passerat-Palmbach et al. | Warp-level parallelism: Enabling multiple replications in parallel on GPU | |
KR101420592B1 (ko) | 컴퓨터 시스템 | |
Garcia et al. | Dynamic Percolation: A case of study on the shortcomings of traditional optimization in Many-core Architectures | |
CN117501254A (zh) | 使用近存储器计算为复杂操作提供原子性 | |
Huangfu et al. | Warp-based load/store reordering to improve GPU data cache time predictability and performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210416 Address after: 100160, No. 4, building 12, No. 128, South Fourth Ring Road, Fengtai District, Beijing, China (1515-1516) Patentee after: Kaixi (Beijing) Information Technology Co.,Ltd. Address before: 100191 Haidian District, Xueyuan Road, No. 37, Patentee before: BEIHANG University |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160706 Termination date: 20210704 |