日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

kepler架构GPU新特性--HyperQ

發布時間:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kepler架构GPU新特性--HyperQ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
對于Kepler架構GPU的新特性——HyperQ,往上的討論貼子還是比較少的,官方文檔中也只是有一個sample,給出了代碼,但對于有些情況下,HyperQ不能成功的原因沒有過多的涉及,我們今天就來談一談。HyperQ允許多個CPU線程或進程同時向一個GPU發射任務,提高了GPU的使用率。
????????我們來看一個例子:
C/C++ code?
1 2 3 4 5 6 for(int?i?=?0;?i?<?3;?i++) { ????????A<<<gdim,?bdim,?smem,?streams[i]>>>(); ????????B<<<gdim,?bdim,?smem,?streams[i]>>>(); ????????C<<<gdim,?bdim,?smem,?streams[i]>>>(); }

????????如果是在Fermi架構上運行上述代碼,每一個流的三個Kernel函數會串行執行,它們有各自的任務隊列,根據流的特性,只有A1?C0和A2?C1會具有并行性,如下圖:

????????我們再來看一個開發包自帶的例子:
C/C++ code?
1 2 3 4 5 6 7 for(int?i?=?0;?i?<?nstreams;?++i) { ????????kernel_A<<<1,?1,?0,?streams[i]>>>(&d_a[2?*?i],?time_clocks); ????????total_chocks?+=?time_clocks; ????????kernel_B<<<1,?1,?0,?streams[i]>>>(&d_a[2?*?i?+?1],?time_clocks); ????????total_clocks?+=?time_clocks; }

????????下圖是在Fermi架構的時序圖:

????????而在具有HyperQ特性的Kepler架構的GPU上,時序圖是這樣子的:

????????可見,HyperQ特性將同時執行所有流的Kernel函數。
????????下面我們來討論兩個問題:
???????? 1.?HyperQ和流的關系:
????????HyperQ和流的區別。我們看到上邊的例子都有流的參與,流可以實現“數據的傳輸和kernel函數同步執行”,即傳輸數據的同時,執行kernel函數;而HyperQ則是更高大上的實現了kernel同時執行。如果程序的函數執行時間遠遠大于數據的傳輸時間,那么HyperQ就減少了很多很多的執行時間。二者實現的功能是不一樣的,這對于初次接觸HyperQ的小伙伴們是容易迷惑的地方。
????? ???2.?只要是Kepler架構的GPU,按照上述例子那樣寫代碼,就一定能實現kernel函數并行嗎?
????????不一定。這句話正確的描述應該是:“只要是Kepler架構的GPU就可以支持HyperQ特性,而HyperQ能不能達到使kernel函數并行的目的是不一定的,要看GPU的資源狀況”。什么意思?就是說:如果GPU還有資源,包括顯存、空閑的SMX等,那么是可以并行的,如果一個kernel已經讓GPU滿載運作了,還怎么加入第二個kernel,更不用說多個并行了。有興趣的小伙伴們可以自行將CUDA中HyperQ的例子使用的資源量加大,在觀察時序圖。因此,任何高大上的新特性,都是有使用前提的,不能一味的盲目使用。
????????上述兩點就是本人使用HyperQ的心得,如果在資源允許、GPU沒有滿載的情況下,HyperQ還是一個很好的特性,減少了程序運行時間;但如果kernel函數的任務量很繁重,那么HyperQ就體現不出kernel并行的特點了,實際執行還是串行的。大家也來談談你們使用HyperQ時遇到的問題吧~

總結

以上是生活随笔為你收集整理的kepler架构GPU新特性--HyperQ的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。