我的问题的基本目标是如何使用R
包在Matrix
中实现矩阵运算的最佳性能。特别是我希望并行化操作(乘法)并使用CUDA GPU上的计算来处理稀疏矩阵。
详情
根据Matrix
R cran
包的文档
矩阵类的丰富层次结构,包括三角形,对称矩阵和对角矩阵,密集和稀疏以及模式,逻辑和数字条目。这些矩阵的众多方法和操作,使用' LAPACK'和' SuiteSparse'库。
似乎感谢SuiteSparse
我应该能够使用GPU(CUDA)对稀疏矩阵执行基本操作。特别是SuiteSparse的文档列出了以下内容:
SSMULT和SFMULT:稀疏矩阵乘法。
在我的Gentoo上,我安装了suitesparse-4.2.1
和suitesparseconfig-4.2.1-r1
。我还有lapack
,scalapack
和blas
。 R sessionInfo()
如下所示:
R version 3.4.1 (2017-06-30)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Gentoo/Linux
Matrix products: default
BLAS: /usr/lib64/blas/reference/libblas.so.0.0.0
LAPACK: /usr/lib64/lapack/reference/liblapack.so.0.0.0
locale:
[1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_GB.UTF-8 LC_COLLATE=en_GB.UTF-8
[5] LC_MONETARY=en_GB.UTF-8 LC_MESSAGES=en_GB.UTF-8
[7] LC_PAPER=en_GB.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] Matrix_1.2-10
loaded via a namespace (and not attached):
[1] compiler_3.4.1 grid_3.4.1 lattice_0.20-35
我还设置了环境变量:
export CHOLMOD_USE_GPU=1
我在一个论坛上发现并可能允许使用GPU。
基本上,当我运行一个简单的测试时,一切看起来都准备好了:
library(Matrix)
M1<-rsparsematrix(10000,10000,0.01)
M<-M1%*%t(M1)
似乎GPU无效,好像R
忽略了suitesparse
功能。
我知道问题非常广泛,但是:
R
以使用suitesparse
? Matrix
包使用所有共享库进行并行化和稀疏操作(使用GPU)?Matrix
包在CUDA / GPU计算上运行矩阵运算吗?据我浏览过堆栈和其他论坛,这个问题不应该是重复的。