CN104699449A - 一种基于gmp的大整数加法和减法多核并行化实现方法 - Google Patents

一种基于gmp的大整数加法和减法多核并行化实现方法 Download PDF

Info

Publication number
CN104699449A
CN104699449A CN201510156109.9A CN201510156109A CN104699449A CN 104699449 A CN104699449 A CN 104699449A CN 201510156109 A CN201510156109 A CN 201510156109A CN 104699449 A CN104699449 A CN 104699449A
Authority
CN
China
Prior art keywords
task
region
carry
value
subtraction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510156109.9A
Other languages
English (en)
Other versions
CN104699449B (zh
Inventor
赵玉文
刘芳芳
解庆春
杨超
蒋丽娟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN201510156109.9A priority Critical patent/CN104699449B/zh
Publication of CN104699449A publication Critical patent/CN104699449A/zh
Application granted granted Critical
Publication of CN104699449B publication Critical patent/CN104699449B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及一种基于GMP的大整数加法和减法多核并行化实现方法,首先借助于临时数组来解决加法或减法操作产生的进位或借位带来的数据相关性问题,然后采用将迭代循环for中的运算进行任务划分,基于OpenMP多线程编程实现,使用动态调度策略,多线程并行求取各区域的计算任务的策略解决负载不均衡问题。本发明能借助多核平台,通过充分利用多核条件提高运行速度,在实际应用中有着十分重要的作用。

Description

一种基于GMP的大整数加法和减法多核并行化实现方法
技术领域
本发明涉及针对GMP(The GNU Multiple Precision Arithmetic Library,GNU多重精度运算库)库中加法和减法串行算法的多核并行化实现方法。
背景技术
为了解决大数运算的问题,世界各国的软件开发人员和研究学者都进行了很多的研究和实践。近年来,越来越多的开发人员开始重视软件工程的作用,为了减少重复劳动,提高软件的质量和代码复用,许多优秀的大数运算库随之出现。GMP大数库是GNU项目的一部分,诞生于1991年。作为一个任意精度的大整数运算库,它包括了任意精度的带符号整数、有理数、浮点数的各种基本运算操作。它是一个c语言的库,但是官方提供了c++的包装类,主要的应用方向是密码学、网络安全、代数系统、计算科学等。GMP库的运行速度非常快的,它的官方网站上称自己为地球上最快的大数库,但是GMP库所提供的只是数学运算功能,并没有密码学相关的高级功能。另外,GMP库目前只实现各种运算的串行算法,对于多核平台并不适用。目前还没有人在多核平台上做相关的并行工作。
大整数加法和减法运算的基本思想与手工运算进行两数相加或者相减的过程完全一致,就是从两个数的最低位开始,按位逐位进行相加或者相减操作,运算过程中需考虑进位和借位的问题。再者,整数可以是负数,若二整数符号相同则为加法运算,相异则实为减法运算,若是减法运算还需比较二数的绝对值大小,以确定最终结果的符号及减数与被减数的安排顺序。加法和减法算法中逐位进行相加或者相减操作使算法本身存在很大的数据相关性的问题。
发明内容
本发明技术解决问题:克服现有技术的不足,提供一种基于GMP的大整数加法和减法多核并行化实现方法,借助多核平台,通过充分利用多核条件提高运行速度。
本发明技术解决方案:一种基于GMP的大整数加法和减法多核并行化实现方法,涉及两个关键技术问题,分别是数据相关性和负载均衡。首先借助于临时数组来解决加法或减法操作产生的进位或借位带来的数据相关性问题,然后采用将迭代循环for中的运算进行任务划分,使用OpenMP多线程编程的动态调度策略,多线程并行求取各区域的计算任务的策略解决负载不均衡问题。本发明并行策略主要分为两个过程来实现,分别为通过多线程并行执行“区域加法或减法”操作并存储进位和单线程对进位值进行统一操作两个过程。对于多线程并行执行“区域加法或减法”操作过程,基于OpenMP多线程编程实现,使用动态调度策略,多线程并行求取各区域的计算任务;对于利用单线程对进位值进行统一操作的过程,在遍历临时数组时,当遇值为1时,本发明利用加法运算的特殊性,从下一个区域开始到结果的最高位整个区域进行加1操作,直到进位不为1为止。本发明能借助多核平台,通过充分利用多核条件提高运行速度,在实际应用中有着十分重要的作用。
本发明具体实现步骤如下:
(1)获取程序运行系统目前可用线程数;
(2)根据步骤(1)中得到的可用线程数分配和初始化用于存储区域进位的临时数组,其元素个数为N;
(3)根据步骤(1)中得到的可用线程数将需要进行按位逐位相加操作的任务进行区域划分,区域中的区域任务的个数与临时数组的个数一一对应,大于等于可用线程数;
(4)基于OpenMP(共享存储并行编程)多线程编程技术,使用动态调度策略,多线程并行求取各区域的计算任务,率先执行完任务的线程接着从由区域任务形成的任务池中领取一个区域任务,各线程在求取区域任务时需判断当前区域任务是不是最后一个区域任务,如果是最后一个区域任务需要根据具体情况调用串行加法算法,否则可以直接调用串行加法算法计算当前区域任务,然后将最后的进位值保存到步骤(2)临时数组中相应的元素中,将结果存储在结果的相应位置;
(5)对步骤(4)中已更新的临时数组中每个区域的进位结果进行统一操作;具体过程:遍历临时数组中除临时数组N-1的每一个值,如果进位值为零,则继续遍历下一个,如果值为非零,则对步骤(4)得到的结果中从下一个区域结果开始到结果的最高位的整个区域进行加1操作,且当加1过程中新的临时进位不为1时,跳出此次遍历过程;遍历完除临时数组N-1的每一个值后更新最高位的进位情况。
所述步骤(2)中临时数组的大小与区域任务的个数相等,但是与线程数并不一定相等,当与线程数相等时,即一个线程对应一个区域任务,其实现过程与OpenMP技术中的静态调度方式一样,但区域任务号与线程号不一定按静态调度的方式对应;另外,临时数组0号元素的值对应第0号任务的进位情况,临时数组1号元素的值对应第1号任务的进位情况,临时数组2号元素的值对应第2号任务的进位情况,临时数组N-1号元素的值对应第N-1号任务的进位情况,N为权利要求1中步骤(2)中临时数组的大小。
所述步骤(3)中的区域任务在实现时,利用线程数对任务进行区域划分,得到的区域任务的大小不相同,大整数最高位对应的区域任务中的相加运算操作与其他区域任务中的相加运算操作个数是不同的,需要进行特殊处理;
所述的特殊处理的是把这个大整数最高位对应的区域任务这个特殊区域任务与除特殊任务之外其他区域任务等同对待,但是每次在做前都要根据区域任务对应的区域任务号判断当前线程执行的区域是不是特殊区域任务,这种方式具有if语句带给程序的性能影响;其二是把这个特殊区域任务不作为并行区域的内容,单独进行计算,即多线程并行执行除特殊区域任务之外的其他区域任务,再单线程执行特殊区域。
所述步骤(5)中临时数组中N-1中的值不需要进行遍历操作,其存储的是大整数所有数位中最后的进位结果,它只需对步骤(5)之后的结果进行“或”操作,得到整个运算中最后的进位值或者借位值。
所述步骤(3)根据线程数将需要进行按位逐位相加操作的任务进行区域划分,具体的过程:
(1)根据程序运行系统目前可用线程数m和需要进行按位逐位相加操作的个数n求出每个区域任务的大小和特殊区域任务的大小;
(2)声明并初始化循环变量为0,设置循环变量的值为0到N-1,每次迭代完成循环变量乘以步骤(1)中的区域任务的大小,其得到的值即为每个区域任务的开始,完成区域划分。
所述步骤(4)中动态调度策略在实现时指定size(即OpenMP动态调度任务大小参数)也可以不指定size,当不指定size时即默认每次将一个区域任务交给每一个线程。
大整数(规模从上万位的十进制位到上亿位的十进制位)的加减法算法是大整数数值运算中最基本也是最简单的算法,其执行时间复杂度为O(n),它是其他运算的基础内容,经过并行优化后大整数的加减法可以很快速地进行,而且也可以加快其他运算操作的计算性能。
与串行的加法运算相比,本发明的多核并行实现方法实际计算操作并没有太大区别,唯一不同的是将运算分成两个过程,便于多个线程并行执行。对两个大整数u和v的访问次数没有发生变化但顺序具有随机性,但是对用于存储结果的数组的写入操作会根据临时数组中的有相应的增加,然而由于临时数组的大小跟线程数相等,所以临时数组相对于两个大整数来说只是一个相当小的数组,所以对存储结果的数组的写入操作的增加操作的最小次数为0,当临时数组中存储的进位值都为0时;最大次数为wsize-wsize/threadnum,其中wsize为结果数组的大小,threadnum为线程数。但是本发明中,对加法操作利用多线程进行优化,这样可以大幅提高加法计算效率,进而提高性能。
计算复杂性(CC:computational complexity)分析:GMP库串行加法和减法运算计算复杂性为O(n),本发明计算复杂性为O(n),两种算法的计算复杂性完全一致。
访存复杂度(MAC:memory access complexity)分析:GMP库串行加法和减法运算总访存复杂度为O(3n),本发明总访存复杂度为O(4n),访存复杂度数量级没有变化。
本发明的有益效果:本发明能借助多核平台,通过充分利用多核条件提高运行速度,在实际应用中有着十分重要的作用。
附图说明
图1为本发明方法的实现流程图;
图2为本发明中加法运算按位逐位相加过程;
图3为本发明中对存储的进位值统一进行进位操作;
图4为本发明中大整数加法运算加速比柱状图;
图5为本发明中大整数减法运算加速比柱状图。
具体实施方式
本发明欲解决的技术问题基于GMP的大整数加法和减法运算在多核平台上的并行化,加快运算的运行效率。
本发明具体实现步骤如下:
(1)输入两个大整数u和v;
(2)求出u和v的规模大小,usize和vsize,(usize和vsize可正可负,正表示为正数,负表示此大整数为负数),以及u和v的绝对规模大小,abs_usize和abs_vsize(abs_usize和abs_vsize>=0);
(3)abs_usize和abs_vsize进行比较,如果abs_usize小于abs_vsize,将两个数进行交换,主要是确保被加数的规模大于等于加数的规模;
(4)为两个数的和分配内存wsize,内存大小为abs_usize+1;
(5)获取两个数的指针,up和vp;
(6)根据两个数的具体情况,选择相应的操作。当两个数的符号不同时需要进行减法操作,然后由第一个大整数的符号决定结果的符号;当两个数的符号相同时需要进行加法操作,大整数的符号由第一个数的符号决定。
(7)对于两个数u和v的规模相同的情况,对u和v进行按位逐位加法或者减法操作,具体过程见步骤(8),然后返回最后一位的进位或者借位情况;对于u和v的规模不同的情况(usize>vsize),主要完成u中的vsize位与v进行按位逐位加法或者减法操作,得到进位或者借位的值cy,然后把u的vsize位中的值和cy加到结果的第vsize位中,最后把u中其余的部分赋值到结果中(可能会有逐位进行进位或者借位的操作),最后返回进位或者借位的值cy;
(8)如图1所示,对于u和v的按位逐位加法或者减法操作调用本发明的多核并行方案,具体实现步骤:
(A1)获取程序运行系统目前可用线程数;
(A2)根据步骤(A1)中得到的可用线程数分配和初始化用于存储区域进位的临时数组,其元素个数为N;
(A3)根据步骤(A1)中得到的可用线程数将需要进行按位逐位相加操作的任务进行区域划分,具体的过程:(a1)根据程序运行系统目前可用线程数m和需要进行按位逐位相加操作的个数n求出每个区域任务的大小和特殊区域任务的大小;(a2)声明并初始化循环变量为0,设置循环变量的值为0到N-1,每次迭代完成循环变量乘以步骤(a1)中的区域任务的大小,其得到的值即为每个区域任务的开始,完成区域划分;临时数组的大小与区域任务的个数相等,但是与线程数并不一定相等,当与线程数相等时,即一个线程对应一个区域任务,其实现过程与OpenMP技术中的静态调度方式一样,但区域任务号与线程号不一定按静态调度的方式对应;另外,临时数组0号元素的值对应第0号任务的进位情况,临时数组1号元素的值对应第1号任务的进位情况,临时数组2号元素的值对应第2号任务的进位情况,临时数组N-1号元素的值对应第N-1号任务的进位情况,N为临时数组的大小。
(A4)如图2所示,基于OpenMP(共享存储并行编程)多线程编程技术,使用动态调度策略,多线程并行求取各区域的计算任务,率先执行完任务的线程接着从由区域任务形成的任务池中领取一个区域任务,各线程在求取区域任务时需判断当前区域任务是不是最后一个区域任务,如果是最后一个区域任务需要根据具体情况调用串行按位逐位加法操作,否则可以直接调用串行按位逐位加法操作计算当前区域任务,然后将最后的进位值保存到步骤(A2)临时数组中相应的元素中,将结果存储在结果的相应位置;利用线程数对任务进行区域划分,得到的区域任务的大小不相同,大整数最高位对应的区域任务中的相加运算操作与其他区域任务中的相加运算操作个数是不同的,需要进行特殊处理,即把这个大整数最高位对应的区域任务这个特殊区域任务与除特殊任务之外其他区域任务等同对待,但是每次在做前都要根据区域任务对应的区域任务号判断当前线程执行的区域是不是特殊区域任务,这种方式具有if语句带给程序的性能影响;具体的串行按位逐位进行相加操作的过程:(B1)将进位cy赋值为零,指针变量up和vp分别指向两个数的最低数位;(B2)取得被加数指针所指数位的值并将指针指向下一位,ul=*up++;取得加数指针所指数位的值并将指针指向下一数位,vl=*vp++;(B3)将取得的当前数位的数值进行相加操作,并将结果存储在变量sl中,sl=ul+vl;(B4)判断上步中相加结果是否小于被加数的当前数位的值,cy1=sl<ul;如果cy1=1表示相加的结果有向下一位的进位,cy1保存进位值;如果cy1=0表示相加的结果没有向下一位的进位;(B5)将相加结果加上上一位的进位值cy,并将结果存在rl中,rl=sl+cy;(B6)用rl中的结果值与sl中的值比较,cy2=rl<sl;如果cy2=1表示由于相加结果加上进位导致有向下一位的进位,cy2保存进位值;如果cy2=0表示相加的结果加上进位后没有向下一位的进位;(B7)根据cy1和cy2得到这一位的运算结果有没有向下一位的进位cy=cy1|cy2;cy=1表示有向下一位的进位,cy=0表示没有向下一位的进位;(B8)将rl中的结果值存储到用于存储结果的数组中;(B9)重复(B2)-(B8)步的内容,直到加数的所有数位运算完毕,到此按位逐位进行相加操作运算完毕,过程如图2所示;具体的按位逐位进行相减操作的过程与按位逐位相加的过程相似,只需将相应的相加过程改成相减的过程,并且在判断是否有借位情况时,进行的操作是cy1=sl>ul和cy2=rl>sl,其他过程类似(在以下内容中,为了叙述方便,将加法运算和减法运算统称“加法运算”,运算带来的进位和借位统称“进位”)。(A5)如图3所示,对步骤(A4)中已更新的临时数组中每个区域的进位结果进行统一操作,具体过程:(C1)遍历临时数组中除临时数组N-1的每一个值,如果进位值为零,则继续遍历下一个,如果值为非零,则对步骤(A4)得到的结果中从下一个区域结果开始到结果的最高位的整个区域进行加1操作,且当加1过程中新的临时进位不为1时,跳出此次遍历过程;(C2)遍历完除临时数组N-1的每一个值后更新最高位的进位情况。临时数组N-1中的值不需要进行遍历操作,其存储的是大整数所有数位中最后的进位结果,它只需对步骤(A5)之后的结果进行“或”操作,得到整个运算中最后的进位值或者借位值。
采用以上介绍的技术,用Intel的X86测试平台进行验证。
测试平台信息如下:4核Intel的X86平台,CPU主频为2665MHz,实验的硬件平台为64位,gcc4.5.2为编译器,以C语言为开发语言,并基于大整数运算开源库gmp-5.1.3版本进行算法的正确性验证和效率测试,测试时并行加法和减法算法为4线程,选取大整数的基R为2^64,两个大整数的规模为以unsigned long int(limb)类型为基本单位的数据长度,程序运行时间单位为毫秒。
本发明测试选取了10组大整数进行实验,每组都为长度为几十万limb的两个整数,为了使得实验具有一般性,所有数据均是由程序随机产生。
实验中使用本发明中提出的并行执行程序和gmp-5.1.3库上相应串行程序在Intel的X86平台上进行实验和性能对比。
本发明分别实现了加法和减法运算操作,并测试了gmp-5.1.3库上相应串行程序的性能,其加法运算性能见图4,减法运算性能见5。从图4、5中可以看出,本发明选取的10组大整数进行并行加法实验得到的加速性能图,并行加法算法与串行加法算法的加速比平均可达到1.88,本发明选取的10组大整数进行并行减法实验得到的加速性能图,并行减法算法与串行减法算法的加速比平均可达到1.89。
本发明基于GMP的大整数加法和减法运算的多核并行化方案的实现。基于OpenMP多线程编程,设计实现了串行加法和减法运算在多核平台上的多核并行优化方案。实验结果表明,对于4线程情况,与gmp-5.1.3库上相应串行程序相比,并行加法算法与串行加法算法的加速比平均可达到1.88,并行减法算法与串行减法算法的加速比平均可达到1.89,得到了比较好的计算性能。
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。

Claims (6)

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为权利要求1中步骤(2)中临时数组的大小。
3.根据权利要求1所述的基于GMP的大整数加法和减法多核并行化实现方法,其特征在于:所述步骤(3)根据线程数将需要进行按位逐位相加操作的任务进行区域划分,具体的过程:
(1)根据程序运行系统目前可用线程数m和需要进行按位逐位相加操作的个数n求出每个区域任务的大小和特殊区域任务的大小;
(2)声明并初始化循环变量为0,设置循环变量的值为0到N-1,每次迭代完成循环变量乘以步骤(1)中的区域任务的大小,其得到的值即为每个区域任务的开始,完成区域划分。
4.根据权利要求1所述的基于GMP的大整数加法和减法多核并行化实现方法,其特征在于:所述步骤(3)中的区域任务在实现时,利用线程数对任务进行区域划分,得到的区域任务的大小不相同,大整数最高位对应的区域任务中的相加运算操作与其他区域任务中的相加运算操作个数是不同的,需要进行特殊处理;所述的特殊处理的是把这个大整数最高位对应的区域任务这个特殊区域任务与除特殊任务之外其他区域任务等同对待,但是每次在做前都要根据区域任务对应的区域任务号判断当前线程执行的区域是不是特殊区域任务,这种方式具有if语句带给程序的性能影响;其二是把这个特殊区域任务不作为并行区域的内容,单独进行计算,即多线程并行执行除特殊区域任务之外的其他区域任务,再单线程执行特殊区域。
5.根据权利要求1所述的基于GMP的大整数加法和减法多核并行化实现方法,其特征在于:所述步骤(4)中动态调度策略在实现时指定size,即OpenMP动态调度任务大小参数,也可以不指定size,当不指定size时即默认每次将一个区域任务交给每一个线程。
6.根据权利要求1所述的基于GMP的大整数加法和减法多核并行化实现方法,其特征在于:所述步骤(5)中临时数组中N-1中的值不需要进行遍历操作,其存储的是大整数所有数位中最后的进位结果,它只需对步骤(5)之后的结果进行“或”操作,得到整个运算中最后的进位值或者借位值。
CN201510156109.9A 2015-04-03 2015-04-03 一种基于gmp的大整数加法和减法多核并行化实现方法 Active CN104699449B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510156109.9A CN104699449B (zh) 2015-04-03 2015-04-03 一种基于gmp的大整数加法和减法多核并行化实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510156109.9A CN104699449B (zh) 2015-04-03 2015-04-03 一种基于gmp的大整数加法和减法多核并行化实现方法

Publications (2)

Publication Number Publication Date
CN104699449A true CN104699449A (zh) 2015-06-10
CN104699449B CN104699449B (zh) 2017-09-29

Family

ID=53346626

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510156109.9A Active CN104699449B (zh) 2015-04-03 2015-04-03 一种基于gmp的大整数加法和减法多核并行化实现方法

Country Status (1)

Country Link
CN (1) CN104699449B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105653239A (zh) * 2015-12-25 2016-06-08 中国科学院软件研究所 一种大整数乘法Karatsuba算法的并行实现方法
CN107977444A (zh) * 2017-12-11 2018-05-01 成都博睿德科技有限公司 基于大数据的海量数据并行处理方法
CN108062249A (zh) * 2017-12-11 2018-05-22 成都博睿德科技有限公司 基于大数据的云端数据分配调度方法
CN116028011A (zh) * 2023-03-30 2023-04-28 山东大学 一种用于gpu数据库任意精度十进制数据的计算方法
CN117725348A (zh) * 2024-02-07 2024-03-19 蓝象智联(杭州)科技有限公司 一种gpu计算大规模数组求和过程中的线程管理方法及系统

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101395578A (zh) * 2006-02-03 2009-03-25 拉塞尔·H·菲什三世 线程优化的多处理器架构
CN104011661A (zh) * 2011-12-23 2014-08-27 英特尔公司 用于大整数运算的向量指令的装置和方法
US20140244703A1 (en) * 2013-02-26 2014-08-28 Nvidia Corporation System, method, and computer program product for implementing large integer operations on a graphics processing unit
CN104115115A (zh) * 2011-12-19 2014-10-22 英特尔公司 用于多精度算术的simd整数乘法累加指令
CN104375805A (zh) * 2014-11-17 2015-02-25 天津大学 采用多核处理器仿真可重构处理器并行计算过程的方法
CN104461449A (zh) * 2014-11-14 2015-03-25 中国科学院数据与通信保护研究教育中心 基于向量指令的大整数乘法实现方法及装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101395578A (zh) * 2006-02-03 2009-03-25 拉塞尔·H·菲什三世 线程优化的多处理器架构
CN104115115A (zh) * 2011-12-19 2014-10-22 英特尔公司 用于多精度算术的simd整数乘法累加指令
CN104011661A (zh) * 2011-12-23 2014-08-27 英特尔公司 用于大整数运算的向量指令的装置和方法
US20140244703A1 (en) * 2013-02-26 2014-08-28 Nvidia Corporation System, method, and computer program product for implementing large integer operations on a graphics processing unit
CN104461449A (zh) * 2014-11-14 2015-03-25 中国科学院数据与通信保护研究教育中心 基于向量指令的大整数乘法实现方法及装置
CN104375805A (zh) * 2014-11-17 2015-02-25 天津大学 采用多核处理器仿真可重构处理器并行计算过程的方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
任小西 等: "基于OpenMP多线程动态负载均衡技术研究", 《世界科技研究与发展》 *
王洁 等: "基于FPGA的嵌入式多核处理器及SUSAN算法并行化", 《计算机学报》 *
蔡佳佳 等: "多核微机基于OpenMP的并行计算", 《计算机技术与发展》 *
陈勤 等: "一种新的加法型快速大数模乘算法", 《计算机工程》 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105653239A (zh) * 2015-12-25 2016-06-08 中国科学院软件研究所 一种大整数乘法Karatsuba算法的并行实现方法
CN105653239B (zh) * 2015-12-25 2018-06-22 中国科学院软件研究所 一种大整数乘法Karatsuba算法的并行实现方法
CN107977444A (zh) * 2017-12-11 2018-05-01 成都博睿德科技有限公司 基于大数据的海量数据并行处理方法
CN108062249A (zh) * 2017-12-11 2018-05-22 成都博睿德科技有限公司 基于大数据的云端数据分配调度方法
CN116028011A (zh) * 2023-03-30 2023-04-28 山东大学 一种用于gpu数据库任意精度十进制数据的计算方法
CN116028011B (zh) * 2023-03-30 2023-06-16 山东大学 一种用于gpu数据库任意精度十进制数据的计算方法
CN117725348A (zh) * 2024-02-07 2024-03-19 蓝象智联(杭州)科技有限公司 一种gpu计算大规模数组求和过程中的线程管理方法及系统
CN117725348B (zh) * 2024-02-07 2024-05-10 蓝象智联(杭州)科技有限公司 一种gpu计算大规模数组求和过程中的线程管理方法及系统

Also Published As

Publication number Publication date
CN104699449B (zh) 2017-09-29

Similar Documents

Publication Publication Date Title
Zachariadis et al. Accelerating sparse matrix–matrix multiplication with GPU Tensor Cores
Ho et al. Exploiting half precision arithmetic in Nvidia GPUs
CN104699449A (zh) 一种基于gmp的大整数加法和减法多核并行化实现方法
Chen et al. GPU-accelerated sparse LU factorization for circuit simulation with performance modeling
Demmel et al. Parallel reproducible summation
Lu et al. Optimizing depthwise separable convolution operations on gpus
Lai et al. Accelerating Strassen-Winograd's matrix multiplication algorithm on GPUs
CN104731563B (zh) 基于fft的大整数乘法ssa算法多核并行化实现方法
Phillips et al. A CUDA implementation of the High Performance Conjugate Gradient benchmark
US20240086359A1 (en) Dynamic allocation of arithmetic logic units for vectorized operations
Zhou et al. A performance analysis framework for exploiting GPU microarchitectural capability
Longo et al. Reducing energy usage in resource-intensive Java-based scientific applications via micro-benchmark based code refactorings
CN104793922A (zh) 一种大整数乘法Comba算法基于OpenMP的并行实现方法
Lefèvre et al. Accurate calculation of Euclidean Norms using Double-word arithmetic
Racz et al. Parallelizing boundary surface computation of Chua's circuit
CN107729118A (zh) 面向众核处理器的修改Java虚拟机的方法
Kljucaric et al. Deep-learning inferencing with high-performance hardware accelerators
Freytag et al. Impact of reduced and mixed-precision on the efficiency of a multi-GPU platform on CFD applications
CN108268349B (zh) 一种基于intel avx指令集的浮点峰值计算吞吐测试方法
Huang et al. Partial flattening: a compilation technique for irregular nested parallelism on GPGPUs
Lastovetsky et al. How pre-multicore methods and algorithms perform in multicore era
Singh An Empirical Study of Programming Languages from the Point of View of Scientific Computing
Serfass et al. Comparing parallel performance of Go and C++ TBB on a direct acyclic task graph using a dynamic programming problem
Takahashi A parallel algorithm for multiple-precision division by a single-precision integer
CN105653239A (zh) 一种大整数乘法Karatsuba算法的并行实现方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant