gpt4 book ai didi

c++ - cuda中每个 block 一个线程

转载 作者:行者123 更新时间:2023-11-30 04:03:28 26 4
gpt4 key购买 nike

如果我有一个二维 vector 序列(或流),并且我想为每个二维 vector 使用一个线程,我可以为每个 vector 分配一个 block ,为每个 block 分配一个线程吗?我必须先将它转换为一维数组吗?或者只有线程可以通过 blockIdx.x 和 blockIdx.y 访问 vector 元素?

内核启动参数是什么?

假设 vsize= 二维 vector 的数量(我想将其用作 block 的数量)

这是否正确:

mykernel<<vsize,1>>()

每个 vector 的计算都是独立的。我的设备计算能力是 2.1

最佳答案

是的,您可以使用 CUDA 为每个 block 启动一个线程。这通常不是您从机器中获得性能的方式,因为它会在一个线程运行时留下约 97% 的执行资源空闲。

如果你想在每个 block 中启动一个线程,这是正确的语法:

mykernel<<<gridsize, 1>>>(...);

其中 gridsize 是您打算启动的每个网格的 block 数。每个 block 使用一个线程通常用于向新程序员介绍 CUDA,但通常不应用于面向性能的代码。

在上述情况下,每个 block 将以单个线程启动,并且该线程将具有线程索引(threadIdx.xthreadIdx.ythreadIdx.z) 都是零。 block 索引(blockIdx.x 等)将由您的 gridsize 变量确定。

关于c++ - cuda中每个 block 一个线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24406974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com