4

我已经在 Windows 7 上安装了 R(64 位)版本 2.11.1,并且还从“REvolution foreach windows bundle”打包了 doSMP 和 revoIPC 以进行并行处理。然后我将库 doSMP 上传到 R 并从 R 收到以下消息

> library(doSMP)
Loading required package: revoIPC
Error: package 'revoIPC' is not installed for 'arch=x64'

如何解决这个问题?似乎 doSMP 适用于 R 的 32 位分布,但不适用于 64 位分布。

我还测试了以下程序

------------------------------------------------------
require(doSMP)
workers <- startWorkers(4) # My computer has 2 cores
registerDoSMP(workers)

# create a function to run in each itteration of the loop
check <-function(n) {
 for(i in 1:1000)
 {
  sme <- matrix(rnorm(100), 10,10)
  solve(sme)
 }
}


times <- 10 # times to run the loop

# comparing the running time for each loop
system.time(x <- foreach(j=1:times ) %dopar% check(j))  #  2.56 seconds  (notice that the first run would be slower, because of R's lazy loading)
system.time(for(j in 1:times ) x <- check(j))  #  4.82 seconds

# stop workers
---------------------------------------------------------------------------

我从 R 收到以下消息

> workers <- startWorkers(4) # My computer has 2 cores
Error: could not find function "startWorkers"
> registerDoSMP(workers)
Error: could not find function "registerDoSMP"

非常感谢您的帮助。

托尼

4

3 回答 3

1

这是很久以前修复的,并且在最新的 64 位版本的 Revolution R v6.1 中运行良好。

下面的示例取自Parallel Multicore Processing with R (on Windows),在我的机器上运行良好,该机器在 Windows 7 x64 上运行 Revolution R v6.1 x64。

require(doSMP)
workers <- startWorkers(2) # My computer has 2 cores
registerDoSMP(workers)

# create a function to run in each itteration of the loop
check <-function(n) {
    for(i in 1:1000)
    {
        sme <- matrix(rnorm(100), 10,10)
        solve(sme)
    }
}


times <- 10 # times to run the loop

# comparing the running time for each loop
system.time(x <- foreach(j=1:times ) %dopar% check(j))  #  2.56 seconds  (notice that the first run would be slower, because of R's lazy loading)
system.time(for(j in 1:times ) x <- check(j))  #  4.82 seconds

# stop workers
stopWorkers(workers)

请注意,该软件包doSMP内置于 Revolution R 的核心构建中,因此您不必从 CRAN 安装它(因此,您不会在软件包列表中找到它)。您所要做的就是加载它require(SMP)。同样,该包parallel也内置于从 v2.14.0 开始的所有 R 版本中,使用require(parallel).

有关此示例的更多重要说明,请参阅完整的文章Parallel Multicore Processing with R (on Windows)

于 2013-03-02T00:23:41.130 回答
1

错误信息

Loading required package: revoIPC
Error: package 'revoIPC' is not installed for 'arch=x64'

非常明确:您正在运行 64 位 R,但您没有加载所需的所有子组件doSMP,特别revoIPC是缺少包。

如果您是 Revo 客户,请联系他们。如果没有,那么也许您需要考虑 R 的不同并行计算解决方案。

于 2010-11-27T04:51:21.137 回答
0

在 Revolution R 安装文件夹中有一个不错的 .pdf 文档,位于Start..All Programs..Revolution R..Documentation..foreach and iterators - User's Guide. 该文档描述了在运行 Windows 时如何在 R 中并行化任务。以下是它涵盖的主题:

Parallelizing Loops
1.1 Using foreach
1.2 Parallel Backends
1.2.1 Using the doMC parallel backend
1.2.2 Using the doParallel parallel backend 
1.2.3 The doSMP parallel backend
1.2.4 Getting information about the parallel backend 
1.3 Nesting Calls to foreach 
1.4 Using Iterators
1.4.1 Some Special Iterators
1.4.2 Writing Iterators
于 2013-03-02T00:22:03.907 回答