当前位置: 首页 > 专利查询>浙江大学专利>正文

基于GPU加速的大规模椭圆曲线多标量乘法的并行计算方法技术

技术编号:35992447 阅读:14 留言:0更新日期:2022-12-17 23:08
本发明专利技术公开了一种基于GPU加速的大规模椭圆曲线多标量乘法的并行计算方法,包括以下步骤:大规模椭圆曲线多标量乘法的原始运算任务的切分得到多个子运算任务;并行存储子运算任务的曲线点;一系列并行稀疏矩阵操作;稀疏矩阵中曲线点元素进行加权求和;规约子运算任务结果获取最终大规模椭圆曲线多标量乘法结果。该计算方法将原始大规模椭圆曲线多标量乘法任务切分成子任务,并且将计算过程中多种复杂操作简化成并行稀疏矩阵运算,为大规模椭圆曲线多标量乘法提供加速。该计算方法的时间复杂度相比于现有方法更少,在理论上可以达到接近GPU提供的线程个数的并行加速。GPU提供的线程个数的并行加速。GPU提供的线程个数的并行加速。

【技术实现步骤摘要】
基于GPU加速的大规模椭圆曲线多标量乘法的并行计算方法


[0001]本专利技术属于并行计算
,具体涉及一种基于GPU加速的大规模椭圆曲线多标量乘法的并行计算方法。

技术介绍

[0002]大规模椭圆曲线多标量乘法指的是椭圆曲线上的点(曲线点)与大量标量进行的数乘运算。该数乘运算可以用公式表示,其中n 表示运算的规模,k
i
表示一个标量,P
i
表示一个曲线点,k
i
P
i
表示标量k
i
与曲线点P
i
的数乘,Q表示运算的结果。大规模椭圆曲线多标量乘法已经在密码学领域得到了广泛的应用,尤其是在零知识证明领域,它已经成为了最重要的算子之一。
[0003]然而完成大规模椭圆曲线多标量乘法是一个非常耗时的操作。例如,在真实场景的零知识证明领域,该数乘运算的规模n非常大,可以达到数百万。更糟糕的是,使用传统的运算方法进行一次标量与椭圆曲线上的曲线点的数乘操作,远比于完成一次标量与标量的乘法更加耗时,这导致了完成一次大规模椭圆曲线多标量乘法运算所花费的时间难以被用户接受,计算效率低,目前,对该数乘运算进行并行计算是提高其运算效率的核心技术之一。
[0004]GPU(Graphic Processing Unit,图形处理器)是一种可以提供成千上万个核心进行并行计算的计算平台。目前,已经有多个领域使用GPU对基础算法进行了并行加速,例如在深度学习领域对矩阵运算的并行加速,在图形学领域对图形碰撞算法的加速,在通信领域对信号处理的并行加速等等。但是目前没有适用于GPU环境的大规模椭圆曲线多标量乘法的并行计算方法。
[0005]已经存在的多种对大规模椭圆曲线多标量乘法的并行计算方法,例如基于Chang

Lou算法的并行计算方法,和基于Bos

Coster算法的并行计算方法。但是这些并行计算方法只在低并行度的环境中有着良好的表现,难以适用于GPU提供的高并行度的环境。这些并行计算方法在高并行度的环境中,表现出它们的并行加速比要低于GPU可以提供的并行度,也就是这些并行计算方法在GPU上并不适用。
[0006]因此,迫切地需要一种适用于GPU高并行度环境的大规模椭圆曲线多标量乘法的并行计算方法是加速该数乘运算的关键技术,以在GPU上实现对大规模椭圆曲线多标量乘法的并行加速计算。

技术实现思路

[0007]鉴于上述,本专利技术的目的是提供一种基于GPU加速的大规模椭圆曲线多标量乘法的并行计算方法,以提升运算速度并节省计算开销。
[0008]为实现上述专利技术目的,实施例提供的一种基于GPU加速的大规模椭圆曲线多标量乘法的并行计算方法,包括以下步骤:
[0009](1)将原始运算任务切分:将大规模椭圆曲线多标量乘法的原始运算任务依据标
量切分多个子运算任务;
[0010](2)并行存储子运算任务的曲线点:将多个子运算任务的所有曲线点根据曲线点对应的子标量并行存储至一个稀疏矩阵中;
[0011](3)并行稀疏矩阵操作:对存储有曲线点的稀疏矩阵进行矩阵转置、矩阵向量乘法操作,以获得曲线点向量;
[0012](4)并行计算子运算任务结果:对曲线点向量中的曲线点进行加权相加,获得子运算任务结果;
[0013](5)计算原始运算任务结果:将所有子运算任务结果归约得到原始任务结果。
[0014]优选地,步骤(1)中,原始运算任务为:其中, n表示运算的规模,k
i
表示第i个标量,P
i
表示第i个曲线点,k
i
P
i
表示标量k
i
与曲线点P
i
的数乘,Q表示运算的结果;
[0015]对应λ位的标量k
i
切分为λ/s个s位的子标量m
ij
,多个子标量m
ij
满足公式
[0016]这样,将原始计算任务切分为λ/s个子运算任务其中,G
j
是子运算任务的运算结果,j表示子运算任务的索引。
[0017]优选地,步骤(2)中,创建一个尺寸为t
×2s

1的稀疏矩阵,其中,t表示GPU能够提供的GPU线程总数,s表示子标量的位数;
[0018]每个GPU线程平均分配n/t个曲线点任务,根据曲线点对应子标量m
ij
的值,将曲线点放置在稀疏矩阵每一行的m
ij
列位置处,实现子运算任务的所有曲线点在稀疏矩阵中的存储。
[0019]优选地,还包括:根据曲线点对应子标量m
ij
的值,将曲线点在原始曲线点向量中的索引放置在稀疏矩阵每一行的m
ij
列位置处,实现子运算任务的所有曲线点在稀疏矩阵中的存储,其中,原始运算任务中曲线点组成原始曲线点向量。
[0020]优选地,步骤(3)中,首先,对存储有曲线点的稀疏矩阵进行并行矩阵转置操作;
[0021]然后,将经过矩阵转置操作后的稀疏矩阵与由单位标量组成的长度为n的向量,并行进行一次向量与稀疏矩阵的乘法,该乘法的结果为长度为 2
s

1的曲线点向量,记为[B1,B2,

,B
2s
‑1],其中B1,B2,

,B
2s
‑1均为曲线点。
[0022]优选地,在进行矩阵向量乘法操作时,通过动态调度不同数量的GPU 线程来处理不同的矩阵行以克服各个线程间的负载不平衡,包括:
[0023]首先对稀疏矩阵的行根据行长进行排序,并根据行长将所有行分成不同的组;然后根据每个组中非零矩阵条目的比例为组调度不同数量的线程,使得每个线程工作的非零条目数为相似的,其中,行长为每行中非零矩阵条目的个数。
[0024]优选地,步骤(4)中,首先,将每个GPU线程平均分配(2
s

1)/t个曲线点的计算任务,对分配到的第i个曲线点B
i
求其对下标的加权值,也就是iB
i

[0025]然后,将所有加权值归约,计算子运算任务结果
[0026]优选地,步骤(5)中,将所有子运算任务结果归约到原始任务结果
其中,G
j
为第j个子运算任务结果。
[0027]与现有技术相比,本专利技术具有的有益效果至少包括:
[0028]通过将原始运算任务切分成子运算任务,并且将计算过程中多种复杂操作简化成并行稀疏矩阵运算,为大规模椭圆曲线多标量乘法提供加速,该方法的时间复杂度相比于现有方法更少,并且在理论上可以达到接近 GPU提供的线程个数的并行加速比,提升运算速度并节省计算开销。
附图说明
[0029]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于GPU加速的大规模椭圆曲线多标量乘法的并行计算方法,其特征在于,包括以下步骤:(1)将原始运算任务切分:将大规模椭圆曲线多标量乘法的原始运算任务依据标量切分多个子运算任务;(2)并行存储子运算任务的曲线点:将多个子运算任务的所有曲线点根据曲线点对应的子标量并行存储至一个稀疏矩阵中;(3)并行稀疏矩阵操作:对存储有曲线点的稀疏矩阵进行矩阵转置、矩阵向量乘法操作,以获得曲线点向量;(4)并行计算子运算任务结果:对曲线点向量中的曲线点进行加权相加,获得子运算任务结果;(5)计算原始运算任务结果:将所有子运算任务结果归约得到原始任务结果。2.根据权利要求1所述的基于GPU加速的大规模椭圆曲线多标量乘法的并行计算方法,其特征在于,步骤(1)中,原始运算任务为:其中,n表示运算的规模,k
i
表示第i个标量,P
i
表示第i个曲线点,k
i
P
i
表示标量k
i
与曲线点P
i
的数乘,Q表示运算的结果;对应λ位的标量k
i
切分为λ/s个s位的子标量m
ij
,多个子标量m
ij
满足公式这样,将原始计算任务切分为λ/s个子运算任务其中,G
j
是子运算任务的运算结果,j表示子运算任务的索引。3.根据权利要求1所述的基于GPU加速的大规模椭圆曲线多标量乘法的并行计算方法,其特征在于,步骤(2)中,创建一个尺寸为t
×2s

1的稀疏矩阵,其中,t表示GPU能够提供的GPU线程总数,s表示子标量的位数;每个GPU线程平均分配n/t个曲线点任务,根据曲线点对应子标量m
ij
的值,将曲线点放置在稀疏矩阵每一行的m
ij
列位置处,实现子运算任务的所有曲线点在稀疏矩阵中的存储。4...

【专利技术属性】
技术研发人员:陈文智陆涛魏成坤余瑞璟张紫徽
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1