CN101551761A - 一种异构多处理器中共享流内存的方法 - Google Patents
一种异构多处理器中共享流内存的方法 Download PDFInfo
- Publication number
- CN101551761A CN101551761A CNA2009100149388A CN200910014938A CN101551761A CN 101551761 A CN101551761 A CN 101551761A CN A2009100149388 A CNA2009100149388 A CN A2009100149388A CN 200910014938 A CN200910014938 A CN 200910014938A CN 101551761 A CN101551761 A CN 101551761A
- Authority
- CN
- China
- Prior art keywords
- processor
- stream
- unit
- memory
- storage
- 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
- 238000000034 method Methods 0.000 title claims abstract description 15
- 238000010304 firing Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供一种异构多处理器中共享流内存的方法,该方法是应用程序运行在主处理器上第一次调用API,为配有流内存的多个处理器单元从包含局部变量的源代码编译一个或多个可执行程序;然后第二次调用API,去加载一个或多个可执行程序到多个处理器单元中,并行执行多个线程,加载时,从一个处理器的局部存储中分配局部存储单元;并且加载时,从流内存中,分配第一个流存储单元,当一个处理单元中同时执行多个线程,这些线程基于流内存的存储单元访问变量的值,对于包含流变量的源程序进一步包括:第三次调用API,在流内存中,为流变量分配第二个流存储单元;基于第二个流存储单元,从多个处理器单元访问流变量的变量值。
Description
技术领域
本发明涉及一种数据并行计算技术,尤其史通过异构多处理器CPUs和GPUs进行数据并行计算时共享流内存的方法。
背景技术
随着GPU逐渐纳入高性能并行计算设备,GPU被按照一般目的的计算设备,开发了越来越多的应用程序完成数据并行计算。今天,我们用供应商提供的专业接口和专业GPU设备,设计这些应用程序,因此,即使CPU和GPU一起用于数据处理***,CPU也不会负载过重,应用程序也可以运行在不同厂商的GPU上。
然而,随着越来越多的CPU被嵌入多核完成数据并行计算,越来越多的数据处理任务即可以用CPUs和GPUs完成。多个CPU或GPU组合的处理器简写CPUs和GPUs,传统意义上,GPUs和CPUs,是分别通过不同的程序环境编译的,因此使得CPU和GPU相互适应性不是很好。因此使应用同时利用好CPUs和GPUs处理资源是非常困难的,从而需要一个新的数据处理***克服上述困难。从而使应用能够充分利用好CPU和GPU各种处理资源。
发明内容
本发明的目的是提供一种异构多处理器中共享流内存的方法。
本发明的目的是按以下方式实现的,包括主处理器和计算处理器,运行在主处理器中的应用程序,基于主处理器调用API,把可执行程序从主处理器中加载到计算处理器,并为计算处理器配置存储能力,为计算处理器中的线程访问某个变量分配内存,计算处理器是GPU或者CPU;
步骤如下:应用程序运行在主处理器中第一次调用API,为配有流内存的多个处理器单元从包含局部变量的源代码编译一个或多个可执行程序;然后第二次调用API,去加载一个或多个可执行程序到多个处理器单元中,并行执行多个线程,加载时,从一个处理器的局部存储中分配局部存储单元;并且加载时,从流内存中分配第一个流存储单元,当一个处理单元中同时执行多个线程,这些线程基于流内存的存储单元访问变量的值,对于包含流变量的源程序进一步包括:第三次调用API,在流内存中,为流变量分配第二个流存储单元;基于第二个流存储单元,从多个处理器单元访问流变量的变量值。
本发明的优异效果是很好的使应用程序同时利用好CPUs和GPUs处理资源,提高应用程序处理海量数据的能力。
附图说明
图1是完成数据并行计算的计算设备配置图;
图2是多处理器并行执行多线程共享流内存示意图;
图3是调度API完成内存分配的过程示意图。
具体实施方式
参照说明书附图对本发明的一种异构多处理器中共享流内存的方法作以下详细地说明。
本发明中运行在主处理器上的应用,配置计算处理器的存储能力,计算处理器可以是CPU或者GPU,并且为计算处理中一组线程执行的可执行程序,访问一个变量分配存储单元。被这组线程访问的变量的值,或者来自计算处理器的局部内存或者主处理器和计算处理器共享的流内存。通过API调用,应用完成内存的分配和配置。第一次调用API时,为配有流内存的多个处理单元,从源代码编译一个或多个可执行程序;然后第二次调用API,去加载这些可执行程序到多个处理单元中,并且同时执行多个线程。加载时,从一个处理器的局部存储中分配局部存储单元,这个存储单元用于保存源代码中的局部变量;并且加载时从流内存中,分配第一个流存储单元,当一个处理单元中同时执行多个线程,多个线程基于流内存的存储单元访问局部变量的值。对于包含流变量的源程序进一步包括:第三次调用API,在流内存中,为流变量分配第二个流存储单元;基于第二个流存储单元,可以从多个处理器单元,访问流变量。在流缓存中为变量分配缓存单元,缓存单元中保存流存储单元中变量的值。
实施例
图1是为完成应用数据并行处理的计算设备配置图,在这个计算设备中,包含中央处理器CPU和图形处理器GPU,其中的主处理***中有一个主处理器,可以在网络中上传下载数据和结算结果,主处理器通过数据总线连接异构处理器CPUs和GPUs。CPU可以是多核的CPU,GPU是可以支持图形处理和双精度浮点运算的硬件。函数库保存源代码和可执行程序,编译层负责编译源代码,应用通过API调用,加载可执行程序到运行层,运行层通过计算资源的分配,管理处理任务的执行,运算平台层,负责物理计算设备的标识。编译完成的可执行程序,通过API调用加载到运行层,运行时运行层根据处理器的数据文件,与编译层交互,实时编译源代码生成新的可执行程序。运行层把符合条件的可执行程序通过运算平台层分配到计算资源。
图2是多处理器并行执行多线程共享流内存示意图,这时应用程序通过API调用已经将可执行程序从主处理器加载到计算处理器。可执行程序在一个处理单元中并行执行多个线程,从图中可见,计算处理器_1中有1到M个线程,计算处理器_L中有1到N个线程,一个计算处理中每个线程通过其私有内存访问其局部变量的值,一个计算处理中的多个线程通过局部共享内存访问变量的值,多个处理中的线程基于流内存的存储单元访问流变量的值。例如,计算处理器1中的私有内存1存储线程1要处理的局部变量的值;局部共享内存中存储线程1和M需要处理的变量值;而计算处理器_1线程M和计算处理器_L线程N,则通过流缓存访问流变量的值。局部共享内存也是基于流内存的存储单元的。
图3是调度API完成内存分配的过程示意图,应用程序首先通过API调度,完成源代码的编译,编译生成一个或多个可执行程序;然后再调用API加载可执行程序到处理单元,加载时完成对可执行程序中局部变量的内存分配,这个内存分配是基于处理器的局部存储能力的,同时完成第一个流内存的分配,用于一个处理器中多个线程同时访问变量;最后第三次调用API,在流内存中为流变量分配第二个流存储单元,从而使多个处理器单元,访问流变量。
Claims (4)
1.一种异构多处理器中共享流内存的方法,包括主处理器和计算处理器,其特征在于,运行在主处理器中的应用程序,基于主处理器调用API,把可执行程序从主处理器中加载到计算处理器,并为计算处理器配置存储能力,为计算处理器中的线程访问某个变量分配内存,计算处理器是GPU或者CPU;
步骤如下:应用程序运行在主处理器中第一次调用API,为配有流内存的多个处理器单元从包含局部变量的源代码编译一个或多个可执行程序;然后第二次调用API,去加载一个或多个可执行程序到多个处理器单元中,并行执行多个线程,加载时,从一个处理器的局部存储中分配局部存储单元;并且加载时,从流内存中分配第一个流存储单元,当一个处理单元中同时执行多个线程,这些线程基于流内存的存储单元访问变量的值,对于包含流变量的源程序进一步包括:第三次调用API,在流内存中,为流变量分配第二个流存储单元;基于第二个流存储单元,从多个处理器单元访问流变量的变量值。
2、根据权利要求1所述的方法,其特征在于,存储单元是处理单元上配有的局部存储器,或是流内存,流存储单元是由运行在主处理器单元上的应用分配的,流内存的存储能力不包括局部存储器的支持,在流缓存中为变量分配缓存单元,缓存单元中保存流存储单元中变量的值。
3、根据权利要求1所述的方法,其特征在于,异构多处理器包括主处理器、一个或多个处理器单元、API库;其中主处理器和处理器单元配有共享流内存;API库中包含源代码和可执行程序;一个或多个处理单元中至少有一个处理单元有局部存储器,可执行程序中局部变量的内存的分配是基于这个局部存储器的存储能力。
4、根据权利要求1所述的方法,其特征在于,一个处理器单元至少包含一个CPU或一个GPU。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2009100149388A CN101551761A (zh) | 2009-04-30 | 2009-04-30 | 一种异构多处理器中共享流内存的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2009100149388A CN101551761A (zh) | 2009-04-30 | 2009-04-30 | 一种异构多处理器中共享流内存的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101551761A true CN101551761A (zh) | 2009-10-07 |
Family
ID=41156010
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2009100149388A Pending CN101551761A (zh) | 2009-04-30 | 2009-04-30 | 一种异构多处理器中共享流内存的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101551761A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314670A (zh) * | 2010-06-29 | 2012-01-11 | 技嘉科技股份有限公司 | 处理模块、操作***及处理方法 |
CN102323917A (zh) * | 2011-09-06 | 2012-01-18 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
CN102870096A (zh) * | 2010-05-20 | 2013-01-09 | 苹果公司 | 子缓冲器对象 |
CN102902654A (zh) * | 2012-09-03 | 2013-01-30 | 东软集团股份有限公司 | 异构平台间数据联动方法及装置 |
CN103412823A (zh) * | 2013-08-07 | 2013-11-27 | 格科微电子(上海)有限公司 | 基于超宽总线的芯片架构及其数据访问方法 |
CN103559078A (zh) * | 2013-11-08 | 2014-02-05 | 华为技术有限公司 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
CN104836970A (zh) * | 2015-03-27 | 2015-08-12 | 北京联合大学 | 基于gpu实时视频处理的多投影融合方法和*** |
CN105427236A (zh) * | 2015-12-18 | 2016-03-23 | 魅族科技(中国)有限公司 | 一种图像渲染方法及装置 |
CN105900065A (zh) * | 2014-01-13 | 2016-08-24 | 华为技术有限公司 | 模式处理方法 |
CN107180010A (zh) * | 2016-03-09 | 2017-09-19 | 联发科技股份有限公司 | 异构计算***和方法 |
CN109471673A (zh) * | 2017-09-07 | 2019-03-15 | 智微科技股份有限公司 | 用来于电子装置中进行硬件资源管理的方法及电子装置 |
CN109921895A (zh) * | 2019-02-26 | 2019-06-21 | 成都国科微电子有限公司 | 一种数据Hash值的计算方法及*** |
CN110704362A (zh) * | 2019-09-12 | 2020-01-17 | 无锡江南计算技术研究所 | 一种处理器阵列局部存储混合管理技术 |
CN110990151A (zh) * | 2019-11-24 | 2020-04-10 | 浪潮电子信息产业股份有限公司 | 一种基于异构计算平台的业务处理方法 |
WO2020134833A1 (zh) * | 2018-12-29 | 2020-07-02 | 深圳云天励飞技术有限公司 | 一种数据共享方法、装置、设备及*** |
CN111625330A (zh) * | 2020-05-18 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 跨线程的任务处理方法、装置、服务器及存储介质 |
-
2009
- 2009-04-30 CN CNA2009100149388A patent/CN101551761A/zh active Pending
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102870096A (zh) * | 2010-05-20 | 2013-01-09 | 苹果公司 | 子缓冲器对象 |
US9691346B2 (en) | 2010-05-20 | 2017-06-27 | Apple Inc. | Subbuffer objects |
CN102870096B (zh) * | 2010-05-20 | 2016-01-13 | 苹果公司 | 子缓冲器对象 |
CN102314670B (zh) * | 2010-06-29 | 2016-04-27 | 技嘉科技股份有限公司 | 具有绘图处理器的处理模块、操作***及处理方法 |
CN102314670A (zh) * | 2010-06-29 | 2012-01-11 | 技嘉科技股份有限公司 | 处理模块、操作***及处理方法 |
CN102323917A (zh) * | 2011-09-06 | 2012-01-18 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
CN102323917B (zh) * | 2011-09-06 | 2013-05-15 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
CN102902654A (zh) * | 2012-09-03 | 2013-01-30 | 东软集团股份有限公司 | 异构平台间数据联动方法及装置 |
US9250986B2 (en) | 2012-09-03 | 2016-02-02 | Neusoft Corporation | Method and apparatus for data linkage between heterogeneous platforms |
CN103412823A (zh) * | 2013-08-07 | 2013-11-27 | 格科微电子(上海)有限公司 | 基于超宽总线的芯片架构及其数据访问方法 |
WO2015018237A1 (zh) * | 2013-08-07 | 2015-02-12 | 格科微电子(上海)有限公司 | 基于超宽总线的芯片架构及其数据访问方法 |
CN103412823B (zh) * | 2013-08-07 | 2017-03-01 | 格科微电子(上海)有限公司 | 基于超宽总线的芯片架构及其数据访问方法 |
CN103559078A (zh) * | 2013-11-08 | 2014-02-05 | 华为技术有限公司 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
CN103559078B (zh) * | 2013-11-08 | 2017-04-26 | 华为技术有限公司 | Gpu虚拟化实现方法以及顶点数据缓存方法和相关装置 |
CN105900065A (zh) * | 2014-01-13 | 2016-08-24 | 华为技术有限公司 | 模式处理方法 |
CN104836970A (zh) * | 2015-03-27 | 2015-08-12 | 北京联合大学 | 基于gpu实时视频处理的多投影融合方法和*** |
CN104836970B (zh) * | 2015-03-27 | 2018-06-15 | 北京联合大学 | 基于gpu实时视频处理的多投影融合方法和*** |
CN105427236A (zh) * | 2015-12-18 | 2016-03-23 | 魅族科技(中国)有限公司 | 一种图像渲染方法及装置 |
CN107180010A (zh) * | 2016-03-09 | 2017-09-19 | 联发科技股份有限公司 | 异构计算***和方法 |
CN109471673A (zh) * | 2017-09-07 | 2019-03-15 | 智微科技股份有限公司 | 用来于电子装置中进行硬件资源管理的方法及电子装置 |
CN109471673B (zh) * | 2017-09-07 | 2022-02-01 | 智微科技股份有限公司 | 用来于电子装置中进行硬件资源管理的方法及电子装置 |
WO2020134833A1 (zh) * | 2018-12-29 | 2020-07-02 | 深圳云天励飞技术有限公司 | 一种数据共享方法、装置、设备及*** |
CN109921895A (zh) * | 2019-02-26 | 2019-06-21 | 成都国科微电子有限公司 | 一种数据Hash值的计算方法及*** |
CN110704362A (zh) * | 2019-09-12 | 2020-01-17 | 无锡江南计算技术研究所 | 一种处理器阵列局部存储混合管理技术 |
CN110704362B (zh) * | 2019-09-12 | 2021-03-12 | 无锡江南计算技术研究所 | 一种处理器阵列局部存储混合管理方法 |
CN110990151A (zh) * | 2019-11-24 | 2020-04-10 | 浪潮电子信息产业股份有限公司 | 一种基于异构计算平台的业务处理方法 |
CN111625330A (zh) * | 2020-05-18 | 2020-09-04 | 北京达佳互联信息技术有限公司 | 跨线程的任务处理方法、装置、服务器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101551761A (zh) | 一种异构多处理器中共享流内存的方法 | |
US11847508B2 (en) | Convergence among concurrently executing threads | |
US8707314B2 (en) | Scheduling compute kernel workgroups to heterogeneous processors based on historical processor execution times and utilizations | |
TWI525540B (zh) | 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯 | |
JP5859639B2 (ja) | 異種コア用の自動負荷バランシング | |
KR102253426B1 (ko) | Gpu 다이버전스 배리어 | |
US9477526B2 (en) | Cache utilization and eviction based on allocated priority tokens | |
US9135077B2 (en) | GPU compute optimization via wavefront reforming | |
KR101477882B1 (ko) | 서브버퍼 오브젝트 | |
Tang et al. | Controlled kernel launch for dynamic parallelism in GPUs | |
US20140149710A1 (en) | Creating simd efficient code by transferring register state through common memory | |
US9626216B2 (en) | Graphics processing unit sharing between many applications | |
Aoki et al. | Hybrid opencl: Enhancing opencl for distributed processing | |
US20170053374A1 (en) | REGISTER SPILL MANAGEMENT FOR GENERAL PURPOSE REGISTERS (GPRs) | |
CN103176848A (zh) | 计算工作分布参考计数器 | |
US11934867B2 (en) | Techniques for divergent thread group execution scheduling | |
JP2021034020A (ja) | ワークロードのスタティックマッピングの順不同にパイプライン化された実行を可能にする方法及び装置 | |
CN101599009A (zh) | 一种异构多处理器上并行执行任务的方法 | |
Dastgeer et al. | Flexible runtime support for efficient skeleton programming on heterogeneous GPU-based systems | |
KR20140001970A (ko) | 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고 | |
US10289418B2 (en) | Cooperative thread array granularity context switch during trap handling | |
KR20140004654A (ko) | 처리 디바이스의 동기 동작을 위한 방법 및 시스템 | |
KR101755154B1 (ko) | 이종 연산 처리 장치에 대한 동적 작업 할당 방법 및 장치 | |
US12020076B2 (en) | Techniques for balancing workloads when parallelizing multiply-accumulate computations | |
CN113886057B (zh) | 异构众核上基于剖析技术以及数据流信息的动态资源调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20091007 |