Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R 2.11 Windows 64位中使用SNOW进行并行处理不太有效_R_Parallel Processing - Fatal编程技术网

在R 2.11 Windows 64位中使用SNOW进行并行处理不太有效

在R 2.11 Windows 64位中使用SNOW进行并行处理不太有效,r,parallel-processing,R,Parallel Processing,我在一台有8个处理器的WinXP64机器上运行R 2.11 64位。对于R 2.10.1,以下代码生成了6个用于并行处理的R进程: require(foreach) require(doSNOW) cl = makeCluster(6, type='SOCK') registerDoSNOW(cl) bl2 = foreach(i=icount(length(unqmrno))) %dopar% { (Some code here) } stopCluster(cl) 当我在R2.1

我在一台有8个处理器的WinXP64机器上运行R 2.11 64位。对于R 2.10.1,以下代码生成了6个用于并行处理的R进程:


require(foreach)
require(doSNOW)
cl = makeCluster(6, type='SOCK')
registerDoSNOW(cl)
bl2 = foreach(i=icount(length(unqmrno))) %dopar% {
    (Some code here)
}
stopCluster(cl)
当我在R2.11Win64中运行相同的代码时,6R进程没有生成,代码挂起。我想知道这是否是SNOW端口到2.11-64位的问题,或者我是否需要任何额外的代码。谢谢


顺便说一句,这在我家的多核机器上运行很好,运行Ubuntu Karmic 64位和R2.11。不幸的是,我必须在Win64上工作

代码似乎在这里工作

R version 2.11.0 (2010-04-22) 
x86_64-pc-mingw32 
other attached packages:
[1] doSNOW_1.0.3    snow_0.3-3      foreach_1.3.0   codetools_0.2-2
[5] iterators_1.0.3
loaded via a namespace (and not attached):
[1] tools_2.11.0

检查sessionInfo()以确保您的版本与我的版本匹配。我注意到的一点是,在我的Windows7计算机上,第一次尝试makeCluster时请求防火墙异常。如果您没有明确考虑套接字通信,这可能就是它挂起的原因。在私有配置文件下运行时,它打开的默认端口(虽然很难看)是所有TCP和UDP端口。

这是一个老问题,但我在Win 64位上遇到了与R-2.13.1 64相同的问题

doSNOW在使用r32位时工作正常,但在使用r64位时工作不正常,并且挂起在“cl=makeCluster(6,type='SOCK')”处

为了解决这个问题,我最终在%PATH%环境变量(win+pause/advanced system settings/advanced/environment variables/system variables)中添加了“C:\Program Files\R\R-2.13.1\bin\x64”。还要确保允许Windows防火墙中的R连接,并且C:\Program Files\R\R-2.13.1\bin包含R.exe和Rscript.exe的32位版本(而不是x64版本)的副本


执行此操作后,当运行makeCluster()时,将启动12个进程,6个32位和6个64位,但在计算过程中仅使用64位。

为了澄清:您的R-2.10.1是64位吗?如果没有:您对R-2.11 32位有相同的问题吗?没有64位windows版本的R-2.10:)我应该检查R-2.11 32位。谢谢我刚查过;makeCluster命令也挂起在32位R-2.11上。这可能是身份验证问题吗?在Linux上,我总是首先检查是否可以通过
ssh
在节点上执行
w
uptime
之类的命令。这是否已循环?我有R 2.11.1(W7 32位)和doSNOW_1.0.3 snow_0.3-3 foreach_1.3.0 codetools_0.2-2迭代器_1.0.3以及我的R控制台“挂起”。虽然已经开始讨论R-hpc列表,但还没有。我会检查。防火墙例外应该不是问题,因为它在2.10版本中在同一台机器上工作。你确定你有6个内核吗?我有4个线程,如果我打开超线程,我会在Windows任务管理器中获得8个“线程”。。。我一直在使用并行计算,但我从来没有超过4个内核(请参阅)。