我在mpmath库工作,对检查提高精度对计算/执行时间的影响很感兴趣。我遇到了一个奇怪的现象,对此我找不到解释。 当我检查条目式乘法的计时时,对于精度16(mp.dps=16)和精度1024(mp.dps=1024),我得到了相同的执行时间。然而,当我检查特征值计算的时间时,我得到了时间上的显著差异。定时之间的比率约为7(time_eig_1024prec/time_eig_16prec=7)。 使用5k长和100k长的复数向量(用于逐项乘法)和特征值的16x16矩阵执行的运算。 我的代码:
mp.dps = 16;
#mp.dps = 1024;
mp.pretty = False
AVG = 10
#element-wise vector multiplication
N=100000
times = np.zeros((1,AVG))
for i in range(AVG):
r1 = 10*np.random.rand(1,N)
i1 = 10*np.random.rand(1,N)
c1 = np.vectorize(mpc)(np.vectorize(complex)(r1,i1))
r2 = 10*np.random.rand(1,N)
i2 = 10*np.random.rand(1,N)
c2 = np.vectorize(mpc)(np.vectorize(complex)(r2,i2))
start_time = time.time()
prod = np.vectorize(fmul)(c1,c2)
times[0,i] = time.time() - start_time
print("--- %s seconds | element-wise vector multiplication ---" % numpy.mean(times))
#calculating Eigenvalues
M = 16
times = np.zeros((1,AVG))
for i in range(AVG):
mat = 10*np.random.rand(M,M)
A = mp.matrix(mat)
start_time = time.time()
e = numpy.array(mp.eig(A)[0])
times[0,i] = time.time() - start_time
print("--- %s seconds | eig ---" % numpy.mean(times))
如果有人能向我解释为什么提高精度不会影响输入乘法运算的时间,而是将特征值计算的执行时间乘以7倍,我将不胜感激
谢谢大家!! 伊莱
目前没有回答
相关问题 更多 >
编程相关推荐