CN107291537A - 一种gpu片上存储空间使用的优化方法 - Google Patents
一种gpu片上存储空间使用的优化方法 Download PDFInfo
- Publication number
- CN107291537A CN107291537A CN201710438055.4A CN201710438055A CN107291537A CN 107291537 A CN107291537 A CN 107291537A CN 201710438055 A CN201710438055 A CN 201710438055A CN 107291537 A CN107291537 A CN 107291537A
- Authority
- CN
- China
- Prior art keywords
- array
- gpu
- aray
- aray variable
- memory space
- 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.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明一种GPU片上存储空间使用的优化方法涉及数据分析、并行处理、GPU程序优化等应用领域,特别是一种针对GPU片上的多种存储空间(如寄存器、共享存储和L1缓存等)使用的优化方法。步骤1)统计当前GPU片上共享存储空间的所有数组变量;2)将统计得到的所有数组变量按访问次数排序,形成排序后的数组变量组;3)从排序后的数组变量组中选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存;4)若当前数组变量迁移后的系统性能优于迁移前的性能,则继续进行步骤3)迁移下一个数组变量,直到排序后的数组变量组中的数组变量全部转移结束;若当前数组变量迁移后的系统性能比迁移前的性能更差,则终止迁移。
Description
技术领域
本发明一种GPU片上存储空间使用的优化方法涉及数据分析、并行处理、GPU程序优化等应用领域,特别是一种针对GPU片上的多种存储空间(如寄存器、共享存储和L1缓存等)使用的优化方法。
背景技术
GPU早期用于图形处理,之后逐渐用于一般的计算任务,利用GPU的众核特性进行并行计算,加速任务处理。虽然GPU的每个性能在计算能力上弱于CPU的性能,但其内核数量远多于CPU内核。实验表明,对于一般可并行的计算任务而言,GPU的性能可达到CPU的数十倍。由于GPU结构的特殊性,一般用于对可高度并行的任务进行加速,而对于其他任务的加速效果可能尚不足以弥补CPU与GPU之间转换所消耗的代价。通常情况下,在多数实际系统部署中,任务处理以CPU为主,其中可高度并行的部分使用GPU处理,提高任务处理速度。
GPU可以看做是一种两层的多核结构,每个GPU包含多个SM,每个SM(StreamingMultiprocessor)包含多个SP(Streaming Processor)。GPU的片下存储包括组织内存(texture memory)、常量内存(constant memory)、全局内存和局部内存。由于片下存储的访问延时较高且受带宽限制较大,每个SM内部引入了三种片上存储器:寄存器、共享存储和缓存。其中,寄存器的访问延时最小且吞吐率最高,容量比共享存储和L1缓存更大,寄存器是每个线程私有,过分使用线程的寄存器会导致寄存器溢出到局部存储。共享存储的吞吐率和容量均较小,可被线程块内的所有线程访问且延时较低。过多使用共享存储或寄存器会限制每个SM上运行的线程数量,但L1缓存不会造成该后果。但一个SM上运行太多的线程会引起对有限的L1缓存的竞争使用,造成缓存冲突从而影响性能。
由于GPU的计算吞吐率的增长速度远大于其片下存储带宽的增长,因此要充分合理的利用片上存储才能有效的利用GPU的计算资源。不同GPU片上存储的容量增长速度不同,如寄存器文件的容量增长速度比共享资源的容量增长速度快很多,因此在一个GPU上的最优化执行代码并不一定适用于其他GPU。对于应用开发者而言,手动调节片上存储的问题主要表现在:一是GPU的三类片上存储均对性能有所影响,但对于某个应用中指定的数据元素而言,很难确定合适的片上存储资源的分配情况;二是不同时期GPU之间资源的发展是非线性的,因此不同GPU的最优化片上资源使用情况也不同。
综上所述,现有的GPU程序性能优化方法主要通过修改GPU程序代码,受限于应用程序类别和GPU设备参数,该优化方法的通用性和可移植性较差。同时对GPU片上存储资源的利用不均衡,影响GPU程序处理性能的进一步提升。
目前,提高GPU程序处理性能的常用方法包括更新GPU设备,即使用性能更高的GPU进行程序处理;或者对程序本身进行优化,即应用开发者在程序编写过程中充分考虑GPU的多核和单指令等特征对应用程序进行手动的优化,从而保证在应用程序执行过程可以充分发挥GPU的计算能力提高程序处理性能。
但是GPU设备的快速发展使得频繁更新硬件设备的代价很高,而手动优化GPU程序的工作量很大且可移植性很低,在一个GPU设备上性能很高的优化方案可能在其他GPU设备上的性能不一定很高,因此不具备兼容性,没有普适性。每个类型的设备开发一套软件明显很浪费人力物力和时间,在信息化高速发展的时代,如何节约能源也成为了很大的问题。
发明内容
本发明的目的是针对上述不足之处提供一种GPU片上存储空间使用的优化方法,是一种能自动地对GPU上各种存储空间的使用进行优化的方法,可以与当前的更新设备和手动优化GPU程序的方法项结合,适用于各类GPU应用程序也可以在各种GPU设备上进行移植,对GPU程序的性能进行提升。解决因GPU片上共享存储空间过度使用而导致的性能低下问题,通过合理利用GPU的三类片上存储空间,将共享存储空间的部分数据迁移到寄存器和L1缓存,提高GPU的数据处理性能。
本发明是采取以下技术方案实现的:
一种GPU片上存储空间使用的优化方法,包括如下步骤:
1)统计当前GPU片上共享存储空间的所有数组变量,包括每个数组变量的访问次数、是否用于多线程通信、数组下表是否为常量等参数;
2)将步骤1)中统计得到的所有数组变量按访问次数排序,形成排序后的数组变量组;
3)从排序后的数组变量组中选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存;
4)若当前数组变量迁移后的系统性能优于迁移前的性能,则继续进行步骤3),迁移下一个数组变量,直到排序后的数组变量组中的数组变量全部转移结束;若当前数组变量迁移后的系统性能比迁移前的性能更差,则终止本次片上存储空间的优化过程,不再迁移其他数据变量。
步骤1)具体的工作过程包括:
1-1)采用CollectArrays程序模块统计当前GPU程序中存储在片上共享存储空间的所有数组变量;
使用GPU程序编译工具对当前GPU程序进行编译,找出编译代码中所有存储在片上共享存储空间内的数组变量,记为SMArray;
1-2)采用AccessCount程序模块,统计步骤1-1)得到的SMArray中每个数组变量的访问次数;
对于某个数组变量array i 而言,其访问次数记为array i .count;
1-3)采用IsAccessedByThreads程序模块判断SMArray中每个数组变量是否被同时被多个线程访问。对于某个数组变量array i 而言,该参数记为array i .threads,如果数组变量array i 被多个线程访问则array i .threads=1,否则array i .threads=0;
1-4)采用IsConstantIndex程序模块判断SMArray中每个数组变量的下标是否为常量,即该数组是否确定长度;对于某个数组变量array i 而言,该参数记为array i .constant,如果数组变量array i 的长度为常量则array i .constant=1,否则array i .constant=0。
1-5)采用CollectFinish程序模块判断是否完成当前GPU程序中存储在片上共享存储空间的所有数组变量的参数是否收集完成,若完成所有收集工作则进入步骤2)中的排序程序模块SortArrays,否则继续遍历GPU程序收集参数信息。
为了提高系统的效率,CollectArrays、AccessCount、IsAccessedByThreads和IsConstantIndex程序模块同时执行,在一次遍历GPU程序的过程中完成SMArray及每个数组变量所有参数的统计。因为在GPU程序中变量需要先声明后才能使用,因此可以确定每个数组变量array i 是否存储在共享存储空间中,然后才能统计array i .count、array i .threads、array i .constant等相关参数,其中array i .count、array i .threads和array i .constant分别表示数组变量array i 的访问次数、是否被多线程访问以及长度是否为常量。
步骤1-2)中,依次遍历GPU程序,若数组变量array i 的该次访问在条件语句中,则假设本次访问有一半的概率可被执行,即array i .count+=0.5;若本次访问在循环体内且循环次数为常数,则访问次数array i .count+=loops,若循环体次数为变量则array i .count+=loops_app,其中loops表示常量的循环次数,loops_app表示近似的非常量的循环次数。
所述loops_app是经验值,其获取方法如下:统计开源的GPU标准测试程序或其他业务相关的GPU程序在运行过程中,每个循环次数为不确定的循环体的实际执行次数,然后将其累加并求得平均执行次数即为loops_app的近似取值。
步骤2)中,采用SortArrays程序模块将步骤1)得到的所有数组变量按其访问次数的降序排列,即访问次数最多的数组变量在最前面,得到排序后的数组变量组;排序方法采用标准库中的快速排序算法。
步骤3)中,采用PromoteArray程序模块将经过步骤2)排序后的数组变量组中的某个数组变量从共享存储空间迁移到寄存器或L1缓存中;
迁移的具体实现方法如下:
3-1)对于排序后的数组变量组SMArray,选择当前SMArray中访问次数最多的数组变量,记为array max ;
3-2)判断array max 的迁移位置
若array max .threads=0且array max .constant=1,则array max 迁移到寄存器中,否则迁移到L1缓存中;
进一步判断若array max .threads=0且array max .constant=0,则array max 迁移到L1缓存的局部存储空间中,否则迁移到L1缓存的全局存储空间中;
将迁移后的array max 从排序后的数组变量组SMArray中删除。
步骤4)中,采用BetterSolution程序模块判断将某个存储在共享存储空间中的数组变量迁移到其他片上存储空间中是否能够提高GPU程序的性能;对于排序后的数组变量组中某个数组变量array i 而言,若迁移操作能够提升GPU程序性能则继续迁移下一个数组变量,终止本次片上存储空间的优化过程。
相比传统的通过优化GPU程序本身以及购买性能更好的GPU设备以提高GPU程序性能的方法,本发明解决了当前GPU设备片上存储空间(如寄存器、共享存储以及L1缓存等)的容量和访问延时等发展不均衡而导致GPU程序处理性能增长瓶颈的问题,其优点表现在:一是可以与传统的提升GPU程序性能的方法共同使用,在传统的优化方法基础上进一步提高性能;二是可以该方法可以自主执行,不需要应用程序开发者手动对GPU程序修改;三是该方法的适用性很广,可以适用于各种类型的GPU应用程序以及当前所有的GPU设备,但对性能的提升程度与具体的应用类型和GPU设备有关。提出一种针对GPU片上的多种存储空间利用的优化方法,对给定的GPU程序自动进行片上存储空间的优化,从而提高GPU程序的处理性能。
附图说明
图1是本发明的优化方法的处理流程图。
具体实施方式
以下将结合附图对本发明作进一步说明。
由于GPU程序中数据通常以数组形式存储和处理,且数组变量占用的空间比其他类型变量大得多,因此分析各个片上存储空间中的数组变量的存储和访问情况,即可判断各存储空间的使用情况。
一种GPU片上存储空间使用的优化方法,包括如下步骤:
1)统计当前GPU片上共享存储空间的所有数组变量,包括每个数组变量的访问次数、是否用于多线程通信、数组下表是否为常量等参数;
2)将步骤1)中统计得到的所有数组变量按访问次数排序,形成排序后的数组变量组;
3)从排序后的数组变量组中选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存;
4)若当前数组变量迁移后的系统性能优于迁移前的性能,则继续进行步骤3),迁移下一个数组变量,直到排序后的数组变量组中的数组变量全部转移结束;若当前数组变量迁移后的系统性能比迁移前的性能更差,则终止本次片上存储空间的优化过程,不再迁移其他数据变量。
系统处理流程如图1所示,详细处理步骤如下:
(1)CollectArrays程序模块:功能是统计当前GPU程序中存储在片上共享存储空间的所有数组变量。工作流程是首先利用GPU程序编译工具对当前GPU程序进行编译,然后分析编译后的代码,找出其中所有存储在片上共享存储空间内的数组变量,记为SMArray;
(2) AccessCount程序模块:功能是统计SMArray中每个数组变量的访问次数。对于某个数组变量array i 而言,其访问次数记为array i .count。依次遍历GPU程序,若数组变量array i 的该次访问在条件语句中,则假设本次访问有一半的概率可被执行,即array i .count+=0.5;若本次访问在循环体内且循环次数为常数,则访问次数array i .count+=loops,若循环体次数为变量则array i .count+=loops_app,其中loops表示常量的循环次数,loops_app表示近似的非常量的循环次数。loops_app是经验值,其获取方法如下:统计开源的GPU标准测试程序或其他业务相关的GPU程序在运行过程中,每个循环次数为不确定的循环体的实际执行次数,然后将其累加并求得平均执行次数即为loops的近似取值;
(3) IsAccessedByThreads程序模块:功能是判断SMArray中每个数组变量是否被同时被多个线程访问。对于某个数组变量array i 而言,该参数记为array i .threads,如果数组变量array i 被多个线程访问则array i .threads=1,否则array i .threads=0;
(4)IsConstantIndex程序模块:功能是判断SMArray中每个数组变量的下标是否为常量,即该数组是否确定长度。对于某个数组变量array i 而言,该参数记为array i .constant,如果数组变量array i 的长度为常量则array i .constant=1,否则array i .constant=0;
(5)CollectFinish程序模块:功能是判断是否完成当前GPU程序中存储在片上共享存储空间的所有数组变量的参数是否收集完成,若完成所有收集工作则执行程序模块SortArrays,否则继续遍历GPU程序收集参数信息。
为了提高系统的效率,程序模块CollectArrays、AccessCount、IsAccessedByThreads和IsConstantIndex同时执行,在一次遍历GPU程序的过程中完成SMArray及每个数组变量所有参数的统计。因为在GPU程序中变量需要先声明后才能使用,因此可以确定每个数组变量array i 是否存储在共享存储空间中,然后才能统计array i .count、array i .threads、array i .constant等相关参数。
(6)SortArrays程序模块:功能是将SMArray中的所有数组变量按其访问次数的降序排列,即访问次数最多的数组变量在最前面。排序方法采用标准库中的快速排序算法。
(7)PromoteArray程序模块:功能是将SMArray中的某个数组变量从共享存储空间迁移到寄存器或L1缓存中。具体实现方法如下:对于排序后的SMArray,选择当前SMArray中访问次数最多的数组变量,记为array max ;判断array max 应该迁移到何处,若array max .threads =0且array max .constant=1,则array max 迁移到寄存器中,否则迁移到L1缓存中;进一步判断若array max .threads =0且array max .constant=0,则array max 迁移到L1缓存的局部存储空间中,否则迁移到L1缓存的全局存储空间中。最后将array max 从SMArray中删除。
(8)BetterSolution程序模块:功能是判断将某个存储在共享存储空间中的数组变量迁移到其他片上存储空间中是否能够提高GPU程序的性能。对于SMArray中当前迁移的数组变量array max 而言,若迁移操作能够提升GPU程序性能则继续迁移下一个数组变量,否则终止本次片上存储空间的优化过程。
Claims (7)
1.一种GPU片上存储空间使用的优化方法,其特征在于,包括如下步骤:
1)统计当前GPU片上共享存储空间的所有数组变量,包括每个数组变量的访问次数、是否用于多线程通信、数组下表是否为常量等参数;
2)将步骤1)中统计得到的所有数组变量按访问次数排序,形成排序后的数组变量组;
3)从排序后的数组变量组中选择访问次数最高的数组变量从共享存储空间迁移到寄存器或L1缓存;
4)若当前数组变量迁移后的系统性能优于迁移前的性能,则继续进行步骤3),迁移下一个数组变量,直到排序后的数组变量组中的数组变量全部转移结束;若当前数组变量迁移后的系统性能比迁移前的性能更差,则终止本次片上存储空间的优化过程,不再迁移其他数据变量。
2.根据权利要求1所述的一种GPU片上存储空间使用的优化方法,其特征在于,步骤1)具体的工作过程包括:
1-1)采用CollectArrays程序模块统计当前GPU程序中存储在片上共享存储空间的所有数组变量;
使用GPU程序编译工具对当前GPU程序进行编译,找出编译代码中所有存储在片上共享存储空间内的数组变量,记为SMArray;
1-2)采用AccessCount程序模块,统计步骤1-1)得到的SMArray中每个数组变量的访问次数,对于某个数组变量array i 而言,其访问次数记为array i .count;
1-3)采用IsAccessedByThreads程序模块判断SMArray中每个数组变量是否被同时被多个线程访问,对于某个数组变量array i 而言,该参数记为array i .threads,如果数组变量array i 被多个线程访问则array i .threads=1,否则array i .threads=0;
1-4)采用IsConstantIndex程序模块判断SMArray中每个数组变量的下标是否为常量,即该数组是否确定长度;对于某个数组变量array i 而言,该参数记为array i .constant,如果数组变量array i 的长度为常量则array i .constant=1,否则array i .constant=0;
1-5)采用CollectFinish程序模块判断是否完成当前GPU程序中存储在片上共享存储空间的所有数组变量的参数是否收集完成,若完成所有收集工作则进入步骤2)中的排序程序模块SortArrays,否则继续遍历GPU程序收集参数信息。
3.根据权利要求2所述的一种GPU片上存储空间使用的优化方法,其特征在于,为了提高系统的效率,CollectArrays、AccessCount、IsAccessedByThreads和IsConstantIndex程序模块同时执行,在一次遍历GPU程序的过程中完成SMArray及每个数组变量所有参数的统计,因为在GPU程序中变量需要先声明后才能使用,因此可以确定每个数组变量array i 是否存储在共享存储空间中,然后才能统计array i .count、array i .threads、array i .constant等相关参数,其中array i .count、array i .threads和array i .constant分别表示数组变量array i 的访问次数、是否被多线程访问以及长度是否为常量。
4.根据权利要求2所述的一种GPU片上存储空间使用的优化方法,其特征在于,步骤1-2)中,依次遍历GPU程序,若数组变量array i 的该次访问在条件语句中,则假设本次访问有一半的概率可被执行,即array i .count+=0.5;若本次访问在循环体内且循环次数为常数,则访问次数array i .count+=loops,若循环体次数为变量则array i .count+= loops_app,其中loops表示常量的循环次数,loops_app表示近似的非常量的循环次数,所述loops_app是经验值,其获取方法如下:统计开源的GPU标准测试程序或其他业务相关的GPU程序在运行过程中,每个循环次数为不确定的循环体的实际执行次数,然后将其累加并求得平均执行次数即为loops_app的近似取值。
5.根据权利要求1所述的一种GPU片上存储空间使用的优化方法,其特征在于,步骤2)中,采用SortArrays程序模块将步骤1)得到的所有数组变量按其访问次数的降序排列,即访问次数最多的数组变量在最前面,得到排序后的数组变量组;排序方法采用标准库中的快速排序算法。
6.根据权利要求1所述的一种GPU片上存储空间使用的优化方法,其特征在于,步骤3)中,采用PromoteArray程序模块将经过步骤2)排序后的数组变量组中的某个数组变量从共享存储空间迁移到寄存器或L1缓存中;
迁移的具体实现方法如下:
3-1)对于排序后的数组变量组SMArray,选择当前SMArray中访问次数最多的数组变量,记为array max ;
3-2)判断array max 的迁移位置
若array max .threads=0且array max .constant=1,则array max 迁移到寄存器中,否则迁移到L1缓存中;
进一步判断若array max .threads=0且array max .constant=0,则array max 迁移到L1缓存的局部存储空间中,否则迁移到L1缓存的全局存储空间中;
将迁移后的array max 从排序后的数组变量组SMArray中删除。
7.根据权利要求1所述的一种GPU片上存储空间使用的优化方法,其特征在于,步骤4)中,采用BetterSolution程序模块判断将某个存储在共享存储空间中的数组变量迁移到其他片上存储空间中是否能够提高GPU程序的性能;对于排序后的数组变量组中某个数组变量array i 而言,若迁移操作能够提升GPU程序性能则继续迁移下一个数组变量,终止本次片上存储空间的优化过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710438055.4A CN107291537A (zh) | 2017-06-07 | 2017-06-07 | 一种gpu片上存储空间使用的优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710438055.4A CN107291537A (zh) | 2017-06-07 | 2017-06-07 | 一种gpu片上存储空间使用的优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107291537A true CN107291537A (zh) | 2017-10-24 |
Family
ID=60096379
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710438055.4A Withdrawn CN107291537A (zh) | 2017-06-07 | 2017-06-07 | 一种gpu片上存储空间使用的优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107291537A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595258A (zh) * | 2018-05-02 | 2018-09-28 | 北京航空航天大学 | 一种gpgpu寄存器文件动态扩展方法 |
CN111045959A (zh) * | 2019-11-18 | 2020-04-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于存储优化的复杂算法变量映射方法 |
US11443262B2 (en) * | 2017-10-20 | 2022-09-13 | Siemens Aktiengesellschaft | Energy efficient scheduling of industrial process by reducing idle time and tardiness of jobs |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150157A (zh) * | 2013-01-03 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 基于访存分歧的gpu核心程序重组优化方法 |
CN103178989A (zh) * | 2013-02-18 | 2013-06-26 | 中兴通讯股份有限公司 | 访问热度统计方法及装置 |
US20140049551A1 (en) * | 2012-08-17 | 2014-02-20 | Intel Corporation | Shared virtual memory |
CN103970960A (zh) * | 2014-05-23 | 2014-08-06 | 湘潭大学 | 基于gpu并行加速的无网格伽辽金法结构拓扑优化方法 |
CN105452986A (zh) * | 2013-08-08 | 2016-03-30 | 高通股份有限公司 | 用于具有选择性功率或性能优化的内存通道交织的系统和方法 |
US20160283237A1 (en) * | 2015-03-27 | 2016-09-29 | Ilan Pardo | Instructions and logic to provide atomic range operations |
CN106991007A (zh) * | 2017-03-31 | 2017-07-28 | 青岛大学 | 一种基于gpu片上的数据处理方法 |
-
2017
- 2017-06-07 CN CN201710438055.4A patent/CN107291537A/zh not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140049551A1 (en) * | 2012-08-17 | 2014-02-20 | Intel Corporation | Shared virtual memory |
CN103150157A (zh) * | 2013-01-03 | 2013-06-12 | 中国人民解放军国防科学技术大学 | 基于访存分歧的gpu核心程序重组优化方法 |
CN103178989A (zh) * | 2013-02-18 | 2013-06-26 | 中兴通讯股份有限公司 | 访问热度统计方法及装置 |
CN105452986A (zh) * | 2013-08-08 | 2016-03-30 | 高通股份有限公司 | 用于具有选择性功率或性能优化的内存通道交织的系统和方法 |
CN103970960A (zh) * | 2014-05-23 | 2014-08-06 | 湘潭大学 | 基于gpu并行加速的无网格伽辽金法结构拓扑优化方法 |
US20160283237A1 (en) * | 2015-03-27 | 2016-09-29 | Ilan Pardo | Instructions and logic to provide atomic range operations |
CN106991007A (zh) * | 2017-03-31 | 2017-07-28 | 青岛大学 | 一种基于gpu片上的数据处理方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11443262B2 (en) * | 2017-10-20 | 2022-09-13 | Siemens Aktiengesellschaft | Energy efficient scheduling of industrial process by reducing idle time and tardiness of jobs |
CN108595258A (zh) * | 2018-05-02 | 2018-09-28 | 北京航空航天大学 | 一种gpgpu寄存器文件动态扩展方法 |
CN108595258B (zh) * | 2018-05-02 | 2021-07-27 | 北京航空航天大学 | 一种gpgpu寄存器文件动态扩展方法 |
CN111045959A (zh) * | 2019-11-18 | 2020-04-21 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于存储优化的复杂算法变量映射方法 |
CN111045959B (zh) * | 2019-11-18 | 2024-03-19 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于存储优化的复杂算法变量映射方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102981807B (zh) | 一种基于cuda并行环境的gpu程序优化方法 | |
Leis et al. | Morsel-driven parallelism: a NUMA-aware query evaluation framework for the many-core age | |
CN106775594B (zh) | 一种基于申威26010处理器的稀疏矩阵向量乘异构众核实现方法 | |
CN105260237B (zh) | 异构多核平台的任务调度系统及其调度方法 | |
CN1914597A (zh) | 处理单元的动态加载和卸载 | |
CN107291537A (zh) | 一种gpu片上存储空间使用的优化方法 | |
CN108595258A (zh) | 一种gpgpu寄存器文件动态扩展方法 | |
CN109388486B (zh) | 一种针对异构内存与多类型应用混合部署场景的数据放置与迁移方法 | |
CN106991007B (zh) | 一种基于gpu片上的数据处理方法及设备 | |
CN109522428A (zh) | 一种基于索引定位的图计算系统的外存访问方法 | |
CN105468439A (zh) | 在cpu-gpu异构框架下遍历固定半径内邻居的自适应并行算法 | |
Kunz et al. | Multi-level parallelism for time-and cost-efficient parallel discrete event simulation on gpus | |
CN111176831B (zh) | 基于多线程共享内存通信的动态线程映射优化方法及装置 | |
Yin et al. | DFGNet: Mapping dataflow graph onto CGRA by a deep learning approach | |
CN1326567A (zh) | 处理系统调度 | |
CN107885600A (zh) | 批量定时任务的调度方法、装置和计算机设备 | |
CN106685954A (zh) | 一种插件扫描、确定插件内规则调度顺序的方法及装置 | |
CN114217930A (zh) | 一种基于混合任务调度的加速器系统资源优化管理方法 | |
CN103810041A (zh) | 一种支持动态伸缩的并行计算的方法 | |
CN106598552A (zh) | 基于Gridding模块的数据点转换方法及装置 | |
CN105653243A (zh) | 一种通用图形处理器多任务并发执行的任务派发方法 | |
CN111045959B (zh) | 一种基于存储优化的复杂算法变量映射方法 | |
CN114692079A (zh) | 一种gpu批量矩阵乘法加速器及其处理方法 | |
CN110069243A (zh) | 一种java程序线程优化方法 | |
CN107665195A (zh) | 导入大数量数据的方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20171024 |
|
WW01 | Invention patent application withdrawn after publication |