2014-09-04 13 views
0

如何以編程方式查找設備/ nvidia顯卡上併發cuda線程或流式多處理器的最大數量?我知道warpSize,但沒有warpCountCUDA:設備上共有多少個併發線程?

most answers on the internet關注自己從pdf中查找東西。

+2

您鏈接的問題不包含對pdf的引用(我可以看到),並提及'deviceQuery',一種編程工具/示例代碼,它基本上檢索有關CUDA GPU的所有機器可讀信息。它將具體回答有多少個流式多處理器,並根據您的「併發線程」的含義從算法上獲得「併發線程」。鏈接的問題指出了難以量化「併發線程」等不精確的想法,部分原因是GPU執行單元是流水線的。 – 2014-09-04 16:13:21

+0

對不起,我正在尋找一個快速參考。這太冗長了。如果這是這種格式的錯誤地方,那麼我想我會刪除這個問題 – guest 2014-09-04 18:34:26

+0

如果「併發」是在給定時間可以分配給物理資源的最大線程數,那麼答案是cudaDeviceProp.multiProcessorCount * cudaDeviceProp .maxThreadsPerMultiProcessor。參見[cudaDeviceProp](http://docs.nvidia.com/cuda/cuda-runtime-api/structcudaDeviceProp.html#structcudaDeviceProp)。 – 2014-09-05 22:39:17

回答

1

這不僅取決於設備而且對你的代碼的一個 - 例如例如每個線程使用的寄存器數量或塊需要的共享內存量。我會建議閱讀有關佔用。

我會注意到的另一件事是,如果你的代碼依賴於在設備上駐留一定數量的線程(例如,如果你等待幾個線程到達某個執行點),你肯定會面臨一些競爭條件,並看到你的代碼掛起。