这几天训练模型运行代码的时候,老是提示我说:Error: cannot allocate vector of size 88.1 Mb,只知道分配空间不足。

 下面是查资料看到的一些回答:

一、这个是R的特点,有几个解决方法:
1.升级到R3.3.0及以上版本,对内存的管理和矩阵计算好太多。在R3.2.5上能死机的计算,在R3.3.0以上就能运行很好。
2.加载一些R语言磁盘缓存包,搜一搜吧
3.写代码的时候适当加一些清理内存的命令。
4.应该跑多线程了吧。
5.加内存作用有限。在R3.2.5上能把服务器跑死机,服务器是44核,512G内存。优化一下代码很有必要。

二、有的时候加内存条也不能解决大数据量多的需求,采用parallel计算策略吧,如果数据一次性读入也不行,可配合filematrix包,分次从硬盘读数据,不过这会慢很多。

三、R里面找到那个参数,有个地方是改最大分配内存的,在Preference之类的地方。

四、下载一个Package叫bigmemory。里面重新为大的数据集构建了类,在处理大数据集的功能上(包括几十GB)基本上是最前沿的。

      链接为cran.r-project.org/web/packages/bigmemory/

五、bigmemory包是可以的。另外还提供了另外两种选择,mapReduce和RHIPE(使用Hadoop),也可以处理大数据集。

六、大神指导(http://bbs.pinggu.org/thread-3682816-1-1.html),cannot allocate vector就是典型的数据太大读不了

方法有三
一、升级硬件
二、改进算法
三、修改操作系统分配给R的内存上限, memory.size(T)查看已分配内存 

memory.size(F)查看已使用内存  

memory.limit()查看内存上限 

object.size()看每个变量占多大内存。
memory.size()查看现在的work space的内存使用
memory.limit()查看系统规定的内存使用上限。

如果现在的内存上限不够用,可以通过memory.limit(newLimit)更改到一个新的上限。注意,在32位的R中,封顶上限为4G,无法在一个程序上使用超过4G (数位上限)。这种时候,可以考虑使用64位的版本。

 详细可参考此篇,非常棒https://blog.csdn.net/sinat_26917383/article/details/51114265

http://jliblog.com/archives/276
http://cos.name/wp-content/uploads/2011/05/01-Li-Jian-HPC.pdf
3 R 高性能计算和并行计算 http://cran.r-project.org/web/views/HighPerformanceComputing.html

  如果遇到这个问题,大家可以对应试试解决方案,方法还不错哦~

posted on 2018-08-31 12:12  一菲宝宝  阅读(9971)  评论(0编辑  收藏  举报