很长时间的大矩阵相乘,这个问题怎么解决,我用的是伽罗瓦库,还有numpy,我想应该还能稳定工作,我试着用numpy实现我的GF4算法和矩阵相乘,但是时间更长,谢谢回复。
当r = 2,3,4,5,6的时候,乘得快,那就需要很长的时间,对我来说,这些都不是很大的矩阵,这只是一个代码片段,我得到了给定r的某个族的矩阵的大小n,k,然后我需要把这些得到的参数的矩阵相乘。
import numpy as np
import galois
def family_Hamming(q,r):
n = int((q**r-1)/(q-1))
k = int((q**r-1)/(q-1)-r)
res = (n,k)
return res
q = 4
r = 7
n,k = family_Hamming(q,r)
GF = galois.GF(2**2)
#(5461,5461)
a = GF(np.random.randint(4, size=(k, k)))
#(5454,5461)
b = GF(np.random.randint(4, size=(k, n)))
c = np.dot(a,b)
print(c)
2条答案
按热度按时间owfi6suc1#
我不确定它是否真的更快,但是
np.dot
应该用于两个向量的点积,对于矩阵乘法,使用A @ B
。3qpi33ja2#
尝试在CUDA运行时上使用jax,比如可以在Google Colab的免费GPU上试用(打开笔记本-〉运行时-〉更改运行时类型-〉GPU)。
定时试验: