看板 Python 關於我們 聯絡資訊
現在想要做的是 假設有矩陣 A,B,C,...J共約10個 要與同樣數量shape的矩陣a,b,c,...,j 每個shape大約是 (3500,2500,3)A*a + B*b + C*c +...+ J*j 點對點相乘再全部加總 所以出來的結果也是一個(3500,2500,3)的矩陣 該怎麼做最快呢 @_@" type都是numpy array,嘗試了幾種方法 1. 直接使用np multiply方法再相+ 當然這是最慢的, 要好多秒 2. 使用numexpr"A*a+B*b+.."的算式寫在evaluate裡面 這個很強 快超多 大概30%以上 但還是不夠快 3. 使用Cupy 這個當然是最快的 可是存在一個問題 我把20個矩陣用cp.array()轉到cupy 計算完後用cp.asnumpy()轉回來 這兩個過程滿耗時的 加起來又比上面兩個慢了 Q.Q 目前嘗試了上面三種方法 都沒辦法達到理想的速度 假設在 i5-7400CPU , 16G記憶體 , 1050Ti的GPU上 有方法可以達到一秒鐘計算50次 甚至100次嗎 ?? 希望版上的計算達人們指教還是小蛇的小魯 >///< --    ◤ |    ヽ     ▂▃▄▃▂ 回戰文 疾如    ˙███████▃▄  火 ◇ 風  發廢文 繁如   ˙●ノ    ヽ   ●◇ ◇● 挑釁文 嗆如    ___ ●    ● █◣   山◇林 宅在家不動如    ◢█ ██  ( _●_) ミ 彡   甲斐の熊-武田熊玄 ◢▇▇▊    |∪|  ◣_█◢◢ ◤、 原SotaFujimor 改marubom -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.45.58.106 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1586228873.A.1CC.html
TuCH: 所以還差兩個數量級嗎? 04/07 12:12
doasgloria: 沒有細算 但是用方法2 大概0.12秒做完一次 04/07 12:36
doasgloria: 理想的話 希望加快10倍 0.012秒一次就達到目標了 ! 04/07 12:37
watashino: 算法的部分直接轉成3d array,兩個乘完再按照第三個dim 04/07 12:57
watashino: ension加就好了吧,但可能在gpu上加速才有感 04/07 12:57
LiloHuang: numba 可以試試 04/07 21:20
napyang: 推樓上的numba,速度真的快很多。 04/08 17:53
mike0227: 這運算是卡在頻寬 丟去GPU不會比較快 除非資料本來就在 04/11 00:42