从问题的性质上可以看出,我是r编程的新手。我试图利用列车功能的并行计算能力。
library(parallel)
#detects number of cores available to use for parallel package
nCores <- detectCores(logical = FALSE)
cat(nCores, " cores detected.")
# detect threads with parallel()
nThreads<- detectCores(logical = TRUE)
cat(nThreads, " threads detected.")
# Create doSNOW compute cluster (try 64)
# One can increase up to 128 nodes
# Each node requires 44 Mbyte RAM under WINDOWS.
cluster <- makeCluster(128, type = "SOCK")
class(cluster);
我需要有人来帮助我解释此代码。最初makeCluster()
的第一个参数具有nthreads,但是在运行
nCores <- detectCores(logical = FALSE)
我了解到我有4个线程可用。我根据指南中提供的消息更改了值。这将使我能够同时同时运行火车功能的128次迭代吗?如果是这样,那么首先获得计算机的线程和核心数有什么意义?
答案 0 :(得分:0)
您要做的是首先检测您拥有的内核数量。
nCores <- detectCores() - 1
大多数情况下,人们加负1以确保您还有一个核心可以做其他事情。
cluster <- makeCluster(nCores)
这将设置您希望代码在其上运行的群集数量。有几种并行方法(doParallel,parApply,parLapply,foreach等)。 根据您选择的并行方法,将在您创建的一个特定群集上运行一种方法。
我在我的代码中使用过的小例子
no_cores <- detectCores() - 1
cluster <- makeCluster(no_cores)
result <- parLapply(cluster, docs$text, preProcessChunk)
stopCluster(cluster)
我还看到你在用袜子。不确定“ type = SOCK”是否有效。 我总是使用“ type = PSOCK”。 FORK也存在,但这取决于您使用的操作系统。
FORK: "to divide in branches and go separate ways"
Systems: Unix/Mac (not Windows)
Environment: Link all
PSOCK: Parallel Socket Cluster
Systems: All (including Windows)
Environment: Empty