Dav*_*vid 2 cuda language-design
CUDA 内核使用此语法启动(至少在运行时 API 中)
mykernel<<<blocks, threads, shared_mem, stream>>>(args);
Run Code Online (Sandbox Code Playgroud)
这是作为宏实现的还是 nvcc 在将主机代码交给 gcc 之前删除的特殊语法?
该nvcc
预处理系统,最终将其转换为序列CUDA运行时库调用移交之前的代码关闭主机代码编译器编译。确切的调用顺序可能会因 CUDA 版本而异。
您可以使用--keep
选项来检查文件nvcc
(并且--verbose
也可能有助于理解),并且您还可以使用其中一个分析器查看为内核调用发出的 API 调用跟踪,例如nvprof --print-api-trace ...
- -编辑 - -
为了使这个答案更简洁,nvcc 直接修改主机代码以替换 <<<...>>> 语法,然后再将其传递给主机编译器(https://docs.nvidia.com/cuda/cuda- c-programming-guide/index.html#offline-compilation )