我有一个foreach,使用.combine = rbind和112个任务,一次6个并行操作。详细说明,我可以看到所有任务完成并合并,但后来我收到消息“任务6失败 - ”缺少值,其中需要TRUE / FALSE“
所以我试着运行最后12个任务,一切正常!因此,最后12个似乎没有任何问题,并且根据详细输出,前100个成功组合。
帮助! =)
numValues: 112, numResults: 0, stopped: TRUE
automatically exporting the following variables from the local environment:
data, dependentVariables, groupByVariable, numberOfBinsForMissingValueHistogram, outputDirectory
got results for task 1
numValues: 112, numResults: 1, stopped: TRUE
returning status FALSE
...
got results for task 100
numValues: 112, numResults: 100, stopped: TRUE
first call to combine function
evaluating call object to combine results:
fun(result.1, result.2, result.3, result.4, result.5, result.7,
result.8, result.9, result.10, result.11, result.12, result.13,
result.14, result.15, result.16, result.17, result.18, result.19,
result.20, result.21, result.22, result.23, result.24, result.25,
result.26, result.27, result.28, result.29, result.30, result.31,
result.32, result.33, result.34, result.35, result.36, result.37,
result.38, result.39, result.40, result.41, result.42, result.43,
result.44, result.45, result.46, result.47, result.48, result.49,
result.50, result.51, result.52, result.53, result.54, result.55,
result.56, result.57, result.59, result.60, result.61, result.62,
result.63, result.64, result.65, result.66, result.67, result.68,
result.69, result.70, result.71, result.72, result.73, result.74,
result.75, result.76, result.77, result.78, result.79, result.80,
result.81, result.82, result.83, result.84, result.85, result.86,
result.87, result.88, result.89, result.90, result.91, result.92,
result.93, result.94, result.95, result.96, result.97, result.98,
result.99, result.100)
returning status FALSE
got results for task 101
numValues: 112, numResults: 101, stopped: TRUE
...
got results for task 112
numValues: 112, numResults: 112, stopped: TRUE
calling combine function
evaluating call object to combine results:
fun(accum, result.101, result.102, result.103, result.104, result.105,
result.106, result.107, result.108, result.109, result.110,
result.111, result.112)
returning status TRUE
Error in { : task 6 failed - "missing value where TRUE/FALSE needed"
答案 0 :(得分:4)
这将有助于了解您正在做什么......像这样的事情可能发生在随机过程,高级拟合方法,可能依赖于启动参数,中断输入对象等等。 traceback()
也可以提供帮助,尽管在并行任务的情况下traceback()
的输出可能非常难以理解。但实质上,特定输入和功能的组合会出现问题。
至于错误,我希望你注意到结果.6从未被包含在联合收割机中。所以我先看看task6中究竟发生了什么,以及为什么它不返回任何输出。
答案 1 :(得分:0)
这是一个非常古老的问题,但是,我在遇到与 R 中的 foreach
类似的问题后发现了它。这可能对其他人有所帮助。
我看不到原始代码,但我发现当我将 parallel::makeCluster()
中的内核数从 24 减少到 16 时,错误“task XX failed” 不是可重现。自从我花时间研究并行代码已经有好几年了,但我会猜测一个节点要么被分配了无事可做,要么没有任何返回。