我目前使用CUDA,推力和CUBLAS一個GPU執行隨機梯度下降。如何大應矩陣是,如果我使用BLAS/CUBLAS它比普通的C/CUDA有更好的表現?
在我最初的實現我用普通的CUDA執行矩陣向量運算,現在我想通過使用,而不是這樣的操作CUBLAS優化這個。
我正在觀察目前,對於大小列x欄的矩陣,對於少數的cols的,普通的CUDA性能一直優於CUBLAS,顯然無論行數。 然而,對於大量的cols,cuBLAS實現勝出。
所以我想知道:是否有任何經驗法則/準則應該是什麼應該是矩陣/向量的最小尺寸之後使用BLAS或cuBLAS將比純C/CUDA更好地執行,或者這完全依賴於應用程序/ BLAS功能?
相關問題:http://stackoverflow.com/q/26417475/209882 – Bar
注意BLAS2(矩陣矢量)操作趨向於由存儲器吞吐量的限制。如果可能的話,你會想使用BLAS3操作。有許多不同的BLAS2操作,每個操作都有自己的性能特徵(GPU架構可能會有所不同),所以您的問題似乎過於寬泛。檢查是否有任何批處理操作適用於您的用例,因爲它們爲小型矩陣提供更好的性能,否則這些小型矩陣只使用一部分機器資源。 – njuffa
你做的正是在您鏈接到的問題 - 基準您的問題大小域和硬件,並使用這些數據來驅動你的啓發。我非常希望把這個問題作爲這個問題的重複來解決。 – talonmies