2013-04-25 30 views
2

我似乎遇到了可以在計算引擎隊列中排隊的異步內核啓動數量的限制。在此限制之後,主機被阻止並且GPU-CPU併發性丟失。這在CUDA編程指南中未提及。CUDA計算和複製引擎隊列限制

  • 可以在計算引擎隊列中排隊的異步內核啓動的最大數量是多少?
  • 此最大數量是否以某種方式取決於正在啓動的內核?
  • CPU將計算引擎隊列中的內核啓動時間取決於正在啓動的內核嗎?
  • 可以在複製引擎隊列中排隊的異步memcpy的最大數量是多少?

回答

2

我不確定這個問題有一個普遍的答案,在某種程度上它是平臺和CUDA版本特定的AFAIK。回答你的問題點

  • 該限制是隊列大小,我相信,所以有最大數量的隊列操作,而不是內核啓動。相同的總限制應適用於內核,複製操作和流事件的任意組合。什麼操作的那總數是依賴於平臺和CUDA版本
  • 沒有
  • 沒有,但是一旦司機隊列被填滿,所花費的時間提交任何異步操作會大大增加
  • 見第一點。我不相信驅動程序會區分副本,內核啓動或事件。

我記得在CUDA 2.1中做了一些基準測試,結果發現所有東西都跑得很快,直到24個操作已經排隊,那麼後續操作排隊的時間就會減慢。在CUDA 3.0發佈之前,我沒有任何可以達到舊版本的限制的代碼,所以改變了一些東西。編寫一個基準來檢查更現代的CUDA版本的功能應該是微不足道的。