1. 程式人生 > >Error: cannot allocate vector of size 88.1 Mb問題

Error: cannot allocate vector of size 88.1 Mb問題

1-1 算法 tar 服務 提示 參考 hive archive 基本

  這幾天訓練模型運行代碼的時候,老是提示我說: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

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

  如果遇到這個問題,大家可以對應試試解決方案,方法還不錯哦~

Error: cannot allocate vector of size 88.1 Mb問題