首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mclapply遇到错误取决于核心id?

mclapply遇到错误取决于核心id?
EN

Stack Overflow用户
提问于 2018-10-10 17:29:29
回答 1查看 431关注 0票数 1

我有一组基因,需要并行计算一些系数。系数是在GeneTo_GeneCoeffs_filtered中计算的,它以基因名称作为输入,并返回两个数据帧的列表。

有了100长的gene_array,我使用不同数量的内核运行这个命令: 5、6和7。

代码语言:javascript
复制
Coeffslist=mclapply(gene_array,GeneTo_GeneCoeffs_filtered,mc.cores = no_cores)

根据分配给mclapply的核数,我在不同的基因名称上遇到错误。

GeneTo_GeneCoeffs_filtered无法返回它们具有模式的数据帧列表的基因索引。在分配给mclapply的7个核的情况下,它是gene_array的4、11、18、25、.95个元素(每7个核),当R与6个核一起工作时,索引为2、8、14、.、98 (每6),与5核相同--每5核。

最重要的是,它们在这些过程中是不同的,这意味着问题不是特定的基因。

我怀疑可能有“损坏”的核心不能正常运行我的函数,只有它才会产生这个错误。有没有办法追踪它的id,并将它排除在R可以使用的核心列表中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-17 17:22:40

仔细阅读mclapply的命令页可以发现,这种行为是由设计造成的,它是由于以下几个方面的交互而产生的:

(a)

“输入X被分成多个部分,就像有核一样(目前这些值按顺序分布在各个核上,即第一个值到核心1,第二个值到核心2,.(核心+ 1)-th值到核心1等等),然后一个进程分叉到每个核,然后收集结果。”

(b)

即使不是所有失败的值都失败了,也会为所有涉及到的值返回一个“尝试错误”对象。

在您的情况下,由于(a),您的gene_array是在核心之间传播“循环”样式(在连续元素的索引之间有一个mc.cores间隙),并且凭借(b),如果任何gene_array元素引发错误,则返回发送到该核心的每个gene_array元素的错误(在这些元素的索引之间有一个mc.cores间隔)。

我在昨天与Simon:https://stat.ethz.ch/pipermail/r-sig-hpc/2019-September/002098.html的一次交换中更新了对此的理解,其中我还提供了一种错误处理方法,只对生成错误的索引产生错误。

您还只能获得通过传递mc.preschedule=FALSE生成错误的索引的错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52745779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档