CUDA简介——Grid和Block内Thread索引

news/2025/2/7 13:12:42/

1. 引言

前序博客:

  • CUDA简介——基本概念
  • CUDA简介——编程模式
  • CUDA简介——For循环并行化

Thread Index:

  • 每个Thread都有其thread index。
    • 在Kernel中,可通过内置的threadIdx变量来获取其thread index。threadIdx为三维的,有相应的(x,y,z)。
  • Thread Blocks最多有3个维度,因此,每个维度都有相应的index:
    • threadIdx.x
    • threadIdx.y
    • threadIdx.z

如:
在这里插入图片描述

使用threadIdx,足以确定某Thread在单个block内的位置,但该threadIdx,在整个grid来看,其是不唯一的。

如,启动kernel时配置的grid的x维度有2个block,且每个block内的x维度有4个Threads,则这2个block内的threadIdx.x的取值范围均为0到3:
在这里插入图片描述
为从整个grid来唯一索引Thread,需额外再引入一些索引变量:

  • Thread Index:以dim3 threadIdx来表示,有threadIdx.x、threadIdx.y、threadIdx.z。
  • Block Index:以dim3 blockIdx来表示,有blockIdx.x、blockIdx.y、blockIdx.z。
  • Block Dimension:以dim3 blockDim来表示,有blockDim.x、blockDim.y、blockDim.z。
  • Grid Dimension:以dim3 gridDim来表示,有gridDim.x、gridDim.y、gridDim.z。

从而,Grid内索引:

  • threadIdx仅在其自身Thread Block内是唯一的。
  • 为唯一表示某Thread在Grid内的唯一索引,需计算:【几乎每个CUDA kernel,都需要确定其Thread在Grid内的唯一索引】
    在这里插入图片描述

如:
在这里插入图片描述
通过如下例子,可更好地理解各个index值的含义。
在这里插入图片描述

参考资料

[1] 2019年5月视频 Intro to CUDA (part 4): Indexing Threads within Grids and Blocks


http://www.ppmy.cn/news/1258731.html

相关文章

电动工具直流调速电路是CMOS专用集成电路芯片GS069,电源电压范 围宽、功耗小、抗干扰能力强

GS069电动工具直流调速电路是CMOS专用集成电路,具有电源电压范 围宽、功耗小、抗干扰能力强等特点。通过外接电阻网络,改变与之相接 的VMOS 管的输出,达到控制电动工具转速的作用。该电路输出幅值宽, 频率变化小,占空比…

Flink入门之核心概念(三)

任务槽 TaskSlots: 任务槽,是TaskManager提供的用于执行Task的资源(CPU 内存) TaskManager提供的TaskSlots的个数:主要由Taskmanager所在机器的CPU核心数来决定,不能超过CPU的最大核心数 1.可以在flink/conf/flink-c…

LINUX 下部署github仓库

打开tumx django-admin startproject project_name #创建django项目 project_name配置git ssh-keygen # 生成密钥 连接 github 在github中打开setting 添加密钥 并且允许 write access git init # 把当前文件夹配置为git仓库 git config --global user.name xxx git config --g…

【问题记录】mvc配置拦截器xml生效而配置类不生效

问题是使用xml配置生效,但是代码配置失效,找了很久,基本上没看到这个问题,有也没有解决方案,唉。 先记录一下xml的方式,后续再查查。 1.创建登录拦截器 public class LoginInterceptor implements Handl…

深度学习在计算机视觉中的应用

深度学习在计算机视觉中的应用 摘要:本文介绍了深度学习在计算机视觉领域的应用,包括目标检测、图像分类、人脸识别等。通过分析深度学习在计算机视觉中的实际应用案例,阐述了深度学习在计算机视觉中的优势和未来发展趋势。 一、引言 计算…

UVa512追踪电子表格中的单元格题解

题目 有一个r行c列(1≤r,c≤50)的电子表格,行从上到下编号为1~r,列从左到右编号为 1~c。如图(a)所示,如果先删除第1、5行,然后删除第3,6,7,9列,结果如图(b)所示。 接下来在第2、3、5行前各插入一个空行,然后在第3列前插入一个空列, 会得到如图(e)的结果。 你的任务是模拟这样…

微服务实战系列之MemCache

前言 书接前文,马不停蹄,博主继续书写Cache的传奇和精彩。 Redis主要用于数据的分布式缓存,通过设置缓存集群,实现数据的快速响应,同时也解决了缓存一致性的困扰。 EhCache主要用于数据的本地缓存,因无法保…

007:vue实现与iframe实现页面数据通信

首页先搭建一个html页面和vue页面,在vue页面中,嵌入我们需要的iframe页面 文章目录 1. 搭建 html 页面和 vue 页面2. 实现 iframe 向 vue 页面通信3. 在实现 vue 向 iframe 页面通信 1. 搭建 html 页面和 vue 页面 暂定为 iframeDemo.html 和 vueDemo.v…