Re: CUDA Matlab plug-in: AccelerEyes' Jacket已回收

看板MATLAB作者 (Achilles)時間16年前 (2009/05/20 03:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/10 (看更多)
※ 引述《yeahbo (MSA-0011[Bst]PLAN303E)》之銘言: : ※ 引述《Leon (Achilles)》之銘言: : : 這有意思, 我來問一下: : : 在 matlab 中, 對於浮點的運算實做有誰熟的? : 浮點數運算有一套 IEEE 754 的標準來定義 : 它的運算是實做在 cpu 或 gpu 的電路裡(為了不易混淆,使用小寫) : 不管是使用哪種程式語言都是一樣的 No, I will not say that. 你可以很容易的在 google 中找到 matlab float point 運算上的問題. http://blogs.mathworks.com/loren/2008/05/20/another-lesson-in-floating-point/ 這裡舉出了 S = 0.24:0.02:0.46, find S == 0.34 returns an empty set 的例子. : 其實我的測試裡 : 是先用 cpu 執行 rand() 函數產生 A 和 B 兩個一樣大小的方陣 : 而且每個 element 都是 double 浮點數 : 再拿這兩個方陣丟給 cpu 和 gpu 運算,算式是 C = A + B (同理類推 - .* ./ *) : 所以無論是 cpu 還是 gpu,拿來比較的運算結果都是用同一筆數據運算出來的 : 只是因為在這次的測試裡,gpu 只能計算 single 浮點數 : 所以在把 A B 方陣傳給 gpu 時,同時也會把數據從 double 轉換成 single : 為了驗證 gpu 運算的正確性(因為聽說有可能算錯XD) : 也用 cpu 算同一筆數據轉換成 single 後的運算結果來比較 : 而這張 Error 圖中 : 實線是 sum[ abs( C_gpu_single - C_cpu_double )] / 方陣element數 : 圓點是 sum[ abs( C_cpu_single - C_cpu_double )] / 方陣element數 這裡直得爭論. a / b , 如果 a,b 是不同的 data type, 會被強制轉換. 你何不看看是不是這方面的問題? 如果把 data 取在 [1,2] 會怎樣? : 而且實線跟圓點完全重合在一起,表示 gpu 沒有算錯(假設 cpu 是對的) : ./ 運算的誤差會較大,是因為除法會放大數值誤差,這可以接受 : 但是,實線跟圓點"沒有"完全重合在一起,表示 gpu 出事了啊~~ <囧> 你的結論是錯的, 因為你不知道你 matlab 的 lib 是怎麼套的, 要下這個結論, 除非你能用比較低階的語言去直接控制 cpu / gpu : "同一筆數據" 由 cpu 和 gpu 算出不同的結果,這是不可接受的啊... : 從 Speed Up 結果顯示,2048 x 2048 方陣的 ./ 運算加速了 1500 倍 : 但是相同大小的方陣,+ - .* 運算只加速了約 800 倍... = =+ No, 這只差了兩倍, 很難下結論. 你能畫出 speed / matrix dimension 的圖嘛? -- 趙客縵胡纓,吾鉤霜雪明。銀鞍照白馬,颯沓如流星。 十步殺一人,千里不留行。是了拂衣去,深藏身與名。 閑過信陵飲,脫劍膝前橫。將炙啖朱亥,持觴勸侯贏。 三杯吐然諾,五嶽倒為輕。眼花耳熱後,意氣素霓生。 就趙揮金錘,邯鄲先震驚。千秋二壯士,烜赫大梁城。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 128.125.20.198
文章代碼(AID): #1A4mWHmv (MATLAB)
討論串 (同標題文章)
文章代碼(AID): #1A4mWHmv (MATLAB)