我試圖在實時3D建模中優化應用程序。應用程序的計算部分幾乎完全在CUDA中的GPU上運行。該應用需要解決小型(6x6)雙精度對稱正定線性系統Ax = b每秒500次以上。目前,這是由一個基於高效CPU的線性代數庫使用Cholesky完成的,但需要將數據從CPU - GPU複製到GPU,每秒重複數百次,並且每次啓動內核開銷等。在GPU上求解小對稱正定Ax = b
我可以計算GPU上線性系統的解決方案,而不必將數據放到CPU上?我已經讀了一些關於MAGMA庫的內容,但它似乎使用混合算法而不是僅使用GPU的算法。
我準備好了這樣一個事實,即GPU上的單個線性系統的解決方案將比現有的基於CPU的庫慢很多,但我想查看是否可以通過移除主機和設備之間的數據通信以及內核啓動的開銷等等每秒數百次。如果沒有GPU,只有類似LAPACK的替代方案,那麼我將如何去實現某些功能來僅在GPU上解決這個特定的6x6情況?例如,如果沒有GPU BLAS庫的大量時間投入,它可以完成嗎?
6x6線性系統非常小,您可以自己在CUDA代碼中編寫公式......顯然,對於這樣一個小型系統,很難從CUDA的並行特性中獲得任何好處,但要擺脫GPU-CPU通信的確會帶來巨大的好處。是否有可能以不同的方式進行並行化?將系統解決在單個GPU內核上,然後使用多個內核實現500+個解決方案。這將是最好的,除非你需要以前的系統的結果開始下一個系統的工作。 – Eiver 2012-07-29 17:35:01
@Eiver在錢上。你能同時做這500個,還是彼此依賴?對於6x6這種方法http://en.wikipedia.org/wiki/Cholesky_decomposition#Block_variant看起來手工編碼... – 2012-07-29 18:12:42