当前位置: 首页 > 知识库问答 >
问题:

R并行makeCluster()无限地挂在Mac上

訾高明
2023-03-14
cl = makeCluster(2) # Using 2-core parallel as an example
# Your parallel code
stopCluster(cl)

当我运行这段代码时,cl=makeCluster(2)无限挂起。我试图解决它,但失败了。我还提到了其他一些帖子。几个潜在的原因包括内存不足、安装错误等。它们似乎不是这里的问题,因为我重新启动了会话,重新安装了R,但问题仍然存在。

我猜问题是关于R试图连接到核心时的权限。这是我发现的。我使用Future包查看连接到内核的具体过程。附件是代码及其返回。

cl <- future::makeClusterPSOCK(2, verbose = TRUE)

工作线程:[n=2]“localhost”,“localhost”基本端口:11303创建2的节点1....-在“localhost”上设置节点启动工作线程#1:“/library/frameworks/r.framework/resources/bin/rscript”--默认包=DataSets、utils、grDevices、graphics、graphics、stats,methods-e“paralle:::.slaversock()”master=localhost端口=11303 out=/dev/null

问题是本地主机永远不会连接回来...

以下是我的会话信息。我希望这能有所帮助。

矩阵产品:默认值。
blas://system/library/frameworks/frameworks/accelerate.framework/a/frameworks/versions/3.5/resources/lib/librappack.dylib

区域设置:
[1]en_us.utf-8/en_us.utf-8/en_us.utf-8/C/en_us.utf-8/en_us.utf-8

附加的基包:
[1]统计图形grDevices utils数据集方法基

有趣的是,同样的代码在我的旧Mac机器上工作(同样的操作系统,但硬件更旧)。我不知道这里发生了什么。任何帮助都很感激!谢了!

共有1个答案

施梓
2023-03-14

几个潜在的原因包括内存不足、安装错误等。它们似乎不是这里的问题,因为我重新启动了会话,重新安装了R,但问题仍然存在。

正确的,这些类型的问题不应该在这里涉及。您所展示的调用使用了R的基本内置功能(主要来自“parallel”包),并且很少使用内存。

我猜问题是关于R试图连接到核心时的权限。[...]

> cl <- future::makeClusterPSOCK(1, outfile = NULL, verbose = TRUE)
Workers: [n = 1] ‘localhost’
Base port: 11306
Creating node 1 of 1 ...
- setting up node
Starting worker #1 on ‘localhost’: '/usr/lib/R/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11306 OUT= TIMEOUT=2592000 XDR=TRUE
Waiting for worker #1 on ‘localhost’ to connect back
starting worker pid=7608 on localhost:11306 at 14:46:57.827
Connection with worker #1 on ‘localhost’ established
- assigning connection UUID
- collecting session information
Creating node 1 of 1 ... done
 类似资料:
  • 尝试加载xlsx包失败: R配置:

  • 因此,我正在运行Sierra,当我在终端输入“r”或“r”时,我得到“-bash:r:command not found”。如果我在终端中键入“which r”,我不会得到任何输出。 以下是“echo$path”的输出:/versions/2.7/bin://usr/local/bin://bin://bin://sbin://sbin://sbin://users/samuelcolon/.rv

  • 我正在读这个pdf文件(https://www.accessdata.fda.gov/cdrh_docs/pdf14/K141693.pdf)我遵循着SO的这些建议 使用pyPdf打开pdf URL 我实际上已经在本地下载了该文件,并且正在运行以下代码 但是我的代码无限期地挂着。我正在运行Python 2.7,这里是stackTrace。 文件“”,第1行,在runfile('C:/PoC/pdf

  • 我已经在我的Windows7机器上设置了一个本地spark集群(一个主节点和辅助节点)。我已经创建了一个简单的scala脚本,我用sbt构建了这个脚本,并尝试用Spark-Submit运行这个脚本。请参阅以下资源 Scala代码: 现在,我用sbt构建并打包scala代码,并将其打包到一个JAR中。我的build.sbt文件如下所示 它创建一个jar,我使用spark submit命令提交它,如下

  • 我正在尝试在我的R Studio中安装“XLSX”库。但是由于我没有安装“rjava”,所以安装没有通过。 不,当我在mac上安装jdk后尝试安装“rjava”时,我仍然得到相同的错误,下面是两个库的错误。

  • 问题内容: 为什么下面的代码不输出任何输出,而如果我们删除parallel,则输出0、1? 尽管我知道理想情况下应该将限制放在不同的位置,但是我的问题与添加并行处理导致的差异更多有关。 问题答案: 真正的原因是 有序并行 是完整的屏障操作,如文档中所述: 保持并行管道的稳定性是相对昂贵的(要求操作充当一个完整的屏障,并具有大量缓冲开销),并且通常不需要稳定性。 “完全屏障操作”是指必须先执行所有上