【技术实现步骤摘要】
本专利技术涉及针对GMP(The GNU Multiple Precision Arithmetic Library,GNU多重精度运算库)库中加法和减法串行算法的多核并行化实现方法。
技术介绍
为了解决大数运算的问题,世界各国的软件开发人员和研究学者都进行了很多的研究和实践。近年来,越来越多的开发人员开始重视软件工程的作用,为了减少重复劳动,提高软件的质量和代码复用,许多优秀的大数运算库随之出现。GMP大数库是GNU项目的一部分,诞生于1991年。作为一个任意精度的大整数运算库,它包括了任意精度的带符号整数、有理数、浮点数的各种基本运算操作。它是一个c语言的库,但是官方提供了c++的包装类,主要的应用方向是密码学、网络安全、代数系统、计算科学等。GMP库的运行速度非常快的,它的官方网站上称自己为地球上最快的大数库,但是GMP库所提供的只是数学运算功能,并没有密码学相关的高级功能。另外,GMP库目前只实现各种运算的串行算法,对于多核平台并不适用。目前还没有人在多核平台上做相关的并行工作。大整数加法和减法运算的基本思想与手工运算进行两数相加或者相减的过程完全一致,就是从两个数的最低位开始,按位逐位进行相加或者相减操作,运算过程中需考虑进位和借位的问题。再者,整数可以是负数,若二整数符号相同则为加法运算,相异则实为减法运算,若是减法运算还需比较二数的绝对值大小,以确定最终结果的符号及减数与被减数的安排顺序。加法和减法算法中逐 ...
【技术保护点】
一种基于GMP的大整数加法和减法多核并行化实现方法,其特征在于实现步骤如下:(1)获取程序运行系统目前可用线程数;(2)根据步骤(1)中得到的可用线程数分配和初始化用于存储区域进位的临时数组,其元素个数为N;(3)根据步骤(1)中得到的可用线程数将需要进行按位逐位相加操作的任务进行区域划分,区域中的区域任务的个数与临时数组的个数一一对应,大于等于可用线程数;(4)基于OpenMP(共享存储并行编程)多线程编程技术,使用动态调度策略,多线程并行求取各区域的计算任务,率先执行完任务的线程接着从由区域任务形成的任务池中领取一个区域任务,各线程在求取区域任务时需判断当前区域任务是不是最后一个区域任务,如果是最后一个区域任务需要根据具体情况调用串行加法算法,否则可以直接调用串行加法算法计算当前区域任务,然后将最后的进位值保存到步骤(2)临时数组中相应的元素中,将结果存储在结果的相应位置;(5)对步骤(4)中已更新的临时数组中每个区域的进位结果进行统一操作;具体过程:遍历临时数组中除临时数组N‑1的每一个值,如果进位值为零,则继续遍历下一个,如果值为非零,则对步骤(4)得到的结果中从下一个区域结果 ...
【技术特征摘要】
1.一种基于GMP的大整数加法和减法多核并行化实现方法,其特征在于实现步骤
如下:
(1)获取程序运行系统目前可用线程数;
(2)根据步骤(1)中得到的可用线程数分配和初始化用于存储区域进位的临时数
组,其元素个数为N;
(3)根据步骤(1)中得到的可用线程数将需要进行按位逐位相加操作的任务进行
区域划分,区域中的区域任务的个数与临时数组的个数一一对应,大于等于可用线程数;
(4)基于OpenMP(共享存储并行编程)多线程编程技术,使用动态调度策略,多
线程并行求取各区域的计算任务,率先执行完任务的线程接着从由区域任务形成的任务池
中领取一个区域任务,各线程在求取区域任务时需判断当前区域任务是不是最后一个区域
任务,如果是最后一个区域任务需要根据具体情况调用串行加法算法,否则可以直接调用
串行加法算法计算当前区域任务,然后将最后的进位值保存到步骤(2)临时数组中相应
的元素中,将结果存储在结果的相应位置;
(5)对步骤(4)中已更新的临时数组中每个区域的进位结果进行统一操作;具体
过程:遍历临时数组中除临时数组N-1的每一个值,如果进位值为零,则继续遍历下一
个,如果值为非零,则对步骤(4)得到的结果中从下一个区域结果开始到结果的最高位
的整个区域进行加1操作,且当加1过程中新的临时进位不为1时,跳出此次遍历过程;
遍历完除临时数组N-1的每一个值后更新最高位的进位情况。
2.根据权利要求1所述的基于GMP的大整数加法和减法多核并行化实现方法,其
特征在于:所述步骤(2)中临时数组的大小与区域任务的个数相等,但是与线程数并不
一定相等,当与线程数相等时,即一个线程对应一个区域任务,其实现过程与OpenMP
技术中的静态调度方式一样,但区域任务号与线程号不一定按静态调度的方式对应;另外,
临时数组0号元素的值对应第0号任务的进位情况,临时数组1号元素的值对应第1号任
务的进位情况,临时数组2号元素的值对应第2号任务的进位情况,临时数组N-1号元
素的值对应第N-1号任务的进位情况,N为...
【专利技术属性】
技术研发人员:赵玉文,刘芳芳,解庆春,杨超,蒋丽娟,
申请(专利权)人:中国科学院软件研究所,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。