[問題] 陣列太大的問題...

看板C_and_CPP (C/C++)作者 (我也來56)時間14年前 (2011/07/18 11:28), 編輯推噓9(9033)
留言42則, 11人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux gcc+vim 問題(Question): 用在天文物理上面的計算 需要一個超大陣列 目前只用小樣本的A[100000][100000] 預期希望可以到A[1500000][1500000] 做法1: #define M 100000 double A=[M][M] int main { ... } 陣列太大無法編譯 做法2: define M 100000 double *A = new double[M][M] 還是一樣的結果 請問這麼大的數字還有救嗎... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.176.155

07/18 11:32, , 1F
需要大概74G的空間...你的記憶體有這麼大嗎?
07/18 11:32, 1F

07/18 11:33, , 2F
有帥有推, 當然一樓超哥也很帥啦.
07/18 11:33, 2F

07/18 11:33, , 3F
當然沒有 RAM只有3G... 所以只剩改演算法一途了嗎?
07/18 11:33, 3F

07/18 11:34, , 4F
在改演算法之前, 先想資料結構的事.
07/18 11:34, 4F

07/18 11:35, , 5F
你要用file處理嗎?
07/18 11:35, 5F

07/18 11:35, , 6F
不過第一種做法在我手邊64位元的機器倒是編譯通過
07/18 11:35, 6F

07/18 11:37, , 7F
請問一下用file處理是什麼意思?
07/18 11:37, 7F

07/18 11:39, , 8F
能編譯, 也能跑嗎?
07/18 11:39, 8F

07/18 11:40, , 9F
不能編譯 編譯就出現錯誤 顯示A陣列太大
07/18 11:40, 9F

07/18 11:41, , 10F
http://pastie.org/2229730 這個在我64位元機器編譯通過
07/18 11:41, 10F

07/18 11:42, , 11F
不過執行結果就跳出「Killed」,所以其實沒啥意義...XD
07/18 11:42, 11F

07/18 11:47, , 12F
XDDD
07/18 11:47, 12F

07/18 11:58, , 13F
把陣列存成檔案處理呀 假如你的硬碟夠大的話...XDDD
07/18 11:58, 13F

07/18 11:59, , 14F
75G的硬碟至少比75G的記憶體實際多了 XD
07/18 11:59, 14F

07/18 12:20, , 15F
但也慢很多 XD
07/18 12:20, 15F

07/18 12:49, , 16F
老牛拖車 總比 攤死在路邊 來的好
07/18 12:49, 16F

07/18 12:58, , 17F
拿最近一個計畫用的server試了一下 記憶體夠大時兩個方法
07/18 12:58, 17F

07/18 12:59, , 18F
都可以
07/18 12:59, 18F

07/18 15:07, , 19F
幾十年前,某人在美國作FFT, 需要把一個數MB的array轉秩
07/18 15:07, 19F

07/18 15:07, , 20F
作出來後是一篇博士論文zzzzz....
07/18 15:07, 20F

07/18 15:53, , 21F
是稀疏矩陣嗎?大概有幾個元素值有用到?
07/18 15:53, 21F

07/18 15:53, , 22F
老牛拖車也是可能會拖十年的, 不會比較好, 能一次載一些
07/18 15:53, 22F

07/18 15:54, , 23F
會比較好
07/18 15:54, 23F

07/18 15:54, , 24F
0元素超多的話用list,不然就寫到硬碟吧.
07/18 15:54, 24F

07/18 15:56, , 25F
剛想到的是, 一台電腦沒有74G,但20台電腦就有74G....
07/18 15:56, 25F

07/18 16:26, , 26F
要組成cluster嗎? XD
07/18 16:26, 26F

07/18 16:26, , 27F
其實單一電腦開這麼大的陣列似乎不太實際
07/18 16:26, 27F

07/18 16:27, , 28F
畢竟單一的CPU即使多核,同時用到的應只有陣列的一小部份
07/18 16:27, 28F

07/18 16:27, , 29F
所以cluster應該是個很有趣的點子...XD
07/18 16:27, 29F

07/18 16:37, , 30F
我只是突然覺得,這問題用分散式處理系統還蠻好玩的,
07/18 16:37, 30F

07/18 16:37, , 31F
只是個人做的話,真的很難有那種環境可以驗證、去玩。
07/18 16:37, 31F

07/18 16:41, , 32F
假如有團隊就可透過網路來運算 XD
07/18 16:41, 32F

07/18 16:52, , 33F
我家的server有256G的ram :P 不過運算還是有爆掉 XD
07/18 16:52, 33F

07/18 16:55, , 34F
256G........
07/18 16:55, 34F

07/18 17:30, , 35F
256G...好大
07/18 17:30, 35F

07/18 17:32, , 36F
256G......
07/18 17:32, 36F

07/18 17:35, , 37F
怎麼插的, 一條幾G的呢?
07/18 17:35, 37F

07/18 22:42, , 38F
256G...天文數字...
07/18 22:42, 38F

07/19 09:05, , 39F
256G還好啦 因為工作的關係常接觸到大的server 最近的
07/19 09:05, 39F

07/19 09:07, , 40F
project用的server有2TB的ram 後來發現隔壁競爭對手有3TB
07/19 09:07, 40F

07/19 12:53, , 41F
T !!!
07/19 12:53, 41F

07/19 13:05, , 42F
記憶體比我的硬碟還要大好幾倍.........orz
07/19 13:05, 42F
文章代碼(AID): #1E8wXuhR (C_and_CPP)
文章代碼(AID): #1E8wXuhR (C_and_CPP)