似乎fork
在Mac 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
执行语句。print
dp
我尝试使用
%dopar%
但只注册了 1 个 CPU。终端上的输出没有变化,但在控制台上发生了变化。现在控制台给出了完全相同的错误,与终端同时出现。当我要求多个 CPU 时,我确保使用了多个 CPU。
我尝试使用
mclapply
代替foreach
和registerDoMC()
代替registerDoParallel()
来注册核心数。
额外信息
我的 R 版本是3.0.2 GUI 1.62 Snow Leopard build
. 我的机器有 16 个内核。