algorithm - 算法 - 如何使矩阵计算尽可能快

纯粹出于我自己对代码和计算机的了解和理解,我试图创建一个具有多个矩阵函数的array/matrix 类,然后将它用于需要矩阵或数组类的项目中。我想使用这个matrix/array类来制作一个神经网络库,因此它需要尽可能快。

我当前的计算点积的方法是:


a = [[1, 2, 3], [4, 5, 6]]


b = [[1], [2], [3]]



def dot(a, b):


 c = [[0 for j in range(len(b[i]))] for i in range(len(a))]



 for i in range(len(c)):


 for j in range(len(c[i])):


 t = 0


 for k in range(len(b)):


 t += a[i][k] * b[k][j]


 c[i][j] = t


 return c



print(dot(a, b))


# [[14], [32]]



我已经研究了英特尔MKL (我有英特尔酷睿i7 )和其他BLAS实现(例如,OpenBLAS ),但是我无法获得有效的结果,所以我的问题是,最快计算两个矩阵的点积的的方法是什么?

时间:

如果可能的话,你可以使用CUDA用GPU来快速计算。

...