Ubuntu 系统下的phe.Pailliar同态加密,速度慢,无法多线程调度的问题

Ubuntu 系统下的phe.Pailliar同态加密,速度慢,无法多线程调度的问题,第1张

Ubuntu 系统下的phe.Pailliar同态加密,速度慢,无法多线程调度的问题 问题描述:

在跑同态加密实验时发现一个有趣的现象!

i9 12900KF的Ubuntu主机在进行Pailliar同态加密的时候竟然跑不过i5 10400F的Windows小主机,速度慢了接近一倍!

我使用的是python 中的phe包调用Pailliar库引用的同态加密,然后在相同主机下进行了一个简单地运行时间对比测试:

同态加密运算:
##测试代码,进行同态加密运算时间计算
import time
import numpy as np
from phe import paillier
start_time = time.time()
u_a=np.random.uniform(low=2,high=8,size=(1,20000))  
public_key, private_key = paillier.generate_paillier_keypair(n_length=1024)
encrypted_u_a = np.asarray([public_key.encrypt(x) for x in u_a[0]])
elapsed_time = time.time() - start_time
print('elapsed_time: {:.3f}s'.format(elapsed_time))
指数运算:
import time
import math
def f(x):
    return 3*math.log(x)+math.cos(x)**2

if __name__ == '__main__':
    start_time = time.time()
    a=range(1,100000000)
    r=[f(x) for x in a]
    elapsed_time = time.time() - start_time
    print('elapsed_time: {:.3f}s'.format(elapsed_time))
统计不同平台下的运算时间如下:
运算项目数据量UbuntuWindows
指数运算5000000016.83s24.79s
指数运算10000000035.62s49.61s
Pailliar加密运算10000116.08s49.78s
Pailliar加密运算20000239.49s99.42s

指数运算的数据基本没有问题,符合正常地逻辑,Ubuntu系统下要比Windows快三分之一左右。

但Pailliar同态加密在Ubuntu平台要比Windows慢一倍多,证明和系统平台有关。

之后通过使用htop 命令查看Ubuntu进程,发现在进行Pailliar同态加密时仅进行了单线程的调度,未使用多线程计算,所以造成了计算速度慢的问题。

但通过查看了使用包的版本,两平台均使用了最新的phe==1.5.0,所以怀疑可能是Ubuntu系统下的phe包未进行线程优化,所以对其进行了降级处理,重新安装了phe==1.4.0;

pip install phe==1.4.0

但之后测试还是不行,速度依然没有提升;

之后通过查询发现,网上大部分教程在进行phe包安装之前都会安装一个**gmpy2**的高精度运算包,所以分别查看各系统,Windows系统安装了此包,但Ubuntu系统下未安装此包。

conda install gmpy2

安装之后重新进行了测试,问题解决,速度大大提升

运算项目数据量UbuntuWindows
指数运算5000000016.83s24.79s
指数运算10000000035.62s49.61s
Pailliar加密运算1000016.79s49.78s
Pailliar加密运算2000032.58s99.42s

原因分析:

phe 包安装版本太高,未安装gmpy2高精度计算包,只能进行单线程的计算。
在进行同态加密计算时,由于存在浮点数,需要对小数部分进行高精度计算,所以在gmpy2的加持下,速度显著提升,可以进行多线程计算。

总结:

phe版本太高,对其进行降级
未安装gmpy2无法进行多线程调度。

最后:
全网搜了一圈没有搜到同样问题,所以选择了记录下来。由于我只是使用同态加密算法进行应用,低层的密码学原理和 *** 作系统的线程调度原理知识不是很懂。上面的原因只是我的简单分析,更多原理或者说的不对的地方,请大佬指正交流~

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/724442.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存