我有一些大型生物信息学项目,我想在大约一百万个标记上运行一个小函数,它需要一个小标题(22 行,2 列)以及一个整数作为输入。返回的对象每个大约80KB,函数内部没有创建大量数据,只是一些格式化和统计测试。我已经尝试了使用并行、doParallel 和 doMC 包的各种方法,所有这些都是非常规范的东西(foreach、%dopar% 等),在一台有 182 个内核的机器上,我使用的是 60 个内核。
但是,无论我做什么,内存需求都会迅速达到 TB 并导致机器崩溃。父进程在内存中保存了许多千兆字节的数据,这让我怀疑:父进程的所有内存内容是否都被复制到并行化进程中,即使它不需要?如果是这样,我该如何防止这种情况?
注意:我不一定对我的特定问题的解决方案感兴趣,因此没有代码示例等。我无法理解内存在 R 并行化中如何工作的细节。