一种面向zk-SNARK运算的GPU并行加速方法与流程

文档序号:32748842发布日期:2022-12-30 23:35阅读:来源:国知局

技术特征:
1.一种面向zk-snark运算的gpu并行加速方法,其特征在于,包括:步骤(1):cpu执行输入输出任务,将待处理数据读入内存,cpu执行prescan过程,根据给定进制划分指数,并将对应指数的底数分离;其中,输入输出任务指计算椭圆曲线有限域上的多重点加任务并给出结果m,p1…
p
n
为底数,a1…
a
n
分別为各项对应之指数;待处理数据即输入步骤(2):cpu为gpu分配内存空间和桶数组,将底数放入桶中;步骤(3):gpu根据桶数据执行bucketmul计算,为每个桶完成桶内数据乘积计算;步骤(4):gpu使用完成桶内乘积计算的值,执行windowreduce操作,进行桶间组内,也即指数某一位的全部底数乘积的计算;步骤(5):gpu根据步骤(4)的计算结果,将每一位的值整合起来,执行finalreduce过程,使对应位的指数完成自乘,并将自乘后的数值相乘得到最终的结果。2.根据权利要求1所述的一种面向zk-snark运算的gpu并行加速方法,其特征在于,所述步骤(1)具体过程为:步骤(1.1),cpu执行输入输出任务,将待处理数据读入内存,cpu执行prescan任务,计算出每个桶t
im
内的元素索引,并为gpu设计分配区域存放;步骤(1.2),采用一次性分配的方式,使用标记数组记录每个桶对应的索引缓存区的起始位置与终止位置,从而划分出每个桶的索引缓存区。3.根据权利要求2所述的一种面向zk-snark运算的gpu并行加速方法,其特征在于,所述步骤(1.1)中,根据的计算内容,分析得出,t
im
中i相同,即属于同一r
i
的桶,并起来是全体输入p1,p2,

,p
n
;r
i
的个数即指数的2
c
进制位数因此共需分配个索引的空间,上述运算中,假设p1…
p
n
为底数,multiexp运算有n项,每个指数为二进制的b位数,每c位划为一组。4.根据权利要求2或3所述的一种面向zk-snark运算的gpu并行加速方法,其特征在于,所述步骤(1.2)中,根据指数的数值确定确定每个输入出现于桶的位置,对k=0~n,通过右移并取与,得出输入的指数a
k
在2
c
进制下第i位的值b
ki
,则索引k应放入桶的索引缓存区。5.根据权利要求4所述的一种面向zk-snark运算的gpu并行加速方法,其特征在于,所述步骤(2)具体过程为:步骤(2.1),cpu分配个索引的索引缓存区idxbuf并分配个索引的起始与终止位置记录标记数组searr;步骤(2.2),扫描输入统计每个桶的元素个数,根据元素个数信息,填写searr数组,再扫描一次输入,结合searr记录的桶的起始位置,将索引k实际放入idxbuf的对应位置。6.根据权利要求4所述的一种面向zk-snark运算的gpu并行加速方法,其特征在于,步骤(3)所述bucketmul计算使用gpu的多线程能力完成,每个桶对应一个线程,则桶t
ij
应当对应第i*2
c
+j个线程,该线程从属于对应桶的idxbuf区域读取索引,根据索引从输入取得数
据,与结果相乘并返回。7.根据权利要求4所述的一种面向zk-snark运算的gpu并行加速方法,其特征在于,所述步骤(4)具体过程为:步骤(4.1),windowreduce需要计算将r
i
的计算任务分配给第i个线程完成,共需个线程;在完成向各线程分配任务后,利用累乘的思想进行各项数据的乘积,计算式为:步骤(4.2),实现r
i
的结果计算:将runningsum过程和乘到总和上r
i
并进行迭代。8.根据权利要求2所述的一种面向zk-snark运算的gpu并行加速方法,其特征在于,所述步骤(4.2)首先将变量runningsum与r
i
初始化为单位元,其次从遍历到t
i1
,每轮将t
ij
乘到runningsum上,并将runningsum乘到r
i
上,遍历完成即得到最终所需的r
i
。9.根据权利要求8所述的一种面向zk-snark运算的gpu并行加速方法,其特征在于,所述步骤(5)具体过程为:步骤(5.1),finalreduce使用单线程计算利用累乘思想进行乘积运算,计算式为:步骤(5.2),将m初始化为单位元,从r
w
遍历到r0,再将每轮r
i
乘到m上,并将m自乘c次,遍历完成即得到最终的m。

技术总结
本发明公开了一种面向zk-SNARK运算的GPU并行加速方法,CPU执行输入输出任务,将待处理数据读入内存,CPU执行Prescan过程,根据给定进制划分指数,并将对应指数的底数分离;CPU为GPU分配内存空间和桶数组,将底数放入桶中;GPU根据桶数据执行BucketMul计算,为每个桶完成桶内数据乘积计算;GPU使用完成桶内乘积计算的值,执行WindowReduce操作,进行桶间组内乘积的计算;GPU将每一位的值整合起来,执行FinalReduce过程,使对应位的指数完成自乘,并将自乘后的数值相乘得到最终的结果。本发明在GPU上实行,可更好地支撑大规模数据计算处理的需求。的需求。的需求。


技术研发人员:肖利民 沈润楠 肖希源 王良 郭为
受保护的技术使用者:北京天数微芯半导体科技有限公司
技术研发日:2022.09.30
技术公布日:2022/12/29
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1