4

我在一长串列表中使用 R 多核。我在列表上调用mclapply,它使用了我机器上的 12 个内核。

当我的列表有大约 1000 个元素时,它运行良好。当我的列表长于约 2000 个元素时(我不确定这种行为会在多长时间内生效),那么提交给核心 5 的所有作业都会失败。

(我通过向该网站提交列表元素 ID 发现了这一点。)

我在几个节点上试过这个,但我总是收到以下警告:

Warning message:
In mclapply(h.list, train_and_predict, learn.bias = F, ntree = ntree,  :
  scheduled core 5 encountered error in user code, all values of the job will be affected

问:为什么只有一个核心会失败?

任何帮助将不胜感激。

PK

4

1 回答 1

2

我认为当至少一个数据激活代码中的错误时,就会发生这种情况。multicore无法恢复,并且该核心上的所有数据都已损坏。mclapply将数据均匀地分配到所有节点上,如果在一个节点上甚至一个数据失败。

我建议以下解决方案:从M数据N项开始;如果失败,则逐渐减少M,直到它起作用;那么M+1基准是错误的。仅使用 -th 数据串行运行您的代码(即不使用mclapply),M+1看看它在哪里失败。那么这就是错误。

于 2014-08-13T09:20:31.700 回答