我正在學習CUDA,和在大量的示例代碼我看到被設置這樣塊和網格尺寸:在CUDA中初始化dim3變量,「dim3 dimGrid(numBlocks);」語法工作?
dim3 dimGrid(numBlocks);
dim3 dimBlock(numThreadsPerBlock);
exampleKernel<<<dimGrid, dimBlock>>>(input);
我明白,像dim3 dimGrid(numBlocks);
的線初始化dimGrid,爲dim3類型的變量,以有numBlocks
作爲它的x值 - 但我不知道這是如何工作的。
我本來只是認爲這是正常的C++語法,但對於C++我認爲,生產線必須這樣寫:
dim3 dimGrid = dim3(numBlocks);
否則,你得到「最傷腦筋的解析」。所以我假設這些行作爲變量賦值的解釋是CUDA的NVCC編譯器的特殊行爲,但是我找不到證實這一點的任何事情。
我說得對,這就是發生了什麼,或者有什麼我不明白這是如何工作?
啊,我沒有意識到有那些令人煩惱的解析問題的條件。 –
@AdamGoodwin(大部分)煩人的分析意味着表達式被誤解爲函數聲明。所以它必須是一個有效的函數聲明才能發生。 – Angew