我一直在使用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中的一些完成了。
我是sitll困惑。您提到「最大駐留量warp是多處理器上可並行處理的最大warp數量,warp調度程序和寄存器已經分配時,warp處於活動狀態」。我的問題是:1.一個經紗在被激活時被稱爲居民? – Falofter
2.「由多處理器進行處理」中的「預處理」項是什麼意思?這是否意味着駐留扭曲的操作數已經準備好計算?或者它意味着駐留warp被激活以讀取操作數或計算操作數?最讓我困惑的是:一個居民的翹曲是否意味着居民的翹曲不需要讀取操作數,而是在這個翹曲被激活成爲居民翹曲之前準備好操作數?換句話說,一個扭曲不能是一個常駐的扭曲,直到它的操作數已經準備好了嗎? @Taro – Falofter
我通過一些澄清更新了我的答案。如果你仍然不想理解所有的東西,你應該完全閱讀我給出的每一個源代碼作爲鏈接,他們回答(幾乎)你可能想知道在不同的狀態中可能會遇到的一切。 – Taro