【发布时间】:2016-09-14 03:24:23
【问题描述】:
我想在 R 中计算 1000 万次引导复制,但我的机器没有足够的内存(128 GB)。
现在,我一直在使用 boot 在多个内核上执行此操作:
boot_data <- boot(data=data, statistic=correlation_fn, R=10^7,
parallel="multicore", ncpus=10)
甚至在任何子进程开始计算之前(通过使用htop 进行监视,计算就会耗尽内存:
mcfork() 中的错误:
无法fork,可能原因:无法分配内存
调用:cor_boot_wrap -> boot -> -> lapply -> FUN -> mcfork
执行停止
警告信息:
系统调用失败:无法分配内存
是否有另一种方法可以使用内存映射(可能使用bigmemory 或ff)?我意识到这个问题可以通过使用另一台内存更大的机器轻松解决,但这不是我的选择。
最后,我使用boot.ci(boot_data, type="bca") 计算置信区间,所以任何中间方法都应该与此兼容。
【问题讨论】:
-
实际需要 1000 万个样本,您在做什么分析?
-
或许可以完成这项工作,但如果没有可重现的示例,我们无能为力帮助您。但是,您应该首先在不进行并行化的情况下对此进行测试,然后尝试使用较小的 n 递增数来推断内存需求。
-
好主意,我将进行可重现的分析并修改问题。
标签: r memory parallel-processing statistics-bootstrap