2017-03-08 92 views
0

我必須處理大量的數據(大約4000個圖像的單個圖層的特徵圖),這些數據在某點之後大小超過50 GB。處理涉及一些計算,然後將大約2MB文件寫入HDD。如何在有限的RAM中處理大量的數據

由於免費內存大約40GB,我的進程在某個點後崩潰。任何人都可以提出一個更好的方法來分割或處理這個50GB數據,以便可以在可用的RAM中進行計算。對於例如一些在內存壓縮方法

我只是尋找提示,以解決這個問題的可能方法。

謝謝

+0

不要一次將所有數據存儲在內存中。把它分成小塊。 –

+0

是的,但數據需要同步。不知道有什麼最好的辦法有這樣一個kinda保存點。 – blackbug

+1

您的問題描述過於籠統,無法提供任何詳細的答案。您是將整個數據集一次加載到RAM中,還是將它分成批次?如果你沒有做後者,我認爲這是一條路。然後,您可以連續分析批次,這意味着一旦批次完成,您就可以繼續下一批,直到所有批次都被處理完畢。這樣,你正在處理的集合不應該大於可用內存。 –

回答

0

這個問題讓我想起了80年代初。內存過去很貴,我們發明了交換。 (操作系統的高級別部分)看到的內存比實際存在的多,並且頁面被複制到磁盤上。當需要一個時,另一個被換掉,並且該頁面被複制回到存儲器中。表演很糟糕,但至少可以奏效。

你的問題是相當廣泛的,但經驗法則表明,如果你可以批量處理你的數據,明確地加載批量數據效率更高,但如果algorythm過於複雜或需要對任何數據任何時候,只要讓它交換就可以了。

因此,添加一個比您認爲需要的內存大得多的交換文件(使用給定的尺寸,我會嘗試100或200 GB),在離開辦公室之前開始處理,並且您可以在第二天在早上。