C++/CUDA中有3个尖括号(<<<)的模板化方法是什么?

Mat*_*ell 4 c++ syntax cuda

原谅可能是一个简单的问题,我的C++生锈了.我正在使用CUD中的机器学习应用程序,它使用CUDA进行一些计算,我发现了以下代码行.

只是好奇如何解析这个.它看起来像一个模板化的方法,但我不理解三角括号'<<<'.这里发生了什么?

backward_scale_kernel<<<n, BLOCK>>>(x_norm, delta, batch, n, size, scale_updates);
Run Code Online (Sandbox Code Playgroud)

对于上下文,"n"作为函数参数传入,我找不到BLOCK的定义或分配位置.

tal*_*ies 8

我确信这已经有了很好的重复,但是<<< >>>你看到的装饰器是一个CUDA运行时API 语法扩展,它允许指定CUDA内核调用的执行参数.

完整的语法是

kernel_function<<<grid dimensions, block dimensions, dynamic shared memory, stream ID>>>( ....arguments....)
Run Code Online (Sandbox Code Playgroud)

CUDA运行时API前端将此语法扩展为对编译器发出的样板的一对内联函数调用,以允许在运行时启动基础GPU内核.