有兩個整數矩陣A和B,有1000多行和10K列,我經常需要將它們轉換爲浮點矩陣以獲得加速(4倍或更多)。爲什麼通過浮點矩陣乘法執行浮點運算比通過int運算的int運算更快?
我想知道爲什麼會出現這種情況?我意識到有很多優化和矢量化,比如AVX等等,都是用浮點矩陣乘法進行的。但是,對於整數(如果我沒有弄錯的話),有這樣的AVX2指令。而且,不能將SSE和AVX用於整數嗎?
爲什麼沒有像Numpy或Eigen這樣的矩陣代數庫下面的啓發式捕獲這個問題,並像float一樣更快地執行整數矩陣乘法?
關於接受的答案:雖然@薩沙的回答是非常翔實和相關性,@翠弧的答案是實際的原因,通過INT乘法int是緩慢的,不論是否存在BLAS整數矩陣運算。
這將有助於提出更具體的問題,但由於更多人需要將其用於float,因此需要花費更多精力來優化float(軟件和硬件)。 –
此問題需要特定示例代碼來演示性能差異(請參閱[mcve])。特別是考慮到代碼被標記爲[C++]和[numpy],你完全不清楚你指的是什麼。 – Zulan