我正在学习 CUDA,在大量示例代码中,我看到块和网格尺寸设置如下:
dim3 dimGrid(numBlocks);
dim3 dimBlock(numThreadsPerBlock);
exampleKernel<<<dimGrid, dimBlock>>>(input);
我知道像这样的行dim3 dimGrid(numBlocks);
正在初始化 dim3 类型的变量 dimGridnumBlocks
作为其 x 值 - 但我不确定这是如何工作的。
我只是假设它是普通的 C++ 语法,但对于 C++,我认为该行必须这样写:
dim3 dimGrid = dim3(numBlocks);
否则你会得到“最令人烦恼的解析”。所以我假设将这些行解释为变量赋值是 CUDA 的 NVCC 编译器的特殊行为,但我找不到任何可以证实这一点的东西。
我是对的,这就是正在发生的事情,还是我不明白这是如何工作的?