CN104317754B - 面向异构计算***的跨步数据传输优化方法 - Google Patents
面向异构计算***的跨步数据传输优化方法 Download PDFInfo
- Publication number
- CN104317754B CN104317754B CN201410544688.XA CN201410544688A CN104317754B CN 104317754 B CN104317754 B CN 104317754B CN 201410544688 A CN201410544688 A CN 201410544688A CN 104317754 B CN104317754 B CN 104317754B
- Authority
- CN
- China
- Prior art keywords
- data
- strides
- address
- core buffer
- stride
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种面向异构计算***的跨步数据传输优化方法,目的是解决跨步数据结构传输严重影响异构计算***效率的问题。技术方案是先创建内存缓冲区1st,将整个画布map数据读入内存缓冲区1st,依据跨步数据大小创建内存缓冲区2nd,将跨步数据内各连续分量依次拷贝至2nd内重组为一片连续存储的数据区域;将2nd中连续存储的跨步数据以数据报文的形式传输至加速器端内存;最后释放内存缓冲区2nd和内存缓冲区1st。采用本发明可以提高异构***数据传输带宽并提升异构计算***效率。
Description
技术领域
本发明涉及跨步数据传输优化方法,尤指面向异构计算***的跨步数据传输优化方法。
背景技术
异构计算***是由主处理器和加速器两种不同体系结构处理器搭建的计算机***。目前,主流的异构计算***有CPU+GPU(Graphics Processing Units)和CPU+MIC(ManyIntegrated Core)组成异构计算***。
通常,异构计算***中主处理器与加速器之间通过PCIE通道以数据报文的形式完成数据传输和通信,加速器内部的全局通信必须在加速器全局存储空间中进行,部分局部通信借助加速器内的共享存储空间完成,基本通信模式如图1所示。
随着异构计算***计算能力的不断攀升,相对滞后的数据通信能力逐渐成为异构计算***性能进一步提升的瓶颈。如何避免主处理器和加速器之间频繁的数据通信、提高PCIE数据传输效率是异构计算***高效协同及性能优化的关键。
跨步数据(Strided data)是一种特殊的向量数据结构,跨步数据本身属于非连续的数据结构,但是其内部各分量(一段连续存储的数据片段)却是连续的,如选取数组A[128][128]的第1列、第3列、…、和第127列所组成的数据结构Strided A[128][1:3:…(2n″+1):…127]{n″∈N,0≤n″≤63}就是一种典型跨步数据类型,如图2所示。
目前,异构计算***中主处理器与加速器之间的数据传输优化方法主要有以下几种:
(1)零拷贝。该方法指加速器端独立完成待处理数据集的生成和存储,避免数据在主处理器和加速器之间的来回传输。但是,该方法对加速器端的存储层次和存储空间容量要求高,并且加速器端支持的数据结构类型有限。因此,零拷贝方法虽然能够最小化主处理器与加速器之间的数据传输,但是适用范围受限。
(2)数据传输与数据计算重叠。该方法的核心思想为将主处理器与加速器之间的数据传输延迟隐藏于数据计算之中,可以显著提升异构计算***的效率。该方法通常要求数据计算时间远大于数据传输时间,只有这样才能将数据传输时间很好的重叠与数据计算之中,才能提升异构计算***效率。但是,该方法对数据传输操作并无优化,对于数据传输时间接近甚至超过数据计算时间的情形,该方法很难将数据传输重叠于数据计算之中。
上述两类异构计算***中主处理器与加速器之间的数据传输优化方法在一定程度上,面向具体的大规模应用加速都可以提高异构计算的执行效率。但是,上述两类优化方法以通用数据结构传输为出发点,忽略了跨步数据数据结构的特殊性和实用性,跨步数据已经广泛应用于图像渲染和大规模存储***中,对跨步数据的操作会严重影响***的传输访问性能。
异构***中主处理器与加速器之间的数据传输必须以数据报文的形式一次只能传输一段连续存储的数据,整体非连续的跨步数据传输必须以报文碎片的形式启动多个数据报文完成传输,因此,跨步数据传输将严重影响异构计算***的传输访问性能,面向异构计算***的跨步数据传输优化是提高异构***数据传输效率的有效途径。
如何从跨步数据结构的具体特征出发,解决因为跨步数据传输导致的数据传输效率低的难题是本领域技术人员关注的重要技术问题。
发明内容
本发明要解决的技术问题在于:针对跨步数据结构传输严重影响异构计算***效率的问题,提出一种面向异构计算***的跨步数据传输优化方法,以提高异构***数据传输带宽和提升异构计算***效率。
为了解决上述技术问题,本发明的具体技术方案为:
第一步、依据待缓存数据大小创建内存缓冲区1st,具体步骤如下:
1.1 定义跨步数据画布map,即包围跨步数据的最小数据结构体,如数组A[128][128]就是Strided A[128][1:3:…(2n″+1):…127]的画布,n″为自然数,0≤n″≤63;
1.2 获取map内的基本数据类型Tm0,Tm1,…,Tmi,…,Tmn表示Tmi第i种基本数据类型(基本数据类型指整型、单精度浮点或双精度型、字符型和布尔型中的任何一种数据类型)。
1.3 统计map内对应的基本数据类型的元素数目m0,m1,…,mi,…,mn,其中mi为map内基本数据类型Tmi的数目,0≤i≤n,n为自然数;
1.4 定义缓冲区1st的大小为size1;
1.5 sizeof(Tmi)表示基本数据类型Tmi的存储长度,单位为字节;
1.6 调用内存分配函数(如Malloc)创建大小为size1的内存缓冲区1st;
第二步、利用数据读写函数(如Read)将整个画布map数据读入内存缓冲区1st。
第三步、依据跨步数据大小创建内存缓冲区2nd,将跨步数据内各连续分量依次拷贝至内存缓冲区2nd内重组为一片连续存储的数据区域,具体方法如下:
3.1 创建内存缓冲区2nd,具体步骤如下:
3.1.1 获取map内跨步数据包含的基本数据类型Ts0,Ts1,…,Tsi′,…,Tsp,Tsi″表示第i'种基本数据类型;
3.1.2 统计map内对应的基本数据类型的元素数目s0,s1,…,si',…,sp,其中si'为跨步数据内基本数据类型Tsi'的数目,1≤i'≤p,p∈N;
3.1.3 定义缓冲区2nd的大小为size2;
3.1.4 sizeof(Tsi')表示基本数据类型Tsi'的存储长度,单位为字节;
3.1.5 调用内存分配函数(如Malloc)创建大小为size2的内存缓冲区2nd;
3.2 将跨步数据内各连续分量依次拷贝至2nd内重组为一片连续存储的数据区域,具体步骤如下:
3.2.1 获取内存缓冲区2nd的首地址H2,即,内存缓冲区创建函数的返回值;
3.2.2 获取跨步数据的首地址head和尾地址tail,方法如下:
3.2.2.1 定义map的首地址Hm;
3.2.2.2 定义跨步数据第一个元素与跨步数据画布首地址的偏移为offset-f;head=Hm+offset-f;
3.2.2.3 定义跨步数据最后一个元素与跨步数据画布首地址的偏移为offset-l;
3.2.2.4 tail=Hm+offset-l;
3.2.3 定义跨步数据当前分量的首地址为cur=NULL;
3.2.4 cur=head,当前分量地址指向将跨步数据第一段连续存储的分量首地址;
3.2.5 获取当前分量与下一分量之间的步长strided(即当前分量与下一分量之间的地址偏移量),方法如下:
3.2.2.5.1 获取分量首地址与跨步数据画布首地址的偏移为offsetcur;
3.2.2.5.2 获取下一分量首地址与跨步数据画布首地址的偏移为offsetnext;
3.2.2.5.3 strided=offsetnext-offsetcur;
3.2.2.5.4 获取当前分量内的基本数据类型Tss0,Tss1,…,…,Tssr;表示第i0种基本数据类型;
3.2.6 统计当前分量内基本数据类型的元素数目ss0,ss1,…,…,ssr,其中为跨步数据内基本数据类型的数目,1≤i0≤r,r∈N;
3.2.7 计算当前分量的存储长度 表示基本数据类型的存储长度,单位为字节;
3.2.8 利用内存拷贝函数(如Memcpy)将缓冲区1st内首地址为cur,长度为len个字节的数据区域缓存至缓冲区2nd中以地址H2开始的一片连续区域;
3.2.9 H2=H2+len;
3.2.10 当前分量指针移动到下一分量,即,cur=cur+strided;
3.2.11 如果(cur+len)≤tail,转3.2.5,继续完成跨步数据片段连续化重组,否则,重组完毕,转第四步。
第四步、将缓冲区2nd中连续存储的跨步数据以数据报文的形式经PCIE(Peripheral Component Interface Express,***器件扩展接口)通道传输至加速器端内存,方法是:利用异构***中提供的数据传输函数(如CPU+GPU异构***中提供的cudaMemcpy)将首地址为H2,长度为size2个字节的数据区域一次性传输至加速器段存储空间。
第五步、利用内存释放函数(如free)释放内存缓冲区2nd和内存缓冲区1st。
第六步、结束。
采用本发明可以达到以下技术效果:
1.第三步和第四步将需要多次传输的非连续数据片段通过变换处理一次性传输至目标区域,缓解了异构***数据传输压力,提高了面向异构***的跨步数据传输效率;
2.由于跨步数据传输效率的提高,加快了以跨步数据结构为特征的一类GPU应用程序的运行速度并且提高了异构***的带宽利用率,提升了异构计算***效率。
附图说明
图1为基于PCIE通信模式的异构计算***体系结构。
图2为跨步数据结构示意图。
图3为本发明面向异构计算***的跨步数据传输优化方法总体流程图。
具体实施方式
图1为基于PCIE通信模式的由主处理器CPU和加速器(如DSP、GPU、MIC)组成的异构计算***体系结构示意图,其中,主处理器端拥有内存,加速器端拥有全局存储空间;主处理器和加速器之间只能通过PCIE总线进行通信和数据传输。
图2中数组A[128][128](列优先存储)为跨步数据Strided A[128][1:3:…:127]跨步数据结构画布map,跨步数据Strided A[128][1:3:…127]由数组A的第1列、第3列、第5列、…、第2n″+1、…、第127列组成,其中0≤n″≤63。数组A的第2n″+1列就是跨步数据结构分量,跨步数据结构步长为strided=128*sizeof(A[0][0]);跨步数据中的每一列都是一片连续存储的数据片段,但是整个跨步数据Strided A是不连续的。该示例中每个连续片段仅包含一种相同的数据类型,并且与下一个连续片段的步长也是相同的,实际情况中,每个连续片段可能包含多个不同的数据类型;并且步长也可能不同。
图3为本发明的总体流程图,其具体实施步骤如下:
第一步、创建内存缓冲区1st。
第二步、将整个画布map数据读入内存缓冲区1st。
第三步、依据跨步数据大小创建内存缓冲区2nd,将跨步数据内各连续分量依次拷贝至内存缓冲区2nd内重组为一片连续存储的数据区域;
第四步、将缓冲区2nd中连续存储的跨步数据以数据报文的形式经PCIE(Peripheral Component Interface Express,***器件扩展接口)通道传输至加速器端内存。
第五步、释放内存缓冲区2nd和内存缓冲区1st。
第六步、结束。
Claims (3)
1.一种面向异构计算***的跨步数据传输优化方法,其特征在于包括以下步骤:
第一步、依据待缓存数据大小创建内存缓冲区1st;
第二步、利用数据读写函数将整个画布map数据读入内存缓冲区1st;
第三步、依据跨步数据大小创建内存缓冲区2nd,将跨步数据内各连续分量依次拷贝至内存缓冲区2nd内重组为一片连续存储的数据区域,具体方法如下:
3.1创建内存缓冲区2nd;
3.2将跨步数据内各连续分量依次拷贝至2nd内重组为一片连续存储的数据区域,
具体步骤如下:
3.2.1获取内存缓冲区2nd的首地址H2,即,内存缓冲区创建函数的返回值;
3.2.2获取跨步数据的首地址head和尾地址tail,方法如下:
3.2.2.1定义map的首地址Hm;
3.2.2.2定义跨步数据第一个元素与跨步数据画布首地址的偏移为offset-f;head=Hm+offset-f;
3.2.2.3定义跨步数据最后一个元素与跨步数据画布首地址的偏移为offset-l;
3.2.2.4tail=Hm+offset-l;
3.2.3定义跨步数据当前分量的首地址为cur=NULL;
3.2.4cur=head,当前分量地址指向将跨步数据第一段连续存储的分量首地址;
3.2.5获取当前分量与下一分量之间的步长strided即当前分量与下一分量之间的地址偏移量,方法如下:
3.2.2.5.1获取分量首地址与跨步数据画布首地址的偏移为offsetcur;
3.2.2.5.2获取下一分量首地址与跨步数据画布首地址的偏移为offsetnext;
3.2.2.5.3strided=offsetnext-offsetcur;
3.2.2.5.4获取当前分量内的基本数据类型 表示第i0种基本数据类型;
3.2.6统计当前分量内基本数据类型的元素数目其中为跨步数据内基本数据类型的数目,1≤i0≤r,r∈N;
3.2.7计算当前分量的存储长度 表示基本数据类型的存储长度,单位为字节;
3.2.8利用内存拷贝函数将缓冲区1st内首地址为cur,长度为len个字节的数据区域缓存至缓冲区2nd中以地址H2开始的一片连续区域;
3.2.9H2=H2+len;
3.2.10当前分量指针移动到下一分量,即,cur=cur+strided;
3.2.11如果(cur+len)≤tail,转3.2.5,否则,转第四步;
第四步、将缓冲区2nd中连续存储的跨步数据以数据报文的形式经***器件扩展接口通道即PCIE通道传输至加速器端内存,方法是:利用异构***中提供的数据传输函数将首地址为H2,长度为size2个字节的数据区域一次性传输至加速器段存储空间;
第五步、利用内存释放函数释放内存缓冲区2nd和内存缓冲区1st;
第六步、结束。
2.如权利要求1所述的面向异构计算***的跨步数据传输优化方法,其特征在于内存缓冲区1st创建方法是:
1.1定义跨步数据画布map,即包围跨步数据的最小数据结构体;
1.2获取map内的基本数据类型Tm0,Tm1,…,Tmi,…,Tmn;Tmi表示第i种基本数据类型,基本数据类型指整型、单精度浮点或双精度型、字符型和布尔型中的任何一种数据类型;
1.3统计map内对应的基本数据类型的元素数目m0,m1,…,mi,…,mn,其中mi为map内基本数据类型Tmi的数目,0≤i≤n,n为自然数;
1.4定义缓冲区1st的大小为size1;
1.5sizeof(Tmi)表示基本数据类型Tmi的存储长度,单位为字节;
1.6调用内存分配函数创建大小为size1的内存缓冲区1st。
3.如权利要求1所述的面向异构计算***的跨步数据传输优化方法,其特征在于内存缓冲区2nd创建方法是:
3.1.1获取map内跨步数据包含的基本数据类型Ts0,Ts1,…,Tsi',…,Tsp,Tsi'表示第i'种基本数据类型;
3.1.2统计map内对应的基本数据类型的元素数目s0,s1,…,si',…,sp,其中si'为跨步数据内基本数据类型Tsi'的数目,1≤i'≤p,p∈N;
3.1.3定义缓冲区2nd的大小为size2;
3.1.4sizeof(Tsi')表示基本数据类型Tsi'的存储长度,单位为字节;
3.1.5调用内存分配函数创建大小为size2的内存缓冲区2nd。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410544688.XA CN104317754B (zh) | 2014-10-15 | 2014-10-15 | 面向异构计算***的跨步数据传输优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410544688.XA CN104317754B (zh) | 2014-10-15 | 2014-10-15 | 面向异构计算***的跨步数据传输优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104317754A CN104317754A (zh) | 2015-01-28 |
CN104317754B true CN104317754B (zh) | 2017-03-15 |
Family
ID=52372989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410544688.XA Active CN104317754B (zh) | 2014-10-15 | 2014-10-15 | 面向异构计算***的跨步数据传输优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104317754B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106683035B (zh) * | 2015-11-09 | 2020-03-13 | 龙芯中科技术有限公司 | Gpu加速方法和装置 |
CN105975434B (zh) * | 2016-04-29 | 2018-10-02 | 中国人民解放军国防科学技术大学 | 面向异构***的数据传输优化方法 |
CN107451090B (zh) * | 2016-06-01 | 2020-09-11 | 华为技术有限公司 | 数据处理***和数据处理方法 |
CN110515872B (zh) * | 2018-05-21 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 直接内存存取方法、装置、专用计算芯片及异构计算*** |
CN114461406A (zh) * | 2022-04-13 | 2022-05-10 | 麒麟软件有限公司 | DMA OpenGL优化方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530183A (zh) * | 2013-10-24 | 2014-01-22 | 湖南大学 | 大规模异构计算***中任务计算量具有随机性的调度方法 |
CN103858099A (zh) * | 2011-08-02 | 2014-06-11 | 国际商业机器公司 | 用于在异构计算机上编译和运行高级程序的技术 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8412915B2 (en) * | 2001-11-30 | 2013-04-02 | Altera Corporation | Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements |
US20140240327A1 (en) * | 2013-02-22 | 2014-08-28 | The Trustees Of Princeton University | Fine-grained cpu-gpu synchronization using full/empty bits |
-
2014
- 2014-10-15 CN CN201410544688.XA patent/CN104317754B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103858099A (zh) * | 2011-08-02 | 2014-06-11 | 国际商业机器公司 | 用于在异构计算机上编译和运行高级程序的技术 |
CN103530183A (zh) * | 2013-10-24 | 2014-01-22 | 湖南大学 | 大规模异构计算***中任务计算量具有随机性的调度方法 |
Non-Patent Citations (1)
Title |
---|
Accelerating GOR Algorithm Using CUDA;XinBiao Gan,GongLiu,et al;《Applied Mathematics & Information Sciences》;20130601;第7卷(第2L期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104317754A (zh) | 2015-01-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104317754B (zh) | 面向异构计算***的跨步数据传输优化方法 | |
US20170212757A1 (en) | Simd processing unit with local data share and access to a global data share of a gpu | |
US10067872B2 (en) | Memory speculation for multiple memories | |
CN109219805B (zh) | 一种多核***内存访问方法、相关装置、***及存储介质 | |
KR20170103649A (ko) | 버퍼를 이용하여 텍스처 데이터에 액세스하는 방법 및 장치 | |
CN101526924B (zh) | 一种优化数字信号处理芯片数据访问的方法 | |
KR102636925B1 (ko) | 픽셀 커널들을 페치할 때 메모리 레이턴시를 감소시키기 위한 방법들, 시스템들, 및 장치 | |
CN103645994A (zh) | 一种数据处理方法及设备 | |
US7603544B2 (en) | Dynamic allocation of a buffer across multiple clients in multi-threaded processor without performing a complete flush of data associated with allocation | |
CN105389277A (zh) | Gpdsp中面向科学计算的高性能dma部件 | |
CN102208005A (zh) | 一种2-d卷积器 | |
CN104881248A (zh) | 面向ssd的文件***中自适应直接io加速方法 | |
CN101504632A (zh) | 一种dma数据传输方法、***及一种dma控制器 | |
CN102314400A (zh) | 一种分散聚合式dma方法及装置 | |
CN111783933A (zh) | 一种对深度卷积神经网络计算加速的、结合主存储器的数据载入装置的硬件电路设计及方法 | |
US10275392B2 (en) | Data processing device | |
CN107209663A (zh) | 数据格式转换装置、缓冲芯片及方法 | |
CN114092338B (zh) | 图像缩放快速计算方法 | |
CN101082906A (zh) | 一种低存储器开销的固定基fft处理器及其方法 | |
CN103207843B (zh) | 一种数据行宽度可动态配置的cache结构设计方法 | |
US20100257329A1 (en) | Apparatus and method for loading and storing multi-dimensional arrays of data in a parallel processing unit | |
CN111653317A (zh) | 基因比对加速装置、方法及*** | |
CN108234147A (zh) | Gpdsp中基于主机计数的dma广播数据传输方法 | |
CN202995701U (zh) | 基于预先解码分析的数据信息缓存管理*** | |
US10210136B2 (en) | Parallel computer and FFT operation method |
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 |