如何在R中划分向量,使块的总和相同
我正在尝试优化一些R代码,以便在一个非常大的矩阵中计算欧几里德距离(大于dist允许的范围)。为了加快这个过程,我将发送矩阵的哪一列,以使用doParallel计算矩阵的colSums。 然而,当给定矩阵的最后一列非常小时,并行化效率很低。因此,我试图通过将计算划分为数量大致相同的段来优化代码。理想情况下,我会将其除以,这样从1到nCols的向量之和具有相同的和,但这是一个NP复杂问题。有没有其他方法可以得到类似的结果 我的代码如下:如何在R中划分向量,使块的总和相同,r,parallel-processing,R,Parallel Processing,我正在尝试优化一些R代码,以便在一个非常大的矩阵中计算欧几里德距离(大于dist允许的范围)。为了加快这个过程,我将发送矩阵的哪一列,以使用doParallel计算矩阵的colSums。 然而,当给定矩阵的最后一列非常小时,并行化效率很低。因此,我试图通过将计算划分为数量大致相同的段来优化代码。理想情况下,我会将其除以,这样从1到nCols的向量之和具有相同的和,但这是一个NP复杂问题。有没有其他方法可以得到类似的结果 我的代码如下: library(doParallel) ncores &l
library(doParallel)
ncores <- 140
cl<-makeCluster(ncores)
registerDoParallel(cl)
#number of samples
samples <- 10000
#number of markers
markers <- 160000
#input markers matrix
A <- matrix(1:5, ncol=samples,nrow=markers, byrow=T)
btime <- system.time(
bresult<-foreach(x=1:(ncol(A)-1),.combine="c",.multicombine=T,.inorder=T) %dopar% {
colSums(as.matrix(A[,x]-A[,(x+1):ncol(A)])^2,na.rm = T)
}
)
库(双并行)
ncores哪个代码是Alex?在上面的链接中。你可能也想要,艾德克