是否可以使用GPU运行armadillos计算?有没有办法将GPU blas库(例如cuBLAS)与armadillo一起使用?只是需要注意的是,我对GPU编程完全陌生。
当前接受的答案已过时。与CUDA 6配合使用(目前处于候选发布状态),有一个真正的替代品NVBLAS,它负责GPU交互,也可以与armadillo组合使用。您可以通过将程序链接到libnvblas.so 来使用NVBLAS
但是,并不是所有的BLAS方法都可用,所以您必须指定一个回退BLAS库(如openblas)。
有关更多详细信息,请参阅https://developer.nvidia.com/cublasxt
不,不是。
您不能接受cpu的代码,并假设它在gpu上运行,因为两者具有完全不同的内存型号、硬件、编程风格等。
我终于在Ubuntu 20.04上找到了一个使用Cmake和CUDA的快速方法。
安装CUDA
根据官方指导,这似乎非常困难,但在Ubuntu 20上使用apt
运行良好。
sudo apt install nvidia-cuda-toolkit
在此之后,不要忘记根据文档设置环境变量NVBLAS_CONFIG_FILE
。除了更改CPU BLAS库外,网站上的默认内容将执行其他操作。对我来说,libopenblas.a
不起作用,应该设置为libopenblas.so.0
。
使用Cmake编译Armadillo
手动安装对我来说似乎很复杂,所以我只是对cmake
的安装方法进行了一些调整。
cmake . -Dopenblas_LIBRARY=<PATH TO NVBLAS LIB>/libnvblas.so
使用Armadillo编写代码
cmake
项目没有什么不同,也不需要额外的编译标志,因为它们都是在编译Armadillo库时设置的。
如果出现任何错误,日志文件(默认情况下为nvblas.log
)将提供一些信息。可能是因为无法打开CPU BLAS库。