performance - 提高标准矩阵乘法算法的效率?

标签 performance algorithm matrix

如何提高标准矩阵乘法算法的效率?

该方法涉及的主要操作是:C[i][j]+=A[i][p]*B[p][j]

可以做些什么来提高算法的效率?

最佳答案

您可能想看看使用 BLAS(基本线性代数子例程)库,特别是英特尔提供的 MKL here , AMD 有他们的 ACML here还有(开源)Goto BLAS here .

(密集)矩阵-矩阵乘法内核将是一个 ?GEMM 调用,其中 ? 表示浮点类型。例如 DGEMM 将调用 double 例程。

除非您非常有信心知道自己在用低级优化做什么,否则这些库可能会提供比您可以手动编写的代码更好的性能。

如果您确实想尝试自己编写代码,那么您可能需要考虑以下几点:

  1. 使用“向量”指令。 SSE、SSE2..4 指令得到广泛支持,一些较新的 CPU 也将支持 AVX 指令。
  2. 展开嵌套循环以最大化浮点运算与加载/存储运算的比率。
  3. block 级算法以确保有效的缓存使用。
  4. 多线程。

此引用资料可能会让您了解当前的状态:

High-performance implementation of the level-3 BLAS - K Goto.

希望这对您有所帮助。

关于performance - 提高标准矩阵乘法算法的效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6900711/

相关文章:

R - 具有不同列的矩阵的总和列表

python - 组合矩阵 - numpy

java - 垃圾回收会改变Java中的对象地址吗?

c++ - 对整个范围进行排序时,std::partial_sort() 与 std::sort() 的性能对比?

javascript - 将整数转换为罗马数字 - 一定有更好的方法

c++ - 关于行列式计算的一段代码问题

mysql - 如何加快 MySQL 表连接

c# - 在 C# 中通过在运行时创建的对象最小化 RAM 的使用

c - 不使用 % 和/运算符的 5 的整除率

algorithm - 寻找 2 变量函数的解决方案