Armadillo (+BLAS) using GPU



是否可以使用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库。

最新更新