发明名称 面向异构计算系统的跨步数据传输优化方法
摘要 本发明公开了一种面向异构计算系统的跨步数据传输优化方法,目的是解决跨步数据结构传输严重影响异构计算系统效率的问题。技术方案是先创建内存缓冲区1<sup>st</sup>,将整个画布map数据读入内存缓冲区1<sup>st</sup>,依据跨步数据大小创建内存缓冲区2<sup>nd</sup>,将跨步数据内各连续分量依次拷贝至2<sup>nd</sup>内重组为一片连续存储的数据区域;将2<sup>nd</sup>中连续存储的跨步数据以数据报文的形式传输至加速器端内存;最后释放内存缓冲区2<sup>nd</sup>和内存缓冲区1<sup>st</sup>。采用本发明可以提高异构系统数据传输带宽并提升异构计算系统效率。
申请公布号 CN104317754A 申请公布日期 2015.01.28
申请号 CN201410544688.X 申请日期 2014.10.15
申请人 中国人民解放军国防科学技术大学 发明人 甘新标;刘杰;迟利华;晏益慧;徐涵;胡庆丰;蒋杰;李胜国;苏博;周怀哲;王庆林;皇甫永硕;崔显涛;周陈
分类号 G06F13/38(2006.01)I;G06F12/08(2006.01)I 主分类号 G06F13/38(2006.01)I
代理机构 国防科技大学专利服务中心 43202 代理人 郭敏
主权项 一种面向异构计算系统的跨步数据传输优化方法,其特征在于包括以下步骤:第一步、依据待缓存数据大小创建内存缓冲区1<sup>st</sup>;第二步、利用数据读写函数将整个画布map数据读入内存缓冲区1<sup>st</sup>;第三步、依据跨步数据大小创建内存缓冲区2<sup>nd</sup>,将跨步数据内各连续分量依次拷贝至内存缓冲区2<sup>nd</sup>内重组为一片连续存储的数据区域,具体方法如下:3.1创建内存缓冲区2<sup>nd</sup>;3.2将跨步数据内各连续分量依次拷贝至2<sup>nd</sup>内重组为一片连续存储的数据区域,具体步骤如下:3.2.1获取内存缓冲区2<sup>nd</sup>的首地址H<sub>2</sub>,即,内存缓冲区创建函数的返回值;3.2.2获取跨步数据的首地址head和尾地址tail,方法如下:3.2.2.1定义map的首地址Hm;3.2.2.2定义跨步数据第一个元素与跨步数据画布首地址的偏移为offse‑t;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获取分量首地址与跨步数据画布首地址的偏移为offset<sub>cur</sub>;3.2.2.5.2获取下一分量首地址与跨步数据画布首地址的偏移为offset<sub>next</sub>;3.2.2.5.3strided=offset<sub>next</sub>‑offset<sub>cur</sub>;3.2.2.5.4获取当前分量内的基本数据类型<img file="FDA0000586888270000011.GIF" wi="661" he="90" />表示第i<sub>0</sub>种基本数据类型;3.2.6统计当前分量内基本数据类型的元素数目<img file="FDA0000586888270000012.GIF" wi="481" he="85" />其中<img file="FDA0000586888270000013.GIF" wi="74" he="69" />为跨步数据内基本数据类型<img file="FDA0000586888270000021.GIF" wi="99" he="77" />的数目,1≤i<sub>0</sub>≤r,r∈N;3.2.7计算当前分量的存储长度<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>len</mi><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><msub><mi>i</mi><mn>0</mn></msub><mo>=</mo><mn>0</mn></mrow><mi>r</mi></munderover><msub><mi>ss</mi><msub><mi>i</mi><mn>0</mn></msub></msub><mo>&times;</mo><mi>sizeof</mi><mrow><mo>(</mo><msub><mi>T</mi><mrow><mi>s</mi><msub><mi>s</mi><msub><mi>i</mi><mn>0</mn></msub></msub></mrow></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math><img file="FDA0000586888270000022.GIF" wi="576" he="143" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>sizeof</mi><mrow><mo>(</mo><msub><mi>Tss</mi><msub><mi>i</mi><mn>0</mn></msub></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000586888270000023.GIF" wi="279" he="100" /></maths>表示基本数据类型<img file="FDA0000586888270000024.GIF" wi="97" he="77" />的存储长度,单位为字节;3.2.8利用内存拷贝函数将缓冲区1<sup>st</sup>内首地址为cur,长度为len个字节的数据区域缓存至缓冲区2<sup>nd</sup>中以地址H<sub>2</sub>开始的一片连续区域;3.2.9H<sub>2</sub>=H<sub>2</sub>+len;3.2.10当前分量指针移动到下一分量,即,cur=cur+strided;3.2.11如果(cur+len)≤tail,转3.2.5,否则,转第四步;第四步、将缓冲区2<sup>nd</sup>中连续存储的跨步数据以数据报文的形式经外围器件扩展接口通道即PCIE通道传输至加速器端内存,方法是:利用异构系统中提供的数据传输函数将首地址为H<sub>2</sub>,长度为size<sub>2</sub>个字节的数据区域一次性传输至加速器段存储空间;第五步、利用内存释放函数释放内存缓冲区2<sup>nd</sup>和内存缓冲区1<sup>st</sup>;第六步、结束。
地址 410073 湖南省长沙市开福区德雅路109号