복잡한 foreach
루프를 parLapply
함수 로 변환해야 합니다.
간단하게하기 위해 다음 foreach
루프를 사용합니다 .
library(foreach)
library(doParallel)
number_of_cores <- 8
clusters <- 8
doParallel::registerDoParallel(clusters)
m <- foreach(i=1:1000) %dopar% {matrix(rnorm(500*500), ncol=50000); NULL}
이 일반 설정을 사용하십시오. 재현성을 위해 일반 시드를 사용하고, 라이브러리를 내보내고, 변수 및 함수와 같은 객체를 클러스터로 내보내는 데 필요한 요구 사항에 대해 조금 자세히 설명합니다.
seed <- 42 ## define seed
R <- 3 ## No. repetitions
nr <- 3 ## define no. rows
nc <- 2 ## define no. columns
my_fun <- matrix ## define custom function
library(parallel)
cl <- makeCluster(detectCores() - 1) ## register cluster (usually one less)
clusterSetRNGStream(cl, seed) ## set seed
# clusterEvalQ(cl, library(foo)) ## export a library
clusterExport(cl, c("nr", "nc", "my_fun")) ## export variables and functions
r <- parLapply(cl=cl, X=1:R, fun=function(i) {
my_fun(rnorm(nr*nc), ncol=nc)
})
stopCluster(cl) ## stop cluster
r
# [[1]]
# [,1] [,2]
# [1,] -0.93907708 -0.4393582
# [2,] -0.04167943 -0.3140354
# [3,] 0.82941349 -2.1290236
#
# [[2]]
# [,1] [,2]
# [1,] 0.001100034 -0.3119474
# [2,] 1.763058291 0.6948795
# [3,] -0.166377859 0.3541931
#
# [[3]]
# [,1] [,2]
# [1,] -1.1378621 1.0303683
# [2,] -1.5197576 -0.9458347
# [3,] -0.9198612 -1.3057289
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다