首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种基于GPU的蒙哥马利模乘运算方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:蓝象智联(杭州)科技有限公司

摘要:本发明公开了一种基于GPU的蒙哥马利模乘运算方法。它包括以下步骤:选取GPU的q个线程;将数据x等分为q个子数据X,并分别发送给q个线程;将模数m等分为q个子模数M,并分别发送给q个线程;将数据y等分为p*q个子数据Y并存储在共享内存中;q个线程根据自身持有的子数据X、子模数M以及共享内存存储的p*q个子数据Y采用CIOS算法进行蒙哥马利模乘运算,得到计算结果w。本发明能够在GPU上实现蒙哥马利模乘运算,大大提高了计算效率,降低了计算时延。

主权项:1.一种基于GPU的蒙哥马利模乘运算方法,用于蒙哥马利模乘的数据x、数据y、模数m都为32*p*q位的正整数,p为2的整数倍,q为大于2的整数,数据x作为被乘数,数据y作为乘数,其特征在于,包括以下步骤:S1:选取GPU的q个线程;S2:将数据x等分为q个子数据X,并分别发送给q个线程;将模数m等分为q个子模数M,并分别发送给q个线程;将数据y等分为p*q个子数据Y并存储在共享内存中;S3:q个线程根据自身持有的子数据X、子模数M以及共享内存存储的p*q个子数据Y采用CIOS算法进行蒙哥马利模乘运算,得到计算结果w;所述q个线程依次编号为1、2……q,1≤i≤q;所述步骤S2包括以下步骤:将数据x等分为q个子数据X,从低位至高位依次记为X1、X2……Xq,将子数据Xi发送给编号为i的线程,子数据Xi表示数据x中32*p*i-1至32*p*i-1位的数据;将模数m等分为q个子模数M,从低位至高位依次记为M1、M2……Mq,将子模数Mi发送给编号为i的线程,子模数Mi表示模数m中32*p*i-1至32*p*i-1位的数据;将数据y等分为p*q个子数据Y,从低位至高位依次记为Y1、Y2……Yp*q,并存储在共享内存中,1≤j≤p*q,子数据Yj表示数据y中32*j-1至32*j-1位的数据;所述步骤S1还包括以下步骤:每个线程构建用于存放中间计算结果Z的存储空间,所述存储空间包括p+2个子空间,每个子空间具有32位;编号为i的线程计算出的中间计算结果记为Zi,编号为i的线程构建的p+2个子空间从低位至高位存储的数据依次记为Zi1、Zi2……Zip+2,1≤r≤p+2,Zir表示中间计算结果Zi中32*r-1至32*r-1位的数据;所述步骤S3包括以下步骤:S31:将每个线程对应的中间计算结果Z置零,设置j=1;S32:每个线程都从共享内存中取出子数据Yj,结合自身持有的子数据X、子模数M计算出对应的中间计算结果Z;S33:给j赋值为j=j+1,判断j是否大于p*q,如果是则执行步骤S34,否则跳转至步骤S32;S34;从每个线程计算出的中间计算结果Z中提取出有效值拼接成计算结果z;所述步骤S32包括以下步骤:S321:每个线程都从共享内存中取出子数据Yj,每个线程根据自身持有的子数据X、当前的中间计算结果Z以及子数据Yj计算出最新中间计算结果,并将当前的中间计算结果Z赋值为最新中间计算结果;S322:编号为1的线程计算出中间参数u,并将中间参数u发送给其他线程;S323:每个线程根据自身持有的子模数M、中间参数u、当前的中间计算结果Z计算出最新中间计算结果,并将当前的中间计算结果Z赋值为最新中间计算结果;S324:从每个线程计算出的中间计算结果Z中提取出有效值拼接成参数f,判断参数f是否小于模数m,如果是则参数flag的值为0,否则参数flag的值为1;每个线程根据参数flag、自身持有的参数f计算出最新中间计算结果,并将当前的中间计算结果Z赋值为最新中间计算结果;所述步骤S34包括以下步骤:S341:从每个线程的中间计算结果Z中提取出有效值作为子结果W;从编号为i的线程的中间计算结果Zi中提取出的子结果Wi的方法如下:当1≤i<q时,子结果Wi为中间计算结果Zi的前32*p位;当i=q时,子结果Wi为中间计算结果Zi的前32*p+1位;S342:将子结果W1、W2……Wq拼接成计算结果w。

全文数据:

权利要求:

百度查询: 蓝象智联(杭州)科技有限公司 一种基于GPU的蒙哥马利模乘运算方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。