R中的矩阵运算:并行化,稀疏运算,GPU计算

时间:2017-11-27 19:07:45

标签: r matrix cuda sparse-matrix suitesparse

我的问题的基本目标是如何使用R包在Matrix中实现矩阵运算的最佳性能。特别是我希望并行化操作(乘法)并使用CUDA GPU上的计算来处理稀疏矩阵。

详情

根据Matrix

中的R cran包的文档
  

矩阵类的丰富层次结构,包括三角形,对称矩阵和对角矩阵,密集和稀疏以及模式,逻辑和数字条目。这些矩阵的众多方法和操作,使用' LAPACK'和' SuiteSparse'库。

似乎感谢SuiteSparse我应该能够使用GPU(CUDA)对稀疏矩阵执行基本操作。特别是SuiteSparse的文档列出了以下内容:

  

SSMULT和SFMULT:稀疏矩阵乘法。

在我的Gentoo上,我安装了suitesparse-4.2.1suitesparseconfig-4.2.1-r1。我还有lapackscalapackblas。 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计算上运行矩阵运算吗?

据我浏览过堆栈和其他论坛,这个问题不应该是重复的。

0 个答案:

没有答案