我正在使用Cudafy在NVIDIA GPU上進行一些計算。 (的Quadro K1100M能力3.0,如果它的事項)爲什麼z在CUDA內核中始終爲零
我的問題是,當我使用以下
cudaGpu.Launch(new dim3(44,8,num), new dim(8, 8)).MyKernel...
爲什麼從g線程情況下我的小Z指標始終爲零,當我使用這在我的內核?
int z = thread.blockIdx.z * thread.blockDim.z + thread.threadIdx.z;
而且,如果我不得不做一些像
cudaGpu.Launch(new dim3(44,8,num), new dim(8, 8, num)).MyKernel...
Z用不了給予不同的指標,因爲它應該,但NUM不能因爲每線程數限制的非常大塊。如何解決這個問題的任何消息?
編輯
另一種方式句話吧。當塊大小僅爲2D時,我可以在我的內核中使用thread.z(對於任何有用的內容)嗎?
0可能是默認值?您應該始終爲您的「num」提供一個至少爲1的值。 要處理每個塊的線程數限制,只需增加塊數(因此,多個塊數少的線程)。 – Taro
num只是爲了表明它可能是任何東西,但我肯定它是> 0. – smok
我對cudafy瞭解不多,但它可能是在cuda之前設計的dot net和cuda之間的映射允許gridDim.z dimension ,尚未更新並且未考慮z尺寸。 這需要驗證,雖然 –