[发明专利]一种对GTC软件SHIFT模块串行代码并行化的方法有效
申请号: | 201410175864.7 | 申请日: | 2014-04-29 |
公开(公告)号: | CN103902362B | 公开(公告)日: | 2018-05-18 |
发明(设计)人: | 吴韶华;张广勇;沈铂;张清 | 申请(专利权)人: | 浪潮电子信息产业股份有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46;G06F9/44 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 姜明 |
地址: | 250014 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种对GTC软件SHIFT模块串行代码并行化的方法,通过排它性扫描有效的实现了SHIFT模块原有串行代码的并行化,即利用排它性扫描对每个线程的数据在整体数据中的位置进行标定,各个线程依据标定的位置,直接进行后续的计算,避免了原串行代码中将散布在内存中不同位置的数据聚合到一个连续的内存空间的过程,并实现了填充空洞过程的并行化,显著的缩短了GTC程序运行时间,有效的改进了GTC程序的性能。 | ||
搜索关键词: | 一种 gtc 软件 shift 模块 串行 代码 并行 方法 | ||
【主权项】:
1.一种对GTC软件SHIFT模块串行代码并行化的方法,SHIFT模块中串行代码主要来自两个计算部分:a为粒子的挑选过程;b为填充空洞的过程;其中a部分中仅有部分串行代码,而b部分中完全是串行代码,其特征在于,通过该方法对SHIFT模块中a、b两部分的串行代码进行并行化,其内容主要包括:利用排它性扫描对每个线程的数据在整体数据中的位置进行标定,各个线程依据标定的位置,直接进行后续的计算,避免了原串行代码中将散布在内存中不同位置的数据聚合到一个连续的内存空间的过程,同时将填充空洞过程并行化;对SHIFT模块中a部分的串行代码并行化过程主要包括:1)均衡的对全部的粒子数据进行划分,每个线程仅处理本线程分到的任务;2)采用leftflag与rightflag两个数组来标识本线程内需要发送的粒子,若粒子需要向左侧发送,则leftflag=1;若粒子需要向右侧发送,rightflag=1;3)采用leftcount与rightcount两个数组来标识本线程内需要向左侧及右侧发送的粒子总数;4)对leftcount与rightcount采用排它性扫描,并将扫描的结果分别放置在leftoffset与rightoffset中;对向左侧发送扫描leftcount结束后,得到的leftoffset中存放了每一个线程的数据在全部线程拥有的数据中的位移;5)基于leftflag与rightflag两个数组将需要发送的粒子数据拷贝到发送缓冲区中;对SHIFT模块中b部分的串行代码并行化过程主要包括:1)在各线程中将数据均匀的划分;2)将各线程中需要发送的数据的索引存入fillerpos数组中;3)将fillerpos数组中各线程的数据按照线程的先后次序重新进行排列;基于a部分排它性扫描的结果leftoffset与rightoffset,得到需要填充的空洞的索引,并将位于总粒子序列末尾的数据填入该位置。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮电子信息产业股份有限公司,未经浪潮电子信息产业股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201410175864.7/,转载请声明来源钻瓜专利网。