2010-09-20 111 views
4

我需要在我的計算機上執行一些矩陣操作。這些矩陣大1000000x1000000以上,有些操作需要TB內存。顯然這些不能直接加載到內存中並進行計算。我可以用什麼方法在我的電腦上解決這些矩陣?假設使用矩陣優化不能進一步減少矩陣,並且已經以緊湊形式存儲。我正在考慮使用一些內存映射方案,但需要一些想法。有限存儲器上大矩陣上的矩陣操作

+0

您是否嘗試過使用64位操作系統並讓虛擬機子系統完成繁重工作? – 2010-09-20 12:14:27

+0

你將這些磁盤存儲在哪些磁盤上? – sbi 2010-09-20 12:18:14

+0

你正在運行什麼操作系統? Win,Linux或符合POSIX標準的基於Unix的系統(如MacOSX)?無論你運行什麼,它應該是保羅指出的相關64位版本。 – 2010-09-20 16:16:41

回答

2

兩個建議:

  1. 使用mmap2系統調用包含輸入和輸出數據的文件映射。這允許您映射最多2^44個字節的文件,並將它們視爲已經存在內存中。即您只需使用標準指針語法來訪問數據,而操作系統可以在不需要擔心的情​​況下從磁盤讀取數據或將數據寫入磁盤。不僅如此,而且mmap比手動文件I/O快很多倍 - See this SO post

  2. 閱讀Ulrich Drepper的「What every programmer should know about memory」。他處理的一個示例問題是高度優化矩陣運算。

+0

這是一個比我更好的參考答案。 +1給你先生 – wheaties 2010-09-20 12:20:47

+1

我會給mmap2一個嘗試。謝謝! – user236215 2010-09-21 00:27:08