我刚刚发现SparseBLAS包含在OSX的OSX的Accelerate
框架中。
% ls -l /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A
total 25360
drwxr-xr-x 5 root wheel 170 May 18 09:49 Resources/
drwxr-xr-x 3 root wheel 102 May 18 09:49 _CodeSignature/
-rwxr-xr-x 1 root wheel 5115440 May 5 08:00 libBLAS.dylib*
-rwxr-xr-x 1 root wheel 13518752 May 5 08:00 libLAPACK.dylib*
-rwxr-xr-x 1 root wheel 254240 May 5 08:00 libLinearAlgebra.dylib*
-rwxr-xr-x 1 root wheel 334128 May 5 08:00 libSparseBLAS.dylib*
-rwxr-xr-x 1 root wheel 3715824 May 5 08:00 libvDSP.dylib*
-rwxr-xr-x 1 root wheel 2602304 May 5 08:00 libvMisc.dylib*
-rwxr-xr-x 1 root wheel 50320 May 5 08:07 vecLib*
我试图找出是否可以使用它来优化我的计算,但是关于这个主题的信息几乎没有。
我发现的唯一明智的代码是this question,但包含Accelerate.h
标题并不足以找到稀疏的例程,例如BLAS_duscr_begin
,问题
要清楚,我在Apple的official Accelerate Framework中找不到对 sparse-anything 的任何引用。
关于这个主题的运气好吗?
答案 0 :(得分:2)
我没有发现任何迹象表明SparseBLAS存在于Accelerate Framework中。
但如果您接受其他选项,我建议使用MKL,现在可以免费为所有用户使用。
https://software.intel.com/en-us/articles/free-mkl
如果您接受一些性能损失并希望让您的生活更轻松,您可以使用Eigen。
http://eigen.tuxfamily.org/index.php?title=Main_Page
或Eigen与MKL支持。尽管MKL只会加速密集矩阵运算,但使用Eigen作为容器仍然是好事。
https://eigen.tuxfamily.org/dox/TopicUsingIntelMKL.html
在MKL链接线顾问的帮助下
https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor
你可以使用带有clang编译器的线程MKL。
请注意,线程MKL需要Intel OpenMP支持并不意味着您需要一个支持OpenMP的编译器,因为您不会尝试在代码中使用#pragma omp
。
答案 1 :(得分:2)
#include <veclib/Sparse/BLAS.h>
看到内在的奇迹!
https://developer.apple.com/videos/play/wwdc2015/712/ Luke Chang