我可以将armadillo链接到clBLAS,以在macOS上使用AMD GPU吗?
我已经使用armadillo一年多了,通过CUDA库,使用NVidia GPU链接到libnvblas毫无问题。但是nvidia卡在macOS上越来越难,所以我刚买到Radeon RX580。我试图通过clBLAS使用它。我已经尝试了macports clBLAS安装,并从源代码构建它。当我从源代码构建时,所有clBLAS测试都成功运行。
但是当我使用
编译简单的犰狳代码时g++-mp-6 speedtest.cpp -o speedtest_gpu -O2 -I ../include -DARMA_DONT_USE_WRAPPER -L/opt/local/lib -lclblas -llapack
我知道
Undefined symbols for architecture x86_64:
"_zgemm_", referenced from:
void arma::glue_times_redirect2_helper<false>::apply<arma::Mat<std::complex<double> >, arma::Mat<std::complex<double> > >(arma::Mat<arma::Mat<std::complex<double> >::elem_type>&, arma::Glue<arma::Mat<std::complex<double> >, arma::Mat<std::complex<double> >, arma::glue_times> const&) in cc5i4IPr.o
_main in cc5i4IPr.o
,以及_zgemv_
的类似错误。当我查看libclBLAS.dylib
时,看不到_zgemm_
,就像我在libnvblas或libblis中一样,它们都可以成功编译。
使用
进行编译g++-mp-6 speedtest.cpp -o speedtest_gpu -O2 -I ../include -DARMA_DONT_USE_WRAPPER -L/opt/local/lib -lclblas -lblas -llapack
可以工作,但是它可以在CPU上运行,而不是在GPU上运行。
(当我拥有nvidia卡
g++-mp-6 speedtest.cpp -o speedtest_gpu -O2 -I ../include -DARMA_DONT_USE_WRAPPER -L/Developer/NVIDIA/CUDA-9.2/lib -lnvblas -lblas -llapack
工作正常并在nvidia GPU上运行。)
答案 0 :(得分:0)
答案是:否:clblas不提供与blas兼容的API。但是CLBlast(https://github.com/CNugteren/CLBlast)确实提供了非常接近blas的API,并且编写具有与nvidia的nvblas相同功能并在AMD GPU上运行的包装器并不难。