2012-03-19 68 views
1

Nvidia CUDA驅動程序是做什麼的?從使用CUDA的角度來看。 驅動程序傳遞內核代碼,執行配置(#threads,#blocks)... 還有什麼?nVIDIA CUDA驅動程序究竟做了什麼?

我看到一些帖子,司機應該知道可用SM的數量。 但是這不是沒有必要嗎?一旦內核傳遞給GPU,GPU調度器只需將工作分散到可用的SM中即可...

回答

7

GPU不是一個完全自主的設備,它需要一個批次幫助從主機驅動程序最簡單的事情就是做 。據我所知的驅動程序包含至少:

  • JIT編譯器/優化器(PTX彙編代碼可以在運行時驅動程序被編譯,如果需要,驅動器也將重新編譯代碼以匹配裝置的執行架構和可能的)
  • 設備存儲器管理
  • 主機存儲器管理(DMA轉移緩衝器,被釘扎和映射的主機存儲器,統一尋址模型)
  • 語境和運行時支持(這樣的代碼/堆/堆棧/ printf的緩衝存儲器管理),動態符號管理,流等
  • 內核「格平」調度(包括對所支持的平臺管理多個併發內核)
  • 計算模式管理
  • 顯示驅動程序的互操作(支持DirectX和OpenGL資源共享)

這可能代表了裸將某些用戶級設備代碼放到GPU上並通過主機端API運行所需的最低限度。

+0

謝謝,很好的回答! – 2012-03-20 20:27:50

+0

如果你不介意,還有一個問題。 「統一尋址模型」有點像虛擬內存,對嗎? CUDA內核中使用的虛擬內存地址將被轉換爲實際的物理GPU內存地址(全局,本地,共享...)。這完全是在駕駛員級別完成的嗎?我認爲驅動程序只需要將統一的地址轉換爲實際的物理地址(全局,本地,...),而GPU HW不需要知道有關此虛擬內容的任何信息。我的理解是否正確?謝謝 ! – 2012-03-20 20:30:33

+0

統一尋址的含義是CUDA 4.0及更高版本中的方案,它允許多個GPU和某些其他設備(如網絡接口)將自己映射到主機的公共地址空間。這全部由司機完成。費米卡似乎具有用於虛擬地址到硬件特徵的內部映射的TLB。這需要進行編程,這是驅動程序進入的地方,但地址轉換應由設備完成。 – talonmies 2012-03-20 21:19:30