r - 并行大矩阵乘法

标签 r r-bigmemory

我需要将两个大矩阵AB相乘,如下所示:

library(bigmemory)
library(bigalgebra)
library(biganalytics)

A <- big.matrix( replicate(100,  rnorm(10^5)) )
B <- big.matrix( replicate(10^5, rnorm(100))  )
AB <- A %*% B

我如何并行计算这个乘法?

到目前为止我遇到的唯一教程是 this one :

> library("doRedis")
> registerDoRedis(queue="example")
> L = foreach(j=1:2,.packages="VAM",.combine=c) %dopar%
+ {
+ key = paste("X",j,sep="")
+ ridx = ((j-1)*5 + 1):min((j*5),nrow(A))
+ X = A[ridx,] %*% B[,]
+ Y = as.big.matrix(X,backingfile=key)
+ vnew(Y, key)
+ key
+ }
> X = vam(matrix(L,nrow=2))
> sum(X[,] - A[,] %*% B[,])
[1] 0

但我不知道如何将其付诸实践。可能还有更简单/更有效的方法来达到相同的结果?

最佳答案

安装 Microsoft R Open,我从 3 秒缩短到 0.1 秒!

library(bigmemory)
library(bigalgebra)

N <- 200
M <- 1e5

A <- big.matrix(N, M, init = rnorm(N * M))
B <- big.matrix(M, N, init = rnorm(N * M))
system.time(AB <- A %*% B)

Change the version of R you use in RStudio settings (need to quit RStudio afterwards)

关于r - 并行大矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52274045/

相关文章:

r - 如何在 Windows 操作系统上安装 BigMemory 和 bigrf

data.table `setkey()` 的逆序

Jupyter Notebook 中的 R 返回以下错误 : `ERROR while rich displaying an object:`

R bigmemory 总是使用后备文件?

r - 使用大内存在 R 中处理大于物理 RAM 的数据?

c - R包开发: how to check whether the type of SEXP is "big.matrix"?

r - 根据最近的日期合并数据 R

根据向量的第一个字符在 R 中重新编码变量

r - 将因子转换为多列的日期类

r - R中的并行foreach共享内存