[問題] 其實是電腦問題,我的桌機有多強?

看板Physics作者 (會喵喵叫的大叔)時間4年前 (2019/11/29 23:48), 4年前編輯推噓13(141164)
留言179則, 12人參與, 4年前最新討論串1/1
話說我這個用了半輩子紙筆做研究的人,現在碰到非要數值解硬爆 Ginzburg-Landau equation的狀況。數值方法什麼的其實都還可以, 但是我對我的電腦有多少能耐完全沒概念... 然後這麼low的問題拿到程式相關板去問感覺會被噓爆,所以我來 看溫馨的物理板能不能接納我。 配備是普通的i5,8Gb ram,用scipy做計算。 我只是想很簡單的解個線性方程組 Ax = b。 A 是 N*N 對稱矩陣,而且非常sparse,只有 9N 個元素不是零。 但是 N 大概是幾十萬。 然後我要一直 loop 到牛頓法收斂,所以這個要做很多次... 所以我想幹的事: 1) 大得太誇張了,洗洗睡吧 2) 電腦可能夠力,但是要有心理準備會很慢 3) 都9102年了,誰家的電腦跑不動這種小問題? 是以上哪個? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.93.64 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Physics/M.1575042503.A.6A2.html

11/30 00:43, 4年前 , 1F
算法?lib?語言?
11/30 00:43, 1F

11/30 00:45, 4年前 , 2F
算下來好像要10GB RAM才可以的樣子
11/30 00:45, 2F
不就說scipy。 Sparse matrix本身應該不到100mb,但是我真的不知道solver會吃到多大。 (剛剛少算一個零,還是很小就是了)

11/30 00:54, 4年前 , 3F
內存應該不夠大
11/30 00:54, 3F

11/30 00:55, 4年前 , 4F
我做過N等於幾萬的 我在桌電跑跑到crash
11/30 00:55, 4F

11/30 00:58, 4年前 , 5F
後來丟到cluster上開平行解決
11/30 00:58, 5F

11/30 01:05, 4年前 , 6F
所以答案是 (4) 都9102年了 學最最基本平行運算跟cluster
11/30 01:05, 6F

11/30 01:05, 4年前 , 7F
應用 是理論物理學家必須技能
11/30 01:05, 7F
小時候沒學好,來不及啦。 ※ 編輯: wohtp (123.192.93.64 臺灣), 11/30/2019 01:13:53

11/30 01:14, 4年前 , 8F
是說丟國網中心記憶體感覺是無限的XD
11/30 01:14, 8F

11/30 01:16, 4年前 , 9F
線性方程組我我是用
11/30 01:16, 9F
※ 編輯: wohtp (123.192.93.64 臺灣), 11/30/2019 01:19:58

11/30 01:20, 4年前 , 10F
matrix本身當然吃不到那麼大內存 可是不確定做的運算需要吃
11/30 01:20, 10F

11/30 01:20, 4年前 , 11F
多少
11/30 01:20, 11F

11/30 01:21, 4年前 , 12F
你還沒直接丟到電腦跑看看會不會出事嗎?
11/30 01:21, 12F
relaxation怎麼調都不穩定,所以才剛想要換方法。 有人說32Gb的內存連一萬都跑不動,也有人宣稱他在8Gb筆記本上面跑到幾百萬... 看來這真的很吃人品。 ※ 編輯: wohtp (123.192.93.64 臺灣), 11/30/2019 01:50:57

11/30 01:29, 4年前 , 13F
N^2 = 10^10 = 10^7 K = 10^4 M = 10G 這樣吧?
11/30 01:29, 13F

11/30 01:30, 4年前 , 14F
不過用LU分解的話大概是 N^2 +2N 記憶體
11/30 01:30, 14F

11/30 01:31, 4年前 , 15F
如果你的A是方陣的話,回歸可以用QR或SVD解
11/30 01:31, 15F

11/30 01:32, 4年前 , 16F
不過你只存非0的元素或許可以很小
11/30 01:32, 16F

11/30 01:34, 4年前 , 17F
他是sparse matrix
11/30 01:34, 17F

11/30 01:36, 4年前 , 18F
但就算是sparse, N到了十萬 運算起來大概也不會很快的
11/30 01:36, 18F

11/30 02:36, 4年前 , 19F
我剛在matlab隨便測了一下 用matlab內建方式直接解稀疏矩陣
11/30 02:36, 19F

11/30 02:37, 4年前 , 20F
線性方程組 N=十萬的時候被告知記憶體不夠 我現在的桌電記
11/30 02:37, 20F

11/30 02:38, 4年前 , 21F
意體是16GB 看有沒有更聰明能更善用稀疏性質的演算法囉
11/30 02:38, 21F

11/30 02:44, 4年前 , 22F
但理論上 matlab應該自己也會調用能善用稀疏性質的方式 所
11/30 02:44, 22F

11/30 02:44, 4年前 , 23F
以可能你需要一些更特別或專門的演算法
11/30 02:44, 23F

11/30 02:46, 4年前 , 24F
其實與其煩惱這些...直接學怎麼做平行運算跟cluster操作就
11/30 02:46, 24F

11/30 02:47, 4年前 , 25F
好了...
11/30 02:47, 25F

11/30 04:34, 4年前 , 26F
如果是sparse matrix,就存不是0的元素就好。另外再多
11/30 04:34, 26F

11/30 04:34, 4年前 , 27F
創一個矩陣存這些非0元素在原矩陣的位置,記憶體就不存
11/30 04:34, 27F

11/30 04:34, 4年前 , 28F
在不夠的問題
11/30 04:34, 28F

11/30 04:35, 4年前 , 29F
然後這種東西哪有吃人品....資源的upper bound絕對是
11/30 04:35, 29F

11/30 04:35, 4年前 , 30F
算得出來的
11/30 04:35, 30F

11/30 04:36, 4年前 , 31F
存矩陣當然夠啊= =
11/30 04:36, 31F

11/30 04:37, 4年前 , 32F
然後如果是用迭代找數值解,基本上要多試幾種,沒有一
11/30 04:37, 32F

11/30 04:37, 4年前 , 33F
種方法可以保證你的數值解在收斂過程中不會爆掉
11/30 04:37, 33F

11/30 04:39, 4年前 , 34F
人家矩陣創出來 要拿來解方程組的 我是沒特別研究一般解線
11/30 04:39, 34F

11/30 04:41, 4年前 , 35F
性方程組能夠優化到甚麼程度 但就以最最無腦的解法 直接對A
11/30 04:41, 35F
還有 104 則推文
11/30 23:25, 4年前 , 140F
看他急不急吧
11/30 23:25, 140F

12/01 01:19, 4年前 , 141F
其實我現在傾向於相信我邊界條件下錯了
12/01 01:19, 141F

12/01 01:20, 4年前 , 142F
然後relaxation才會壞掉。如果可以修好,我也不用搞牛頓法
12/01 01:20, 142F

12/01 01:21, 4年前 , 143F
了。
12/01 01:21, 143F

12/01 02:25, 4年前 , 144F
不管用誰的程式前都要測試沒錯,是否常識且不論,只針對
12/01 02:25, 144F

12/01 02:26, 4年前 , 145F
用他人程式狀況提醒,乃因取此圖者一般更傾向省事
12/01 02:26, 145F

12/01 02:34, 4年前 , 146F
在線性代數中 自己造輪子絕大多數都不會是好想法 這不是在
12/01 02:34, 146F

12/01 02:34, 4年前 , 147F
嘴 這是對任何真的在做研究的人都需了解的
12/01 02:34, 147F

12/01 02:37, 4年前 , 148F
這些傳統線性代數lib 都是由最專業的應用數學家跟電腦科學
12/01 02:37, 148F

12/01 02:37, 4年前 , 149F
家 花費大量心力認真建構而成的 上至NASA上太空 下到華爾
12/01 02:37, 149F

12/01 02:37, 4年前 , 150F
街跟矽谷 無數專業的科學家跟工程師 大量使用這些線性代數l
12/01 02:37, 150F

12/01 02:37, 4年前 , 151F
ib數十年以上 其優化跟穩定程度 一般人是比不上的
12/01 02:37, 151F

12/01 02:40, 4年前 , 152F
當然 如果只是做個很簡單 大學生作業程度的事情 自己寫輪子
12/01 02:40, 152F

12/01 02:40, 4年前 , 153F
那或許有額外好處 但是越複雜越龐大 就越該減少使用自己的
12/01 02:40, 153F

12/01 02:40, 4年前 , 154F
輪子(以線性代數來說)
12/01 02:40, 154F

12/01 02:40, 4年前 , 155F
例如 某個史丹佛教授是這麼說的
12/01 02:40, 155F

12/01 02:41, 4年前 , 156F

12/01 02:49, 4年前 , 157F
越是了解數值分析 其實就會越了解這些線性代數lib的偉大
12/01 02:49, 157F

12/01 10:44, 4年前 , 158F
我發現我昨天matlab的矩陣設錯了 看來這終究是能用執行時
12/01 10:44, 158F

12/01 10:44, 4年前 , 159F
間來換取調整記憶體使用量 我的記憶體全部都被佔滿 但終究
12/01 10:44, 159F

12/01 10:44, 4年前 , 160F
沒有out 只是我出去吃個飯回來都還沒跑完 要做事就先關了
12/01 10:44, 160F

12/01 10:52, 4年前 , 161F
如果你時間多可以等 又只要找出解就好 之後不會做其他規模
12/01 10:52, 161F

12/01 10:52, 4年前 , 162F
太大的事 (就像我以前玩個幾萬的矩陣就crash 是因為我還
12/01 10:52, 162F

12/01 10:53, 4年前 , 163F
做其他大矩陣運算 甚至二維積分 而且我的不是sparse) 就
12/01 10:53, 163F

12/01 10:53, 4年前 , 164F
像前面大家說的 或許還是有一般電腦就可以搞定的方法 你自
12/01 10:53, 164F

12/01 10:53, 4年前 , 165F
己決定吧~
12/01 10:53, 165F

12/01 10:55, 4年前 , 166F
畢竟我也沒有真正specificly測過解線性方程在一般電腦的極
12/01 10:55, 166F

12/01 10:55, 4年前 , 167F
限 我只知道一般N到了數萬以上的矩陣問題或操作 不管是用
12/01 10:55, 167F

12/01 10:55, 4年前 , 168F
什麼語言或lib 在單台個人電腦很容易就等相當久 如果不是
12/01 10:55, 168F

12/01 10:55, 4年前 , 169F
不能做的話
12/01 10:55, 169F

12/02 00:05, 4年前 , 170F
演算法 記憶體
12/02 00:05, 170F

12/03 11:07, 4年前 , 171F
這篇想到之前搞翻intel的數值計算,發現intel的硬體bug
12/03 11:07, 171F

12/03 11:10, 4年前 , 172F
Pentium FDIV bug,intel回收一整批處理器,花$475 million
12/03 11:10, 172F

12/03 19:28, 4年前 , 173F
既然友人都丟史丹佛了 我也丟一個
12/03 19:28, 173F

12/03 19:28, 4年前 , 174F

12/03 19:35, 4年前 , 175F

12/03 19:35, 4年前 , 176F
函式 不過沒有打包成漂亮的library 將就用
12/03 19:35, 176F

12/06 19:46, 4年前 , 177F
回來回報一下,我好像可以用relaxation了
12/06 19:46, 177F

12/06 19:46, 4年前 , 178F
所以不需要解牛頓法喔耶
12/06 19:46, 178F

12/06 19:48, 4年前 , 179F
喵的沒人告訴我做relaxation的時候不能先把gauge定下來
12/06 19:48, 179F
文章代碼(AID): #1TuJt7QY (Physics)