我正在群集上运行大规模模拟。代码工作得很好,但偶尔出现意外错误,如上图所示:“一个节点产生错误:2个参数传递给'&'这需要2 “。有没有人知道这可能指向什么?
背景:代码在使用MPI worker R 3.2.2的集群上并行运行。因此,我看到的错误消息不包括任何行号或任何进一步的信息。这些也可能需要数百小时的cpu时间才能复制。我用'&'在我的代码中,它被送到MPI工作者的两个地方:
inRange <- (sim[1] <= nS) & (sim[2] <= nD) & (sim[3] <= nSF) & (sim[4] <= nDF)
和
if((S < dim(pr)["S"]) & (D < dim(pr)["D"]) &
(SF < dim(pr)["SF"]) & (DF < dim(pr)["DF"])) { ...
此处引用的所有变量均由每个MPI工作人员在本地计算。 我认为这可能与MPI通信问题有关,但我无法想象如何......
我已将我的代码的可疑部分包裹到try()
- 块中,但到目前为止我还没有抓到任何东西。我还将输出重定向到特定于工作程序的文件,但是在输出大量调试信息时,我担心会有太多的性能损失。