使用GPU的Armadillo (+BLAS)

9

能否使用GPU运行armadillos计算?是否有办法使用GPU的blas库(例如cuBLAS)与armadillo一起使用?需要注意的是,我完全是新手,对GPU编程一窍不通。

3个回答

22
当前被接受的答案已经过时。随着CUDA 6的推出(目前处于发布候选状态),有一个真正的即插即用替代品叫做NVBLAS,它负责GPU交互,并且可以与armadillo一起使用。您可以通过链接程序到libnvblas.so来使用NVBLAS。但是,并非所有的BLAS方法都可用,因此您必须指定一个备用的BLAS库(例如openblas)。更多详情请参见https://developer.nvidia.com/cublasxt

0

我终于在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库之类的错误。


0

不,它不是。

你不能拿 CPU 的代码并假设它可以在 GPU 上运行,因为两者具有完全不同的内存模型、硬件、编程风格等等。


正如其他答案和常见问题解答中所提到的,您可以使用NVBLAS或ACML:http://arma.sourceforge.net/faq.html - damio
请记住,我在2013年8月写下了这个答案;自那以后已经发布了数十个Armadillo(和CUDA!!)版本。 - Dirk Eddelbuettel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接