[发明专利]一种应用于解决粒子模拟并行数据竞争的归约方法有效
申请号: | 201710747274.0 | 申请日: | 2017-08-28 |
公开(公告)号: | CN107704266B | 公开(公告)日: | 2021-03-30 |
发明(设计)人: | 金晓林;刘腾宇;李斌;杨中海 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06F9/30 | 分类号: | G06F9/30;G06F9/38;G06F9/52;G06F30/25 |
代理公司: | 电子科技大学专利中心 51203 | 代理人: | 闫树平 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明属于粒子模拟并行技术领域。具体涉及一种应用于解决粒子模拟并行数据竞争的归约方法。本发明通过采用归约的方法实现对粒子模拟中数据竞争部分的并行,每个线程选取固定的三个数据进行处理并固定输出两个数据作为返回值,不会发生不同线程写入数据地址冲突的问题并且不需要对数据做分离预处理,解决了原有归约中因输出数据个数不固定而导致的数据写入冲突的问题,从而可以高效且精确地并行粒子模拟中数据竞争部分,对整个粒子模拟程序的并行度有了极大提升。 | ||
搜索关键词: | 一种 应用于 解决 粒子 模拟 并行 数据 竞争 方法 | ||
【主权项】:
一种应用于解决粒子模拟并行数据竞争的归约方法,其具体步骤如下:步骤1、每个线程计算一个粒子的数据分配,对分配的数据附带网格编号Nn和分配的数据大小j,存储进待排序数组设其为数组1,其中N为网格编号的名称,n为网格编号的值;步骤2、对数组1排序,使得具有数据竞争的数据是彼此相邻的;步骤3、申请与数组1大小相同的辅助归约数组设其为数组2,并且申请大小与网格规模一样的最终结果数组,用来存储最终的网格数据;步骤4、进行归约计算:每个线程取相邻三个数据,然后根据三个数据所属网格的信息分成四种情形,按照不同的方式进行归约计算,具体如下:1)如果相邻三个数据的前两个数据属于同一个网格,则前两个数据求和然后和第三个数据一起写回数组2;2)如果相邻三个数据的后两个数据属于同一个网格,则对后面两个数据求和然后和第一个数据写回数组2;3)如果所取的相邻三个数据所属网格均不相同,则将中间数据写回结果数组,此时网格Ni的数据值就是j,然后将第一个和第三个数据写回数组2;4)当每次归约时的数据集不能被3整除时,末尾线程不足三个数据,末尾线程这时直接将数据写回数组2;步骤5、交换数组1和数组2,重复步骤4,直到最后线程内都没有可以相加的数据,再把剩下的数据写到结果数组里,结果数组就为所求所有网格点的数据值。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710747274.0/,转载请声明来源钻瓜专利网。