我有一个代码需要做一些矩阵乘法,例如
ML2=ML+uMc+c1+c2
MC2=v*ML+(u*v+1)*Mc+c2
其中ML是MXM矩阵
ML=[1 1 1 1....1;2 2 2 2...2......;M M M.....M]
MC=[1 2 3 4 ...M;1 2 3 4...M......;1 2 3.....M]
u、v、c1和c2是8位常数。
我想使用任何快速库在快速执行时间内找到 ML2、MC2 的值
最佳答案
您没有说明您想要的平台,但对于矩阵运算来说,没有什么比适用于 Intel CPU 的 Intel Math Kernel Library 更快的了
http://software.intel.com/en-us/intel-mkl
这与我所看到的 CPU 上可能出现的峰值触发器最为接近。然而,MKL 价格昂贵且封闭源代码。如果您想要一个好的开源免费替代方案,请查看 Eigen。这使用 C++,但我不知道你是否真的仅限于 C 代码。 Eigen 在其他硬件上也能很好地工作,例如 AMD(英特尔在 AMD CPU 上削弱了它的库)和 ARM。
http://eigen.tuxfamily.org/index.php?title=3.0
第三种选择是你自己写一个。经过几周的努力,用 AVX 和 OpenMP 击败 Eigen 应该不会太困难(Eigen 仅支持 SSE),但击败 MKL 的可能性很小。
关于c - C代码中的矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17148589/