纯粹出于我对代码和计算机的了解和理解,我试图创建一个具有多个矩阵函数的数组/矩阵类,然后将其用于需要矩阵或数组类的任何项目中。最重要的是,我想使用此矩阵/数组类创建一个神经网络库,因此要求它尽可能快。
我需要最快的函数是两个矩阵的矩阵乘积计算,但是,我想用较大的矩阵快速进行此计算的运气很小。
我当前计算点积的方法是:
注意,此代码使用python,但是,如果python不是最佳语言,我可以使用其他任何语言
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(我具有intel核心i7)和其他BLAS实现,例如OpenBLAS,但是我无法获得任何有效的结果,并且无法通过大量的搜索使其工作,所以我的问题是是,计算两个矩阵的点积的最快方法是什么? (CPU和内存使用情况目前对我而言并不重要,但是,提高效率会很好)
PS:
我正在尝试不使用任何外部库(例如python中的numpy)来完成所有这些工作
纯粹出于我对代码和计算机的了解和理解,我试图创建一个具有多个矩阵函数的数组/矩阵类,然后将其用于需要矩阵的任何项目中……
[如果可能,您可以使用CUDA利用GPU进行非常快速的计算。