3

似乎forkMac OS 10.6.8. 该算法是用 R 编码的,我主要使用foreach包进行并行处理。代码在顺序运行(foreach%do%)时运行良好,但在并行运行时(foreach%dopar%)运行良好,即使并行运行的进程不通信。

foreach一个月前我在同一台机器上使用过,它运行良好。在此期间已执行操作系统的更新。

错误信息

我收到了几种几乎随机出现的错误消息。此外,错误取决于代码是从终端运行(通过在R环境中复制粘贴或使用R CMD BATCH)还是从 R 控制台运行。

在终端上运行时,我得到

Error in { : task 1 failed - "object 'dp' not found"

在 R 控制台上运行时,得到

The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
....
<repeated many times when run on the R console>

或者

Error in { : task 1 failed - "object 'dp' not found"

使用完全相同的代码!请注意,尽管第二条错误消息与终端上收到的相同,print()但屏幕上(通过函数)打印的内容数量却大不相同!

我试过的

  • 我更新了软件包foreach,还重新启动了计算机,但这并没有太大帮助。

  • 我尝试了print几乎所有我能做的事情,但最终很难跟踪这个算法在做什么。例如,它经常通过关于丢失对象的错误而没有在调用对象之前的行dp执行语句。printdp

  • 我尝试使用%dopar%但只注册了 1 个 CPU。终端上的输出没有变化,但在控制台上发生了变化。现在控制台给出了完全相同的错误,与终端同时出现。

  • 当我要求多个 CPU 时,我确保使用了多个 CPU。

  • 我尝试使用mclapply代替foreachregisterDoMC()代替registerDoParallel()来注册核心数。

额外信息

我的 R 版本是3.0.2 GUI 1.62 Snow Leopard build. 我的机器有 16 个内核。

4

0 回答 0