在这两种情况下,我都使用所有默认选项从源代码编译了GSL和OpenBLAS。我的GSL库安装在/ usr / local / lib中,而OpenBLAS安装在/ opt / OpenBLAS / lib中。如何在C++中将OpenBLAS与GSL一起使用?
我这样做的主要原因是因为OpenBLAS利用了Atlas在默认配置中没有的所有内核。我的主要目的是将两个大型矩阵(10000 x 10000)相乘并执行2D卷积。有没有更好的替代品来替代OpenBLAS或GSL?
我在用:
我一直在使用OpenBLAS在Octave中进行相同的实验。使用C++是否可以显着提高性能?
最佳答案
我将使用现有的线性代数库,例如Armadillo。 AFAIK它包装了您的BLAS实现以进行矩阵乘法。我喜欢它,因为它为您提供了与Matlab或Octave中非常相似的语法。
其他线性代数库(例如Eigen)也可以完成这项工作。
但是,只要对底层库的调用保持不变,我不希望它们的性能(大大)优于Octave或Matlab。还要 checkout why matlab is so fast和how armadillo is parallelized。
关于c++ - 在GSL中使用OpenBLAS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36209907/