一种全同态快速数论变换的GPU加速方法技术

技术编号:38048984 阅读:10 留言:0更新日期:2023-06-30 11:15
本发明专利技术公开了一种全同态快速数论变换的GPU加速方法,涉及计算机以及信息安全算法技术领域,本发明专利技术针对现有的全同态方案中多项式乘法运算GPU实现方案的缺陷,采用线程束变换(warp shuffle)指令让线程直接从同一个线程束内线程的寄存器中读取相应的系数,来减少IO通信。另外,借助共享内存中转,来支持更多数论变换层数的运算。本发明专利技术支持64bit数据运算,并且允许批处理,同时计算余数系统(Residue Number System,RNS)下多个模数的数论变换。RNS)下多个模数的数论变换。RNS)下多个模数的数论变换。

【技术实现步骤摘要】
一种全同态快速数论变换的GPU加速方法


[0001]本专利技术涉及计算机以及信息安全算法
,特别涉及一种全同态快速数论变换的GPU加速方法。

技术介绍

[0002]量子计算机的发展使得后量子加密算法,即能在传统计算机上实现的能抵御量子计算攻击的加密算法受到大量的关注。基于格的加密算法具有很强的安全性,能够适用于密钥交换、数字签名以及全同态加密等。数论变换(number theoretic transforms,NTT)与傅里叶变换相比,在计算多项式乘法时不涉及精度以及浮点数,能够显著减少电路面积且易于实现。
[0003]现有技术中,论文一《Over 100x Faster Bootstrapping in Fully Homomorphic Encryption through Memory

centric Optimization with GPUs》使用了一种每线程执行8点数论变换的实现方法,整个过程由两个核函数组成。一个核函数块加载个多项式系数中的或个模的剩余系至共享内存内,再拷贝到寄存器进行运算,每三层进行一次共享内存与寄存器的数据交互。其中,。每个核函数块包含个线程,执行一个基

的数论变换。该方法需要很多IO通信,占用的GPU存储也较多,另外,还需要很多核函数块同步操作。论文二《Accelerating Fourier and Number Theoretic Transforms using Tensor Cores and Warp Shuffles》,使用了线程束变换和tensor core实现数论变换,包含两个部分:比特反转步骤与蝴蝶变化步骤。在比特反转步骤步骤中,每个线程根据比特反转表的索引加载一个多项式系数。在蝴蝶变化步骤中,每个线程直接从同一个线程束(warp)的其他线程中读取不同层数下蝴蝶运算中其对应的系数,来执行蝴蝶运算操作。由于一个线程束中只有32个线程,并且tensor core将数据大小约束在32bit内,所以该方法最多只能提供5层数论变换,且输入大小不能超过32bit。
[0004]因此,现有技术存在缺陷,需要改进。

技术实现思路

[0005]本专利技术的目的在于提供一种全同态快速数论变换的GPU加速方法,以克服现有技术中的不足。
[0006]为实现上述目的,本专利技术提供如下技术方案:本专利技术公开了一种全同态快速数论变换的GPU加速方法,所述方法包括运用两个核函数,第一个核函数首先从全局存储中加载多项式维度与个数乘积数量的系数,并批处理多项式的一部分层数的数论变换,然后运用全局存储作为中介,将数据传送存储后,再加载至第二个核函数,随即进行多项式的剩余层数的数论变换,从而完成整个数论变换的运算过程;其中,单个核函数的具体执行过程如下:在数论变换前,设置核函数的参数,初始化核函数并开辟共享内存空间;执行层数论变换运算,其中为每个线程执行的数论变换运算的点数;执行5层
数论变换运算,数论变换通过计算交互的线程与执行蝴蝶操作的系数的索引,借助线程束变换函数进行。
[0007]作为优选的,对于设置核函数的参数,具体为:设置多项式的维度,批处理的多项式的个数、第一个核函数执行的数论变换、第二个核函数执行的数论变换层数、每个线程执行的数论变换运算的点数、一个核函数块(block)内的线程个数,其中是64的倍数, 满足。
[0008]作为优选的,单个核函数具备个线程,每个线程首先从全局存储中加载个系数,执行层运算,接着通过线程束变换读取同一个线程束内其他线程的寄存器,再执行5层运算。
[0009]作为优选的,所述5层数论变换运算过程中,共执行5层数论变换,每一层均需要执行如下运算:(1)计算线程束内待交换数据的两个线程之间的间隔,每个使用线程束变换函数中的通过计算线程编号和掩码的异或值来得到目标线程编号的函数,读取对应间隔的线程的寄存器内的数据;(2)根据线程索引与间隔计算选择因子,并根据选择因子确定蝴蝶运算的两个元素;(3)将上述已确定的蝴蝶运算的两个元素以及数论变换的旋转因子代入进行蝴蝶运算;(4)每个线程将式蝴蝶运算的结果写回寄存器;(5)每个线程将数据从寄存器写回GPU的共享内存。
[0010]作为优选的,所述蝴蝶运算的两个元素确定过程中,计算选择因子C=(warpTid >> (log_warpSize
‑1‑
i))&1,其中warpTid是该线程束内每个线程的索引,log_warpSize是线程束的大小取底数为2的对数的值,i是数论变换层数的索引;然后执行与非判断left=(1

C)(reg1

reg2)+reg2,right=C(reg1

reg2)+reg2,其中,left与right表示进行蝴蝶运算的两个元素;当C=0时left=reg1,right=reg2,当C=1时left=reg2,right=reg1。
[0011]作为优选的,所述蝴蝶运算的结果为式(1

C)(left

right)+right的值,C为选择因子,left与right表示进行蝴蝶运算的两个元素。
[0012]作为优选的,所述5层数论变换运算执行完后,各线程通过共享内存中转,存储并加载数据,实现数据交换后继续执行层数论变换运算。
[0013]作为优选的,所述层数论变换运算,提供层扩展,根据的大小进行调节,当需要执行层数论变换时,每个线程从共享内存中读取个系数,输入蝴蝶运算函数进行运算,其中。
[0014]本专利技术的有益效果:本专利技术一种全同态快速数论变换的GPU加速方法,相比于论文一提出的现有技术,本专利技术通过将后五层数据一直保存在寄存器中、并使用线程束变换来得到相应结果,取消了寄存器与共享内存的数据传输过程,减少了IO通信,降低了GPU存储开销,减少了耗时的同步操作。相比于论文二提出的现有技术,本专利技术没有使用tensor core这类对数据大小有约束的技术,从而可以支持64比特的高效算术运算,允许更大范围的多项式维度与数据尺寸的输入范围,并且基本覆盖了全同态方案实际应用中需要的所有
级别的参数。
附图说明
[0015]图1是本专利技术实施例中单个核函数的运算流程示意图;图2是本专利技术实施例通过两个核函数批处理计算数论变换示意图。
具体实施方式
[0016]为使本专利技术的目的、技术方案和优点更加清楚明了,下面通过附图及实施例,对本专利技术进行进一步详细说明。但是应该理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限制本专利技术的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本专利技术的概念。
[0017]本专利技术针对现有的全同态方案中多项式乘法运算GPU实现方案的缺陷,采用线程束变换(warp shuffle)指令让线程直接从同一个线程束内线程的寄存器中读取相应的系数,来减少IO本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种全同态快速数论变换的GPU加速方法,其特征在于,所述方法包括运用两个核函数,第一个核函数首先从全局存储中加载多项式维度与个数乘积数量的系数,并批处理多项式的一部分层数的数论变换,然后运用全局存储作为中介,将数据传送存储后,再加载至第二个核函数,随即进行多项式的剩余层数的数论变换,从而完成整个数论变换的运算过程;其中,单个核函数的具体执行过程如下:在数论变换前,设置核函数的参数,初始化核函数并开辟共享内存空间;执行层数论变换运算,其中为每个线程执行的数论变换运算的点数;执行5层数论变换运算,数论变换通过计算交互的线程与执行蝴蝶操作的系数的索引,借助线程束变换函数进行。2.如权利要求1所述的一种全同态快速数论变换的GPU加速方法,其特征在于:对于设置核函数的参数,具体为:设置多项式的维度N,批处理的多项式的个数β、第一个核函数执行的数论变换、第二个核函数执行的数论变换层数、每个线程执行的数论变换运算的点数、一个核函数块(block)内的线程个数,其中t是64的倍数,满足。3.如权利要求2所述的一种全同态快速数论变换的GPU加速方法,其特征在于:单个核函数具备个线程,每个线程首先从全局存储中加载个系数,执行层运算,接着通过线程束变换读取同一个线程束内其他线程的寄存器,再执行5层运算。4.如权利要求2所述的一种全同态快速数论变换的GPU加速方法,其特征在于:所述5层数论变换运算过程中,共执行5层数论变换,每一层均需要执行如下运算:(1)计算线程束内待交换数据的两个线程之间的间隔,每个使用线程束变换函数中的通过计算线程编号和掩码的异或值来得到目标线程编号的函数,读取对应间隔的线程的寄存器内的数据;(2)根据线程索引与间隔计算选择因子,并根据选择因子确定蝴蝶运算的两个元素;(3)将上述已确定的蝴蝶运算的两个元素以及数论变换的旋转因子...

【专利技术属性】
技术研发人员:张峰石建方黎明
申请(专利权)人:杭州后量子密码科技有限公司
类型:发明
国别省市:

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

1