引导1000万次重复 - 没有足够的内存

时间:2016-09-14 03:24:23

标签: r memory parallel-processing bootstrapping memory-mapping

我想在R中计算1000万次bootstrap重复,但我的机器没有足够的内存(128 GB)。

现在,我一直使用boot在多个核心上执行此操作:

boot_data <- boot(data=data, statistic=correlation_fn, R=10^7, 
                  parallel="multicore", ncpus=10)

即使在任何子进程开始计算之前(通过使用htop进行监视,计算也会耗尽内存:

  

mcfork()中的错误:

     

无法分叉,可能的原因:无法分配内存

     

通话:cor_boot_wrap - &gt;开机 - &gt; - &GT; lapply - &gt;乐趣 - &gt; mcfork

     

执行暂停

     

警告讯息:

     

系统调用失败:无法分配内存

是否有另一种方法可以使用内存映射(可能使用bigmemoryff)?我意识到通过使用具有更多内存的另一台机器可以轻松解决这个问题,但这对我来说不是一个选择。

最后,我使用boot.ci(boot_data, type="bca")来计算置信区间,因此无论哪种中间方法都应与此兼容。

1 个答案:

答案 0 :(得分:0)

您可以创建一个文件或一组文件,其索引代表引导程序的选择。您也可以编写由每个bootstrap产生的对象本身。然后,您的处理将是读取每个文件并执行分析。问题可能是由于尝试一次在内存中创建所有内容。

如何一次运行1000个bootstraps然后合并结果?