[发明专利]一种大整数乘法Karatsuba算法的并行实现方法有效

专利信息
申请号: 201510996000.6 申请日: 2015-12-25
公开(公告)号: CN105653239B 公开(公告)日: 2018-06-22
发明(设计)人: 蒋丽娟;杜胜;杨超;许永超;刘芳芳;钟伟;赵玉文;申超 申请(专利权)人: 中国科学院软件研究所
主分类号: G06F7/53 分类号: G06F7/53
代理公司: 北京科迪生专利代理有限责任公司 11251 代理人: 成金玉;孟卜娟
地址: 100190 *** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明公开了一种大整数乘法Karatsuba算法的并行实现方法,基于64位无符号长整型整数操作,通过巧妙的公式转换技巧,指针运算以及存储方式,以解决部分积存储与计算的相关性问题,通过OpenMP多线程编程,采用section任务分担策略将算法进行并行化,从而开启8个线程在递归程序的第一层并行求取8个部分积,每个section负责一个部分积的计算任务,待部分积均求取完毕后进行串行归并,从而并行化Karatsuba算法,提高算法效率。
搜索关键词: 算法 大整数乘法 并行实现 并行化 存储方式 公式转换 任务分担 算法效率 指针运算 第一层 多线程 递归 归并 线程 整型 编程 并行 存储
【主权项】:
1.一种大整数乘法Karatsuba算法的并行实现方法,其特征在于包括如下步骤:(1)申请长度为N的64位无符号长整型临时数组tmp[N],数组长度N=3*w+s+2,其中w为乘数与被乘数的位数,其不一定被3整除,且s=w‑2*(w/3);(2)根据公式(9)r=u2*v2*R4n+[u1*v2+u2*v1]*R3n+[u1*v1+u0*v2+u2*v0]*R2n+[(u1+u0)*(v1+v0)‑u1*v1‑u0*v0]Rn+u0*v0  (9)其中,u0、u1、u2分别为乘数u的低n位,中n位,高s位,v0、v1、v2分别为被乘数v的低n位,中n位,高s位,n为位数,R为基;在递归算法第一层,计算部分积u0*v0、u1*v1、u2*v2、(u1+u0)*(v1+v0)、u0*v2、u2*v0、u1*v2以及u2*v1,且在求此8个部分积时,仍然调用原始串行递归Karatsuba算法,u0*v0、u1*v1、u2*v2的计算结果分别存储在rp指向数组的低2*n,中2*n位,以及高2*s位,(u1+u0)*(v1+v0)、u0*v2、u2*v0、u1*v2以及u2*v1的计算结果由低到高连续存储在步骤(1)申请的临时数组tmp中,且其相对于临时数组tmp起始地址的偏移分别为0,2*n+2,2*n+2+n+s,2*n+2+2*n+2*s,2*n+2+3*n+3*s,其中rp为最终存储乘数与被乘数乘积结果的数组指针,n=w/3;在递归算法第一层计算8个部分积u0*v0、u1*v1、u2*v2、(u1+u0)*(v1+v0)、u0*v2、u2*v0、u1*v2以及u2*v1时,采用OpenMP并行编程section并行策略进行并行化,开启8个计算线程并行计算这8个部分积,每个线程执行一个部分积的计算过程;(3)由步骤(2)所述得到的8个部分积分别存储在数组rp以及临时数组tmp中,根据公式(9)将存储在数组rp以及临时数组tmp中的部分积进行大整数加减归并运算,并将最终结果存储在数组rp中。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201510996000.6/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top