Ada*_*win 4 c++ syntax cuda initialization
我正在学习CUDA,在大量示例代码中,我看到块和网格尺寸设置如下:
dim3 dimGrid(numBlocks);
dim3 dimBlock(numThreadsPerBlock);
exampleKernel<<<dimGrid, dimBlock>>>(input);
Run Code Online (Sandbox Code Playgroud)
我知道像dim3 dimGrid(numBlocks);初始化dimGrid(dim3类型的变量)这样的行有numBlocksx值 - 但我不确定这是如何工作的.
我会假设这是正常的C++语法,但对于C++,我认为该行必须像这样编写:
dim3 dimGrid = dim3(numBlocks);
Run Code Online (Sandbox Code Playgroud)
否则你会得到"最令人烦恼的解析".所以我假设这些行作为变量赋值的解释是CUDA的NVCC编译器的特殊行为,但我找不到任何证实这一点的东西.
我是对的,这是正在发生的事情,还是还有其他一些我不明白这是如何工作的?
这是正常的C++语法,您可以使用最小的工作示例自己尝试.
#include <iostream>
using namespace std;
class A {
int _x;
public:
A(int x) : _x(x) {}
int x() const { return _x; }
};
int main() {
A first(3);
cout << first.x() << endl; // "3"
return 0;
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.