我寫了一個簡單的CUDA內核來執行大小爲2^18的兩列向量的SAXPY。爲什麼使用少於最大的線程會讓我的內核運行速度更快?
我發現我的GPU(特斯拉C2070)每塊最多可以運行1024個線程。因此,我將我的塊大小設爲X = 1024,Y = 1,Z = 1。我還將網格大小設爲X = 2^18/1024,Y = 1,Z = 1。我這樣做是因爲我想確保每個塊的每個線程都被使用了。
然而,我發現,運行與X = 512的塊大小的內核和X = 128一致,導致更快的時間比X = 1024
這是爲什麼塊大小運行的內核?如果我的塊大小小於1024,我不是在浪費線程嗎?