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

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

我在用:

  • Linux Mint 17.2
  • GCC版本4.8.4
  • 20核心Intel CPU

  • 我一直在使用OpenBLAS在Octave中进行相同的实验。使用C++是否可以显着提高性能?

    最佳答案

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

    其他线性代数库(例如Eigen)也可以完成这项工作。

    但是,只要对底层库的调用保持不变,我不希望它们的性能(大大)优于Octave或Matlab。还要 checkout why matlab is so fasthow armadillo is parallelized

    关于c++ - 在GSL中使用OpenBLAS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36209907/

    10-11 18:48