2017-01-12 31 views
1

我一直在使用CUDA一個月,現在我想說清楚需要多少warps/blocks來隱藏內存訪問的延遲。我認爲這與多處理器上駐留的最大變形有關。CUDA的駐留翹曲問題

根據CUDA_C_Programming_Guide(v-7.5)中的表13,每個多處理器駐留warp的最大值是64.然後,我的問題是:什麼是駐留warp?它是指從GPU的內存中讀取數據並準備好由SP處理的那些扭曲?或者參考能夠讀取數據的momory的warp或者可以由sp處理的warp,這意味着除了那些64不能讀取存儲器或者不能被SP處理之外,其餘的翹曲將會發生,除非64個駐留warp中的一些完成了。

回答

2

駐留翹曲的最大數量是可以在多處理器上並行處理的最大翹曲數量。 當warp調度程序調度並且已分配寄存器時,warp處於活動狀態。

如果您獲得了這個數量的經紗並行運行,這個理論上的最大佔用率(100%或1:1)。 如果不是,佔用率較低。其他經紗將不得不等待。可能與this question on SO有關。


爲進一步的問題編輯答案:

  1. 扭曲

關於可以處理經紗的最大用量:SM(流式多處理器)的最大的處理核心,而且GPU的數量有限。即使this webinar沒有跟上時代的新架構,它提供了一些很好的例子:

SM - 流媒體多處理器具有多個處理內核

每個SM中包含32顆處理核心

執行在單指令多線程(SIMT)時尚

最多在一張卡片上16條短信最多512compute內核

和:

費米能在每個SM多達48根活性經線(1536個線程)

  • 處理翹曲
  • 首先,對於有些術語他們並不總是明確的官方,例如見this topic from Nvidia DevTalk

    正如在這個主題上解釋的那樣,一旦給定的warp已經在SM上分配了資源,它就是活動的。 然後,它可以是:

    • 資格:它可以發出一個操作
    • 停滯不前:它不能因爲資源/數據相關的

    這是可能的,因爲我們有一個SIMT架構出現,含義單指令多線程。你會發現很多關於這個話題的讀物,如果你打算調整入住率,那麼這個讀物會非常有用。

    +0

    我是sitll困惑。您提到「最大駐留量warp是多處理器上可並行處理的最大warp數量,warp調度程序和寄存器已經分配時,warp處於活動狀態」。我的問題是:1.一個經紗在被激活時被稱爲居民? – Falofter

    +0

    2.「由多處理器進行處理」中的「預處理」項是什麼意思?這是否意味着駐留扭曲的操作數已經準備好計算?或者它意味着駐留warp被激活以讀取操作數或計算操作數?最讓我困惑的是:一個居民的翹曲是否意味着居民的翹曲不需要讀取操作數,而是在這個翹曲被激活成爲居民翹曲之前準備好操作數?換句話說,一個扭曲不能是一個常駐的扭曲,直到它的操作數已經準備好了嗎? @Taro – Falofter

    +0

    我通過一些澄清更新了我的答案。如果你仍然不想理解所有的東西,你應該完全閱讀我給出的每一個源代碼作爲鏈接,他們回答(幾乎)你可能想知道在不同的狀態中可能會遇到的一切。 – Taro