[发明专利]一种大整数乘法Comba算法基于OpenMP的并行实现方法有效
申请号: | 201510220528.4 | 申请日: | 2015-05-04 |
公开(公告)号: | CN104793922B | 公开(公告)日: | 2017-08-25 |
发明(设计)人: | 蒋丽娟;杨超;刘芳芳;赵玉文;解庆春 | 申请(专利权)人: | 中国科学院软件研究所 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/50 |
代理公司: | 北京科迪生专利代理有限责任公司11251 | 代理人: | 成金玉,孟卜娟 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种大整数乘法Comba算法基于OpenMP的并行实现方法,基于64位无符号长整型整数操作,通过添加三个临时数组存储加乘操作计算得到的中间结果,从而解决加乘运算与进位运算的数据相关性,将加乘操作与进位操作分开执行。在加乘操作阶段,基于中间结果每个数位求取时的计算独立性,通过OpenMP多线程编程采用动态调度策略实现加乘操作阶段的并行化,而进位阶段仍然串行执行来并行化Comba算法,提高算法效率。 | ||
搜索关键词: | 一种 整数 乘法 comba 算法 基于 openmp 并行 实现 方法 | ||
【主权项】:
一种大整数乘法Comba算法基于OpenMP的并行实现方法,其特征在于包括如下步骤:(1)申请三个长度为rn的64位无符号长整型数组,分别由指针lpl,hpl,cl指向,即数组lpl[rn],cl[rn]以及hpl[rn],其中rn=un+vn,un和vn可能不等,un和vn分别为乘数和被乘数的位数;(2)循环计算乘积的中间结果,缓存在步骤(1)申请的三个数组中,其中中间结果的每一位根据公式计算,lpl[ir],cl[ir]和hpl[ir]分别存储中间结果第ir位的低64位,中间64位以及高64位,其中upiu和vpiv分别表示乘数u的第iu位和被乘数v第iv位;(3)获取程序运行系统目前可用线程数;(4)由步骤(2)所述的循环计算过程采用OpenMP的for任务分担策略进行并行化,将中间结果的数位计算任务采用动态调度策略分配给可用线程数个计算线程并行计算,并将线程计算所得中间结果对应存储在步骤(1)所申请的数组lpl[rn],cl[rn]以及hpl[rn]中;(5)对步骤(4)所得lpl[rn],cl[rn]以及hpl[rn]三个数组中存储的中间结果通过串行进位将最终结果存入rp[rn]数组中,其中rp[rn]为存储最终乘积的数组;所述步骤(2)中依据如下方式循环计算:(rax,rdx)=upiu*vpiv,(lpl[ir],c1)=rax+lpl[ir],(cl[ir],c2)=cl[ir]+hpl[ir]+c1,hpl[ir]=hpl[ir]+c2,更新iu和iv的值,此循环体采用内嵌汇编的方式实现,rax和rdx分别存储upiu*vpiv的低64位和高64位,c1和c2表示进位。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510220528.4/,转载请声明来源钻瓜专利网。
- 上一篇:一种电力系统用强电短行程开关
- 下一篇:旋转开关