CN105843692A - 一种异构计算系统 - Google Patents
一种异构计算系统 Download PDFInfo
- Publication number
- CN105843692A CN105843692A CN201610159081.9A CN201610159081A CN105843692A CN 105843692 A CN105843692 A CN 105843692A CN 201610159081 A CN201610159081 A CN 201610159081A CN 105843692 A CN105843692 A CN 105843692A
- Authority
- CN
- China
- Prior art keywords
- memory
- thread
- depositor
- read
- gpu
- 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.)
- Pending
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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Generation (AREA)
Abstract
本发明公开了一种异构计算系统,其包括多层存储空间复杂结构体,其存储器结构包括六种存储器:全局存储器、寄存器、本地存储器、共享存储器、常量存储器、纹理存储器,其中前三者支持读/写操作,而后两者只具备读操作;这些存储器的结构各异、运算速度不同、大小及存储规模不一样。本发明相较于现有技术提高了CPU+GPU异构计算方法的效率。
Description
技术领域
本发明涉及计算机计算领域,具体涉及一种异构计算系统。
背景技术
异构计算(Heterogeneous computing)主要是指使用不同类型指令集和体系架构的计算单元组成系统的计算方式。常见的计算单元类别包括CPU、GPU等协处理器、DSP、ASIC、FPGA等。异构计算近年来得到更多关注,主要是因为通过提升CPU时钟频率和内核数量而提高计算能力的传统方式遇到了散热和能耗瓶颈。而与此同时,GPU等专用计算单元虽然工作频率较低,具有更多的内核数和并行计算能力,总体性能-芯片面积比和性能-功耗比都很高,却远远没有得到充分利用。广义上,不同计算平台的各个层次上都存在异构现象,除硬件层的指令集、互联方式、内存层次之外,软件层中应用二进制接口、API、语言特性底层实现等的不同,对于上层应用和服务而言,都是异构的。从实现的角度来说,异构计算就是制定出一系列的软件与硬件的标准,让不同类型的计算设备能够共享计算的过程和结果。同时不断优化和加速计算的过程,使其具备更高的计算效能。
近年来,基于CPU+GPU的混合异构计算系统开始逐渐成为国内外高性能计算领域的热点研究方向。在实际应用中,许多基于CPU+GPU的混合异构计算机系统表现出了良好的性能。但是在显卡进行计算的同时,处理器处于闲置状态。由此处理器厂商也想参与到计算中来,他们希望CPU和GPU能够协同运算,完成那些对计算量有着苛刻要求的应用。同时也希望将计算机的处理能力再推上一个新的高峰。
发明内容
本发明为解决上述问题,提供了一种异构计算系统,其包括多层存储空间复杂结构体,其存储器结构包括六种存储器:全局存储器、寄存器、本地存储器、共享存储器、常量存储器、纹理存储器,其中前三者支持读/写操作,而后两者只具备读操作;这些存储器的结构各异、运算速度不同、大小及存储规模不一样,其中共享存储器、寄存器以其独特的结构组成方式在这些存储器中在数据流访问操作速度方面是相对较快的;对于每个并行的运算线程来说,寄存器、局部存储器都是私有的,也就是说每个线程单独存在使用各自的寄存器及局部寄存器;其中作为GPU上的高速缓存区,寄存器能够在极低延迟的情况下别每个线程的ALU所读取;数量客观的寄存器文件构成了寄存器的基础单元,并且被分配给每个正在执行的并行线程,因此,在并行执行的过程中每个线程所拥有的寄存器大小及其有限,在编程过程中应尽量为每个线程分配足够且较少的的私有变量;局部存储器是寄存器在线程执行过程中的补充,当寄存器使用过多,或者并行使用到结构体、数组这样的大数据变量,局部寄存器就充当暂时的收容所,为这些私有数据分配必要的存储空间;与寄存器类似,共享存储器同样也是GPU上的高速存储器,存在于共享存储器的数据是被同一个线程块(Block)中的所有线程共享的,分配这样一种存储器的目的在于减小线程块内各个线程的 通信延迟;因为共享寄存器的存在,其在保存共用计数器或者线程块内的公共结果时,省去大量时间进行线程间通行,所以相应的速率会提升很多;对于全局存储器,GPU、CPU可以直接访问操作其中的全局数据,也就是说执行并行运算的任意一个线程、串行运算的部分都可以读写当中的任意区域的数据,但访问操作过程有很高的延迟;同样位于显存的常数存储器拥有缓存加速,且为只读存储器;GPU分配给常数存储器的空间只有64K,可用于存储并行运算执行过程中需要多次读取的只读变量;纹理存储器的纹理内存存在缓存从而减少了对内存的请求并提供更高的带宽。
本发明相较于现有技术提高了CPU+GPU异构计算方法的效率。
附图说明
图1为CUDA存储模型示意图;
图2为纹理内存与线程的映射关系图。
具体实施方式
下文将详细参考附图描述本发明的优选实施例,借此对本发明如何应用技术手段来解决技术问题,并达到技术效果的实现过程能充分理解并据以实施。为了全面理解本发明,在以下详细描述中提到了诸多细节,但本领域技术人员应该理解,本发明可以无需这些具体细节而实现。
GPU与CPU的最大不同点在于硬件结构自身,而硬件结构不同是由于晶体管用途分布造成的,GPU比CPU在数据计算能力和存储器带框上有相对大的优势,在能耗和价格上付出的代价也相对较小,从而在异构操作协同处理运算上占领并行运算的一席之地。GPU作为图形渲染的主要硬件,因图像渲染运算的高度并行性,它可以采用添加ALU和Control Cache(存储器控制单元)的方式提高运算能力和存储器带宽。CPU的制造厂家是把更多的晶体管用于复杂的控制单元以及缓冲区,而GPU的晶体管作为ALU的居多,从何提高GPU的总体执行单元效率。
CUDA架构下的GPU是一种多层存储空间复杂结构体,这是GPU自身的发展历史和GPU原本的设计理念决定的。如图1所示,该图表明了CUDA的存储器结构包括六种存储器:全局存储器(Global Memory)、寄存器(Registers)、本地存储器(Local Memory)、共享存储器(Shared Memory)、常量存储器(Constant Memory)、纹理存储器(Texture Memory),其中前三者支持读/写操作,而后两者只具备读操作。这些存储器在性能上存在较大差别,它们的结构各异、运算速度不同、大小及存储规模不一样,也决定了CUDA在并行运算过程中存在相同并行运算过程有不同的运算加速收益。共享存储器、寄存器以其独特的结构组成方式在这些存储器中在数据流访问操作速度方面是相对较快的。
对于每个并行的运算线程来说,寄存器、局部存储器都是私有的,也就是说每个线程单独存在使用各自的寄存器及局部寄存器。之中,作为GPU上的高速缓存区,寄存器能够在极低延迟的情况下别每个线程的ALU所读取。数量客观的寄存器文件(Register File)构成了寄存器的基础单元,并且被分配给每个正在执行的并行线程,因此,在并行执行的过程中每个线程所拥有的寄存器大小及其有限,在编程过程中 应尽量为每个线程分配足够且较少的的私有变量。局部存储器是寄存器在线程执行过程中的补充,当寄存器使用过多,或者并行使用到结构体、数组这样的大数据变量,局部寄存器就充当暂时的收容所,为这些私有数据分配必要的存储空间,其区别就在于,分配到局部存储器的数据是存在于显卡显存中,而不是像寄存器在边上或者缓冲区中,所以局部存储器对数据的访问操作会比寄存器慢很多。
与寄存器类似,共享存储器同样也是GPU上的高速存储器,但如同名字一样,存在于共享存储器的数据是被同一个线程块(Block)中的所有线程共享的。分配这样一种存储器的目的在于解决线程块内各个线程的通信问题,这个也是CUDA的创新之处,以往的GPU并行运算技术在执行过程中线程之间的通行总是难以解决,各个线程之间的通行过程总是会存在很长的延迟,而CUDA因为共享寄存器的存在,其在保存共用计数器或者线程块内的公共结果时,省去大量时间进行线程间通行,所以相应的速率会提升很多。
占有显存很大一块的全局存储器,GPU、CPU可以直接访问操作其中的全局数据,也就是说执行并行运算的任意一个线程、串行运算的部分都可以读写当中的任意区域的数据,但访问操作过程有很高的延迟。全局存储器带宽很高,在遵守访问要求前提下,避免分区冲突,如此高的带宽才能被充分的利用好。同样位于显存的常数存储器拥有缓存加速,且为只读存储器。GPU分配给常数存储器的空间只有64K,可用于存储并行运算执行过程中需要多次读取的只读变量。由于它的缓存机制,常量存储器节约了带宽,提高了读取的速率,同时也因为数据只读,因此不存在缓存不一的问题。
特殊的只读存储器还有纹理存储器,开辟这样的一块存储器也是由于GPU纹理渲染功能的特殊性。与常量内存类似,纹理内存存在缓存从而减少了对内存的请求并提供更高的带宽。图2为纹理内存原理的示意图,图中的地址并不连续,普通的CPU缓存机制下这类地址得不到缓存,而GPU就可以在该种模式下进行缓存加速,获取并行程序性能的提升。
以上所述仅为本发明的较佳实施例,并不用于限制本发明,凡在本发明精神和原则之内所做的任何修改、等同替换和改进等,均包含于本发明的保护范围之内。
Claims (1)
1.一种异构计算系统,其包括多层存储空间复杂结构体,其存储器结构包括六种存储器:全局存储器、寄存器、本地存储器、共享存储器、常量存储器、纹理存储器,其中前三者支持读/写操作,而后两者只具备读操作;
这些存储器的结构各异、运算速度不同、大小及存储规模不一样,其中共享存储器、寄存器以其独特的结构组成方式在这些存储器中在数据流访问操作速度方面是相对较快的;对于每个并行的运算线程来说,寄存器、局部存储器都是私有的,也就是说每个线程单独存在使用各自的寄存器及局部寄存器;其中作为GPU上的高速缓存区,寄存器能够在极低延迟的情况下别每个线程的ALU所读取;数量客观的寄存器文件构成了寄存器的基础单元,并且被分配给每个正在执行的并行线程,因此,在并行执行的过程中每个线程所拥有的寄存器大小及其有限,在编程过程中应尽量为每个线程分配足够且较少的的私有变量;局部存储器是寄存器在线程执行过程中的补充,当寄存器使用过多,或者并行使用到结构体、数组这样的大数据变量,局部寄存器就充当暂时的收容所,为这些私有数据分配必要的存储空间;与寄存器类似,共享存储器同样也是GPU上的高速存储器,存在于共享存储器的数据是被同一个线程块(Block)中的所有线程共享的,分配这样一种存储器的目的在于减小线程块内各个线程的通信延迟;因为共享寄存器的存在,其在保存共用计数器或者线程块内的公共结果时,省去大量时间进行线程间通行,所以相应的速率会提升很多;对于全局存储器,GPU、CPU可以直接访问操作其中的全局数据,也就是说执行并行运算的任意一个线程、串行运算的部分都可以读写当中的任意区域的数据,但访问操作过程有很高的延迟;同样位于显存的常数存储器拥有缓存加速,且为只读存储器;GPU分配给常数存储器的空间只有64K,可用于存储并行运算执行过程中需要多次读取的只读变量;纹理存储器的纹理内存存在缓存从而减少了对内存的请求并提供更高的带宽。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610159081.9A CN105843692A (zh) | 2016-03-18 | 2016-03-18 | 一种异构计算系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610159081.9A CN105843692A (zh) | 2016-03-18 | 2016-03-18 | 一种异构计算系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105843692A true CN105843692A (zh) | 2016-08-10 |
Family
ID=56588282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610159081.9A Pending CN105843692A (zh) | 2016-03-18 | 2016-03-18 | 一种异构计算系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105843692A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502956A (zh) * | 2016-10-28 | 2017-03-15 | 张军 | 一种多核异构cpu‑gpu系统架构的操作系统原型 |
CN110502325A (zh) * | 2019-08-12 | 2019-11-26 | 北京和利时系统工程有限公司 | 一种任务运行方法及装置、计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101754013A (zh) * | 2008-11-28 | 2010-06-23 | 汤姆森许可贸易公司 | 由图形处理单元支持的视频解码方法 |
CN103490877A (zh) * | 2013-09-05 | 2014-01-01 | 北京航空航天大学 | 基于cuda的aria对称分组密码算法并行化方法 |
-
2016
- 2016-03-18 CN CN201610159081.9A patent/CN105843692A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101754013A (zh) * | 2008-11-28 | 2010-06-23 | 汤姆森许可贸易公司 | 由图形处理单元支持的视频解码方法 |
CN103490877A (zh) * | 2013-09-05 | 2014-01-01 | 北京航空航天大学 | 基于cuda的aria对称分组密码算法并行化方法 |
Non-Patent Citations (2)
Title |
---|
仇德元: "《GPGPU编程技术 从GLSL、CUDA到OpenCL》", 30 June 2011, 机械工业出版社 * |
刘文志: "《科学计算与企业级应用的并行优化》", 31 July 2015, 机械工业出版社 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502956A (zh) * | 2016-10-28 | 2017-03-15 | 张军 | 一种多核异构cpu‑gpu系统架构的操作系统原型 |
CN110502325A (zh) * | 2019-08-12 | 2019-11-26 | 北京和利时系统工程有限公司 | 一种任务运行方法及装置、计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220076110A1 (en) | Efficient Neural Network Accelerator Dataflows | |
US20210209025A1 (en) | Method and apparatus for shared virtual memory to manage data coherency in a heterogeneous processing system | |
US10217183B2 (en) | System, method, and computer program product for simultaneous execution of compute and graphics workloads | |
Hong-Tao et al. | K-means on commodity GPUs with CUDA | |
CN108694684B (zh) | 共享本地存储器分块机制 | |
CN105718994B (zh) | 细胞阵列计算系统 | |
US9245601B2 (en) | High-density latch arrays | |
US10810784B1 (en) | Techniques for preloading textures in rendering graphics | |
CN101080701A (zh) | 用于从外部设备到处理器的存储器的地址翻译的方法和装置 | |
Hussain et al. | PPMC: a programmable pattern based memory controller | |
DE102020115680A1 (de) | LESEZUSAMMENFüGUNG UND M ULTICAST-RÜCKFÜHRUNG FÜR EINEN GETEILTEN LOKALEN SPEICHER | |
CN109313557A (zh) | 用于优化gpu线程共享本地存储器访问的装置 | |
US11429534B2 (en) | Addressing cache slices in a last level cache | |
Bouvier et al. | Kabini: An AMD accelerated processing unit system on a chip | |
Wang et al. | Performance-centric register file design for GPUs using racetrack memory | |
Li et al. | Parallelizing and optimizing large‐scale 3D multi‐phase flow simulations on the Tianhe‐2 supercomputer | |
CN105843692A (zh) | 一种异构计算系统 | |
US9171525B2 (en) | Graphics processing unit with a texture return buffer and a texture queue | |
DE102020104651A1 (de) | Arbeitsspeicherkomprimierungs-Hashmechanismus | |
US10915445B2 (en) | Coherent caching of data for high bandwidth scaling | |
DE102019123443A1 (de) | Mechanismus zum gemeinsamen Benutzen von Registern | |
CN103902502A (zh) | 一种可扩展的分离式异构千核系统 | |
US20210248014A1 (en) | Read-write page replication for multiple compute units | |
KR20190003512A (ko) | 서브그룹 간 데이터 공유 | |
DE102020108215A1 (de) | Bedienflächenzugriff mittels flacher Speicherzuordnung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160810 |
|
RJ01 | Rejection of invention patent application after publication |