c - C代码中的矩阵乘法

标签 c optimization matrix matrix-multiplication

我有一个代码需要做一些矩阵乘法,例如

    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/

相关文章:

c++ - CPP预处理器到C预处理器的转换问题

algorithm - 这个问题是NP难的吗?

r - 如何提取(几乎)完全由 NaN 组成的行和列?

android - 通过低功耗蓝牙从设备发送到 Android 应用程序的数据格式

c++ - 如何检查我们是否在 SQLite 中的事务中?

C - 如何将数组从文件存储到结构

javascript - 缩小 ASP.NET 生成的 Javascript 的最佳方法是什么?

css - 通过 Node 构建工具删除动态站点中未使用的 CSS

c - 如何转置存储为 C 1D 数组的 2D 矩阵

java - 矩阵没有插入所有组合?