2012-07-20 50 views
2

我與CUDA經歷過了利益線程。在其中一個實驗中,我有一個小內核,它只運行for循環1000萬次。我發送1個塊,然後從1-1024增加每塊的線程數。然後我繪製執行情況,看看它是如何變化的。結果是每塊大約350個螺紋處有急劇上升,然後在逐漸的時刻急劇上升。執行時間爲每塊1024線程的2倍,表示至少有一個線程已被阻塞。實際的圖形就像是一個漸增的階梯。我想了解的是爲什麼以及這些崛起取決於什麼數字。我想了解它WRT,以SM的數量,CUDA核心等CUDA性能相對於每塊

我使用的GeForce 560與鈦8SM,每個SM和每SM 2束調度48cores。

回答

2

一個可能的原因,每塊350個線程夏普上升是塊消耗了太多的資源,從而使SM無法同時處理多個塊。您可以使用CUDA佔用率計算器,根據內核的資源使用情況,查看一個SM每次將處理多少個塊。

+0

我也準備用指針CUDA佔有率計算器來回答這個問題。它會顯示你看到的那些「階梯」類型圖。它還顯示了確定給定內核的佔用情況的所有因素,並讓您可以隨時查看數字以瞭解所有內容的相互作用。 – 2012-07-20 17:36:40

+0

但是我想知道一兩件事 - 因爲我有8個SM與48cores CH那麼這意味着我可以運行8x48線程併發那麼什麼是每個SM 1536個活動線程的意思。我預計如果每塊有23個線程並增加塊,那麼我應該跳到16塊,因爲每個塊使用23個核心,因此2個塊可以進入1個SM,因此總共16個併發塊。我發現沒有在16跳躍,但在64這是最大併發塊的限制 – 2012-07-20 17:49:26

+0

它歸結爲定義。 「跑步」和「主動」是什麼意思? CC 2.0設備中的32個內核意味着每個時鐘的潛在吞吐量爲32個單精度浮點/整數/邏輯運算。類似於16個加載/存儲單元和4個特殊功能單元。但核心是流水線的,所以存在很長的延遲。因此,在每個時鐘中,一組線程將其計算添加到管道中,一組線程接收其結果,並且許多隊列處於暫掛狀態,等待其結果通過。 – 2012-07-22 21:23:57