#請益 如何用GPU加速numpy運算

各位大神安安 最近寫到一個需要大量運算歐幾里得距離的東西 大概內容是如下(簡單說明): 有A.csv B.csv兩個檔案分別有(11937, 520) (1111, 520)的資料 對於B的每一個row都去和A的每個row去算歐幾里得距離, 有1111 * 11937次運算量 我的作法是先用pandas讀入csv再轉成np.array之後利用np.linalg.norm去做運算 大概5分鐘能跑完, 後來我想是否能用gpu加速運算, 所以我先後嘗試了Pytorch, Mxnet, Minpy等套件, 將np.array的資料搬上gpu去做運算, 但發現運算時間竟然比CPU還慢非常多, 想請問是我的作法是有誤嗎? 還是說我的概念上有什麼錯誤呢? 先感謝各位大神!
愛心
6
8
全部留言
只要矩陣不夠大,把資料轉移來回去GPU的overhead就已經可以讓CPU算完了。
5分鐘很快吧 還需要加速嗎?
B1 可是不是要開始先把資料轉換到gpu上 然後後面都在gpu上運算 為何會有來回搬移資料的情況? B2 其實只是單純體驗而已 之後有需求的話就比較有經驗要怎麼處理了
你這資料很小阿 應該沒必要給GPU算
B4 其實主要是弄個經驗 之後如果碰到比較大的case就知道怎麼處理了 如果是資料量的問題的話 我等等再去做個實驗 謝謝各位!
是說看到很多人這份作業都花了一兩個小時跑欸,大大很快了吧
B6 其實主要是因為python很多套件會盡量平行處理或是利用記憶體換時間的方式 才會差距這麼多 如果c++有相同的處理方式 應該會比python來的更快才對 不過說實在的 我沒修那門課 哈哈
linalg裡面的東西很慢 我推numexpr (先試試看這個) 還有python的jit也有numba可以用 Chainer的cupy也可以試試看 還有pycuda...