언어/R

parallel

newlibra 2023. 4. 14. 23:37

# Generate data
data <- 1:1e9
data_list <- list("1" = data,
                  "2" = data,
                  "3" = data,
                  "4" = data)
# Single core
#time_benchmark <- system.time(lapply(data_list, mean))
  
library(parallel)
# Detect the number of available cores and create cluster
cl <- parallel::makeCluster(detectCores())
# Run parallel computation
time_parallel <- system.time(
  parallel::parLapply(cl,
                      data_list,
                      mean)
)
# Close cluster
parallel::stopCluster(cl)

 

 

#foreach
library(doParallel)
library(parallel)
library(foreach)
data <- 1:1e9
data_list <- list("1" = data,
                  "2" = data,
                  "3" = data,
                  "4" = data)

# Detect the number of available cores and create cluster
cl <- parallel::makeCluster(detectCores())
# Activate cluster for foreach library
doParallel::registerDoParallel(cl)
time_foreach <- system.time({
  r <- foreach::foreach(i = 1:length(data_list),
                        .combine = rbind) %dopar% {
                          mean(data_list[[i]])
                        }
})
time_foreach[3]
# Stop cluster to free up resources
parallel::stopCluster(cl)