1

在这两种情况下,我使用所有默认选项从源代码编译 GSL 和 OpenBLAS。我的 GSL 库安装在 /usr/local/lib 中,OpenBLAS 安装在 /opt/OpenBLAS/lib 中。如何在 C++ 中将 OpenBLAS 与 GSL 一起使用?

我这样做的主要原因是因为 OpenBLAS 使用了 Atlas 在默认配置中没有的所有内核。我的主要目标是将两个大矩阵 (10000 x 10000) 相乘并执行 2D 卷积。有没有更好的替代 OpenBLAS 或 GS​​L 的方法?

我在用:

  • Linux Mint 17.2
  • GCC 版本 4.8.4
  • 20 核英特尔 CPU

我一直在用 OpenBLAS 在 Octave 中做同样的事情。使用 C++ 会显着提高性能吗?

4

1 回答 1

2

我会使用现有的线性代数库,例如Armadillo。AFAIK 它包装了矩阵乘法的 BLAS 实现。我喜欢它,因为它为您提供了与 Matlab 或 Octave 中的语法非常相似的语法。

像 Eigen 这样的其他线性代数库也可以完成这项工作。

但是,只要对底层库的调用保持不变,我不希望它们比 Octave 或 Matlab 表现更好(很多)。还要检查为什么 matlab 这么快以及犰狳是如何并行化的

于 2016-03-25T00:47:56.120 回答