三重尖括号启动语法
使用 >> 调用内核
三重尖括号启动语法 是 CoddyKit 上的免费 CUDA Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 CUDA Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 CUDA Academy 课程共包含 4 节课。
启动方式不同
您不能像调用普通函数那样调用内核。您需要启动它,并告诉 GPU 同时创建多少个线程。🚀
<<< >>> 语法
启动时会使用 CUDA 特有的三重尖括号。您需要在其中、普通参数列表之前指定启动配置。
myKernel<<<blocks, threads>>>(args);第一个数字:线程块
第一个值设置要启动多少个线程块。线程块是一组共同运行并共享片上快速内存的线程。
myKernel<<<4, threads>>>(args); // 4 blocks第二个数字:每个线程块的线程数
第二个值设置每个线程块的线程数。启动的线程总数等于线程块数量乘以每个线程块的线程数。
myKernel<<<4, 256>>>(args); // 1024 threads参数放在后面
方括号之后,在圆括号中传递内核的普通参数,就像任何 C++ 调用一样。
doubleIt<<<1, 256>>>(devicePtr);启动是异步的
启动是异步的:CPU 会将工作排入队列,然后立即继续执行。GPU 则在后台运行内核。
配置可以使用变量
启动配置中的数字不必是字面量。您通常会在运行时根据数据大小计算线程块数量。
int blocks = (n + 255) / 256;
add<<<blocks, 256>>>(c, a, b, n);使用 dim3 处理二维数据
对于二维或三维的网格和线程块,您可以使用 dim3 值。它会将 x、y 和 z 方向的大小组合到启动配置中。
dim3 threads(16, 16);
blur<<<grid, threads>>>(img);选择每个线程块的线程数
每个线程块的线程数可以安全地设为 128 或 256。该数值必须是 32 的倍数,并且不得超过 1024。
kernel<<<blocks, 128>>>(data);错误的配置会导致失败
如果每个线程块请求的线程过多,启动会静默失败。您必须在启动后立即检查错误。
kernel<<<1, 2048>>>(p); // too big, fails从左到右阅读
可以这样理解一次启动:让这个内核在这么多个线程块中运行,每个线程块包含这么多线程,并使用这些参数。理解之后就很简单了。
vectorAdd<<<grid, block>>>(c, a, b, n);快速检查
现在来检查一下启动配置。
回顾:启动
您可以使用 kernel<<
用 AI 导师学习 C++ — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「三重尖括号启动语法」课时是免费的吗?
是的 — 「三重尖括号启动语法」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 CUDA Academy 课程的其余内容,请升级到 CoddyKit PRO。 CUDA Academy 课程共包含 4 节课。
「三重尖括号启动语法」这节课中我会学到什么?
使用 >> 调用内核 你通过在浏览器中直接运行的动手代码来练习 CUDA Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 CUDA Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 CUDA Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「三重尖括号启动语法」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 CUDA Academy 课中编写并运行代码吗?
能。每节 CUDA Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。