我正在尝试使用doSMP,当我尝试时w <- startWorkers(4),我得到了错误
1:在startWorkers(workerCount = 4)中:
有一个使用doSMP1的现有doSMP会话
(实际上是doSMP1,... doSMP8).现在,当我尝试删除它时,rmSessions('doSMP1')我收到错误消息
试图删除qnames:doSMP1
无法删除队列:doSMP1
有关如何使其工作的任何建议.在我的8核机器上,doSNOW从版本2.11开始停止工作,我希望能够在本地并行处理,而无需将内容发送到Linux服务器.
我在8核机器上的WinXP 64位上运行R 2.12.1(32位).
doSMP实际上是为在Revolution构建中使用而开发的,并且在您的系统上相当繁重.根据我的经验,如果你不是非常非常小心你正在做什么,那么它可以很容易地崩溃.对于并行计算,我有更好的经验,包雪,降雪(基本上是雪的前端)和多核.
还要确保使用最新版本的R(2.12.2),因为doSMP的当前版本是针对2.12.2编译的.
如果您确实需要摆脱这些会话,可以尝试删除查看workers对象时指定的临时目录中的文件:
> w <- startWorkers(workerCount = 4)
> w
$taskq
<pointer: 0x05974f20>
$qname
[1] "doSMP1"
$workerCount
[1] 4
$tmpdir
[1] "C:\\Users\\JORISF~1\\AppData\\Local\\Temp\\RtmpXxLcTk\\doSMP44c815a1"
Run Code Online (Sandbox Code Playgroud)
你应该清楚这个目录.在记下临时文件后,首先停止当前工作程序,然后尝试删除所有会话:
stopWorkers(w)
rmSessions(all=TRUE)
Run Code Online (Sandbox Code Playgroud)
然后清理目录.然后重新启动R.有时它会在启动后仍然有剩余的会话运行,如果你startWorkers()再次使用,你会看到它.如果是这样,请先使用stopWorkers(w)而不先注册!然后再做rmSessions(all = TRUE).有时R会崩溃.按照此处的说明重启并继续.
最后,忘记doSMP并使用其他提到的包之一.如果您没有以前的经验,降雪会给您带来最少的麻烦.有一个很好的介绍在这里.
更新:从R2.14开始,你有内置的软件包parallel,它结合了multicore和的功能snow.