CN103455468A - 一种多gpu运算卡及多gpu之间的数据传输方法 - Google Patents
一种多gpu运算卡及多gpu之间的数据传输方法 Download PDFInfo
- Publication number
- CN103455468A CN103455468A CN2012104384478A CN201210438447A CN103455468A CN 103455468 A CN103455468 A CN 103455468A CN 2012104384478 A CN2012104384478 A CN 2012104384478A CN 201210438447 A CN201210438447 A CN 201210438447A CN 103455468 A CN103455468 A CN 103455468A
- Authority
- CN
- China
- Prior art keywords
- gpu
- shared memory
- global shared
- arbitration circuit
- gpus
- 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
Images
Landscapes
- Image Processing (AREA)
Abstract
本发明适用于计算机技术领域,提供了一种多GPU运算卡及多GPU之间的数据传输方法,包括至少两个GPU,每个所述GPU分别与各自的GPU显存连接,还包括:分别连接每个所述GPU的全局共享内存;分别连接每个所述GPU以及所述全局共享内存的仲裁电路;所述全局共享内存被第一所述GPU用于向所述全局共享内存中写入数据,以及被第二所述GPU用于从所述全局共享内存中读取所述数据;所述仲裁电路用于控制在同一时间内只有一个所述GPU向所述全局共享内存读写数据。本发明实施例通过在多GPU之间增加全局共享内存,有效利用了显存的带宽,显著提高了多GPU运算卡的数据处理性能。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种多图形处理器(GraphicProcessing Unit,GPU)运算卡及多GPU之间的数据传输方法。
背景技术
随着科学技术的飞速发展,个人计算机的性能越来越强大,硬件厂商们为了占领更多的市场份额,纷纷在各自的领域积极推进先进技术。其中,显卡厂商们为了追求极致性能和领先地位,推出了集成两个甚至更多个GPU的多GPU图形运算卡。当在具有多GPU图形运算卡的个人超级计算机上应用统一计算设备架构(Compute Unified Device Architecture,CUDA)或开放的图形程序接口(Open Graphics Library,OpenGL)进行程序开发时,人们常常需要在多个GPU之间进行频繁的数据传递。
当前,多个GPU间的数据传递技术通常是基于PCIE总线来完成的,这样的实现极大地影响了GPU的处理性能。以具有两个GPU的运算卡为例:当需要将数据从一个GPU的显存传递到另一个GPU的显存时,首先需要将一个GPU显存中的数据通过PCIE总线传递到主机内存中暂存,再通过PCIE总线将数据从主机内存传递到另一个GPU的显存中。由于PCIE总线的带宽仅有2~3GB每秒,而GPU读出显存的带宽可以达到100GB每秒之多,PCIE总线成为了影响多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之间增加全局共享内存,使得GPU之间的数据传递过程不再受限于PCIE总线来完成,有效利用了显存的带宽,显著提高了多GPU运算卡的数据处理性能。
附图说明
图1是本发明实施例提供的多GPU运算卡的结构框图;
图2是本发明实施例提供的多GPU之间的数据传输方法的实现流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例通过在多GPU之间增加全局共享内存,使得GPU之间的数据传递过程不再受限于PCIE总线来完成,有效利用了显存的带宽,显著提高了多GPU运算卡的数据处理性能。
图1示出了本发明实施例提供的多GPU运算卡的结构框图,为了便于说明,仅示出了与本实施例相关的部分。
参照图1,本发明实施例提供的多GPU运算卡包括至少两个GPU 11,如图1所示,至少包括第一GPU 111和第二GPU 112,且每个GPU 11分别与各自的GPU显存12连接,如图1所示,第一GPU 111和第一GPU显存121连接,第二GPU112和第二GPU显存122连接。
在本实施例的上述结构中,GPU 11是多GPU运算卡中的核心部件,用于实现三维图像和特效的渲染处理。具体地,第一GPU 111读取第一GPU显存121中的数据并对数据进行运算处理,完成运算后将结果写入第二GPU显存122中,以使第二GPU 112读取第二GPU显存122中的数据并对数据进行运算处理,并在处理完成后将结果写回第二GPU显存122中,由此完成一次GPU之间的数据处理与传输。
在本发明实施例中,多GPU运算卡还包括:
分别连接每个GPU 11的全局共享内存13,以及
分别连接每个GPU 11以及全局共享内存13的仲裁电路14,
其中,全局共享内存13被第一GPU 111用于向全局共享内存13中写入数据,以及被第二GPU 112用于从全局共享内存13中读取该数据。
在本发明实施例中,通过在多GPU运算卡中设置分别连接每个GPU 11的全局共享内存13,第一GPU 111与第二GPU 112均可以直接访问全局共享内存13中的数据,由此,在第一GPU 111向第二GPU 112传输数据的过程中,第一GPU 111可以直接向全局共享内存13中写入需要传输的数据,并由第二GPU 112直接从全局共享内存13中读取第一GPU 111写入的数据,从而完成一次GPU之间的数据传输。
在本实施例中,全局共享内存为多通道存储器,其具备多个读写接口,可以分别与每个GPU相连接。
作为本发明的一个实施例,全局共享内存可以为在多GPU运算卡板卡上独立存在的存储单元。
作为本发明的另一实施例,全局共享内存还可以位于多GPU运算卡上的其中一个GPU显存中。在该情况下,GPU显存中设置了全局共享内存的GPU由于显存空间中一部分被用于全局共享内存,因此其在多GPU运算卡中的运算能力相比于其他GPU要相对弱一些,但其对GPU之间的数据读写速度相对快一些。
作为本发明的另一实施例,全局共享内存还可以分布于多GPU运算卡中的一个以上的GPU显存中。为了公平分配每个GPU的运算能力,也可以将全局共享内存分布在多个GPU显存中,在该情况下,每个GPU的运算能力相当,不会因为GPU显存中设置了过大的全局共享内存而影响了数据处理能力。
仲裁电路14用于控制在同一时间内只有一个GPU 11向全局共享内存13读写数据。
在本实施例中,由于GPU的运算能力不如中央处理器(Central ProcessingUnit,CPU)的运算能力强大,因此,通过在多GPU运算卡中设置分别连接每个GPU 11以及全局共享内存13的仲裁电路14,用于保证同时只有一个GPU对全局共享内存进行访问,以避免多GPU的访问冲突。
具体地,每个GPU在开始读写全局共享内存以及结束对全局共享内存的读写时,均需要向仲裁电路发起请求,仲裁电路通过锁定或者解锁全局共享内存,以保证每次只有一个GPU访问全局共享内存,其中,当全局共享内存处于锁定状态下时,只允许仲裁电路指定的一个GPU进行访问。
具体地,仲裁电路包括:
与全局共享内存连接的锁定电路;以及
与全局共享内存连接的解锁电路。
其中,锁定电路用于在有GPU需要从全局共享内存中读写数据时,将全局共享内存锁定在只允许该GPU访问的状态,解锁电路用于当GPU对全局共享内存的访问结束,且没有其他GPU需要访问全局共享内存时,释放全局共享内存的锁定状态。
优选地,仲裁电路可以包括现场可编程门阵列(Field-Programmable GateArray,FPGA)仲裁电路。
图2示出了本发明实施例提供的多GPU之间的数据传输方法的实现流程,本实施例基于的是本发明图1实施例所述的多GPU运算卡,描述的是该多GPU运算卡中GPU之间的数据传输方法,具体的多GPU运算卡的结构描述详见本发明图1所述实施例,在此不再赘述。
图2实现流程详述如下:
1、第一GPU向仲裁电路发送第一请求。
2、仲裁电路根据第一请求控制全局共享内存处于第一锁定状态,以使处于第一锁定状态的全局共享内存只能被第一GPU读写。
3、第一GPU向全局共享内存中写入数据。
4、第一GPU向仲裁电路发送第二请求。
5、仲裁电路根据第二请求取消全局共享内存的第一锁定状态。
6、第二GPU向仲裁电路发送第三请求。
7、仲裁电路根据第三请求控制全局共享内存处于第二锁定状态,以使处于第二锁定状态的全局共享内存只能被第二GPU读写。
8、第二GPU从全局共享内存中读取该数据。
9、第二GPU向仲裁电路发送第四请求。
10、仲裁电路根据第四请求取消全局共享内存的第二锁定状态。
本发明实施例通过在多GPU之间增加全局共享内存,并通过仲裁电路来避免多GPU之间的读写冲突,使得GPU之间的数据传递过程不再受限于PCIE总线来完成,有效利用了显存的带宽,显著提高了多GPU运算卡的数据处理性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种多图形处理器GPU运算卡,包括至少两个GPU,每个所述GPU分别与各自的GPU显存连接,其特征在于,还包括:
分别连接每个所述GPU的全局共享内存;
分别连接每个所述GPU以及所述全局共享内存的仲裁电路;
所述全局共享内存被第一所述GPU用于向所述全局共享内存中写入数据,以及被第二所述GPU用于从所述全局共享内存中读取所述数据;
所述仲裁电路用于控制在同一时间内只有一个所述GPU向所述全局共享内存读写数据。
2.如权利要求1所述的多GPU运算卡,其特征在于,所述全局共享内存位于一个所述GPU显存中。
3.如权利要求1所述的多GPU运算卡,其特征在于,所述全局共享内存分布于一个以上的所述GPU显存中。
4.如权利要求1所述的多GPU运算卡,其特征在于,所述仲裁电路包括:
锁定电路,用于锁定所述全局共享内存,以控制同一时间内只有一个所述GPU向所述全局共享内存读写数据;以及
解锁电路,用于当一个所述GPU向所述全局共享内存读写数据完毕后,解锁所述全局共享内存。
5.如权利要求1所述的多GPU运算卡,其特征在于,所述仲裁电路包括现场可编程门阵列FPGA仲裁电路。
6.一种多图形处理器GPU运算卡中多GPU之间的数据传输方法,其特征在于,所述多GPU运算卡包括至少两个GPU,每个所述GPU分别与各自的GPU显存连接,还包括:
分别连接每个所述GPU的全局共享内存;
分别连接每个所述GPU以及所述全局共享内存的仲裁电路;
所述方法包括:
第一所述GPU向所述仲裁电路发送第一请求;
所述仲裁电路根据所述第一请求控制所述全局共享内存处于第一锁定状态,以使处于所述第一锁定状态的所述全局共享内存只能被第一所述GPU读写;
第一所述GPU向所述全局共享内存中写入数据;
第一所述GPU向所述仲裁电路发送第二请求;
所述仲裁电路根据所述第二请求取消所述全局共享内存的所述第一锁定状态;
第二所述GPU向所述仲裁电路发送第三请求;
所述仲裁电路根据所述第三请求控制所述全局共享内存处于第二锁定状态,以使处于所述第二锁定状态的所述全局共享内存只能被第二所述GPU读写;
第二所述GPU从所述全局共享内存中读取所述数据;
第二所述GPU向所述仲裁电路发送第四请求;
所述仲裁电路根据所述第四请求取消所述全局共享内存的所述第二锁定状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012104384478A CN103455468A (zh) | 2012-11-06 | 2012-11-06 | 一种多gpu运算卡及多gpu之间的数据传输方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012104384478A CN103455468A (zh) | 2012-11-06 | 2012-11-06 | 一种多gpu运算卡及多gpu之间的数据传输方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103455468A true CN103455468A (zh) | 2013-12-18 |
Family
ID=49737855
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012104384478A Pending CN103455468A (zh) | 2012-11-06 | 2012-11-06 | 一种多gpu运算卡及多gpu之间的数据传输方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103455468A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810124A (zh) * | 2012-11-09 | 2014-05-21 | 辉达公司 | 用于数据传输的系统及方法 |
CN107168810A (zh) * | 2017-05-10 | 2017-09-15 | 郑州云海信息技术有限公司 | 一种计算节点内存共享系统及读、写操作内存共享方法 |
CN107656894A (zh) * | 2017-09-25 | 2018-02-02 | 联想(北京)有限公司 | 一种多主机处理系统和方法 |
CN109857566A (zh) * | 2019-01-25 | 2019-06-07 | 天翼爱动漫文化传媒有限公司 | 一种内存读写过程的资源锁定算法 |
CN111737015A (zh) * | 2020-08-10 | 2020-10-02 | 成都索贝数码科技股份有限公司 | 基于多gpu提高大幅面非线性编辑实时层数的方法 |
CN113835887A (zh) * | 2021-09-17 | 2021-12-24 | 北京百度网讯科技有限公司 | 显存的分配方法、装置、电子设备及可读存储介质 |
CN115761090A (zh) * | 2022-11-17 | 2023-03-07 | 北京字跳网络技术有限公司 | 特效渲染方法、装置、设备、计算机可读存储介质及产品 |
CN115775199A (zh) * | 2022-11-23 | 2023-03-10 | 海光信息技术股份有限公司 | 数据处理方法和装置、电子设备和计算机可读存储介质 |
WO2025086991A1 (zh) * | 2023-10-25 | 2025-05-01 | 浪潮(北京)电子信息产业有限公司 | 一种数据处理方法、装置、设备、存储介质及分布式集群 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055555A (zh) * | 2006-04-12 | 2007-10-17 | 联发科技股份有限公司 | 用于多处理器的非易失性内存共享系统及其内存共享方法 |
CN101122892A (zh) * | 2007-08-17 | 2008-02-13 | 中国科学院计算技术研究所 | 一种cpci信号处理板 |
CN101403979A (zh) * | 2008-10-27 | 2009-04-08 | 成都市华为赛门铁克科技有限公司 | 一种自旋锁的加锁方法及计算机系统 |
CN101526934A (zh) * | 2009-04-21 | 2009-09-09 | 浪潮电子信息产业股份有限公司 | 一种gpu与cpu复合处理器的组建方法 |
US20110161540A1 (en) * | 2009-12-22 | 2011-06-30 | International Business Machines Corporation | Hardware supported high performance lock schema |
-
2012
- 2012-11-06 CN CN2012104384478A patent/CN103455468A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101055555A (zh) * | 2006-04-12 | 2007-10-17 | 联发科技股份有限公司 | 用于多处理器的非易失性内存共享系统及其内存共享方法 |
CN101122892A (zh) * | 2007-08-17 | 2008-02-13 | 中国科学院计算技术研究所 | 一种cpci信号处理板 |
CN101403979A (zh) * | 2008-10-27 | 2009-04-08 | 成都市华为赛门铁克科技有限公司 | 一种自旋锁的加锁方法及计算机系统 |
CN101526934A (zh) * | 2009-04-21 | 2009-09-09 | 浪潮电子信息产业股份有限公司 | 一种gpu与cpu复合处理器的组建方法 |
US20110161540A1 (en) * | 2009-12-22 | 2011-06-30 | International Business Machines Corporation | Hardware supported high performance lock schema |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810124A (zh) * | 2012-11-09 | 2014-05-21 | 辉达公司 | 用于数据传输的系统及方法 |
CN107168810A (zh) * | 2017-05-10 | 2017-09-15 | 郑州云海信息技术有限公司 | 一种计算节点内存共享系统及读、写操作内存共享方法 |
CN107656894A (zh) * | 2017-09-25 | 2018-02-02 | 联想(北京)有限公司 | 一种多主机处理系统和方法 |
CN109857566A (zh) * | 2019-01-25 | 2019-06-07 | 天翼爱动漫文化传媒有限公司 | 一种内存读写过程的资源锁定算法 |
CN109857566B (zh) * | 2019-01-25 | 2020-09-29 | 天翼爱动漫文化传媒有限公司 | 一种内存读写过程的资源锁定方法 |
CN111737015A (zh) * | 2020-08-10 | 2020-10-02 | 成都索贝数码科技股份有限公司 | 基于多gpu提高大幅面非线性编辑实时层数的方法 |
CN111737015B (zh) * | 2020-08-10 | 2020-12-25 | 成都索贝数码科技股份有限公司 | 基于多gpu提高大幅面非线性编辑实时层数的方法 |
CN113835887A (zh) * | 2021-09-17 | 2021-12-24 | 北京百度网讯科技有限公司 | 显存的分配方法、装置、电子设备及可读存储介质 |
CN115761090A (zh) * | 2022-11-17 | 2023-03-07 | 北京字跳网络技术有限公司 | 特效渲染方法、装置、设备、计算机可读存储介质及产品 |
CN115775199A (zh) * | 2022-11-23 | 2023-03-10 | 海光信息技术股份有限公司 | 数据处理方法和装置、电子设备和计算机可读存储介质 |
CN115775199B (zh) * | 2022-11-23 | 2024-04-16 | 海光信息技术股份有限公司 | 数据处理方法和装置、电子设备和计算机可读存储介质 |
WO2025086991A1 (zh) * | 2023-10-25 | 2025-05-01 | 浪潮(北京)电子信息产业有限公司 | 一种数据处理方法、装置、设备、存储介质及分布式集群 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103455468A (zh) | 一种多gpu运算卡及多gpu之间的数据传输方法 | |
CN109388595B (zh) | 高带宽存储器系统以及逻辑管芯 | |
US20190212918A1 (en) | Near-memory compute module | |
TWI520071B (zh) | 在中央處理單元與圖形處理單元間分享資源之技術 | |
US8055856B2 (en) | Lock mechanism to enable atomic updates to shared memory | |
US20140129753A1 (en) | Integrated storage/processing devices, systems and methods for performing big data analytics | |
US10509740B2 (en) | Mutual exclusion in a non-coherent memory hierarchy | |
TW201905714A (zh) | 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體 | |
US20130198760A1 (en) | Automatic dependent task launch | |
JP2016523411A (ja) | ハイブリッドメモリデバイス | |
TWI425508B (zh) | 具隱藏更新及雙埠能力之sram相容嵌入式dram裝置 | |
CN103810124A (zh) | 用于数据传输的系统及方法 | |
CN108304334B (zh) | 应用处理器和包括中断控制器的集成电路 | |
US9632953B2 (en) | Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers | |
TW201201018A (en) | Memory banking system and method to increase memory bandwidth via parallel read and write operations | |
JP2011095978A (ja) | バスシステム及びバス制御方法 | |
TW201324184A (zh) | 對多處理器同步化電力最佳化的方法 | |
US9513923B2 (en) | System and method for context migration across CPU threads | |
US20110231587A1 (en) | Masked Register Write Method and Apparatus | |
CN103870412A (zh) | 降低dram访问的访问粒度的地址位重映射方案 | |
US8135869B2 (en) | Task scheduling to devices with same connection address | |
US20220342835A1 (en) | Method and apparatus for disaggregation of computing resources | |
US20130339592A1 (en) | Approach to virtual bank management in dram controllers | |
KR102731614B1 (ko) | 시리얼 통신으로 메모리를 제공하기 위한 장치 및 방법 | |
CN103377161A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20131218 |