当前位置: 首页 > article >正文

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

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.kler.cn/a/159067.html

相关文章:

  • React中组件通信的几种方式
  • 【网络安全】XSS注入
  • 后台管理系统(开箱即用)
  • PaoluGPT——千里挑一
  • ThinkPHP 模型如何更新数据
  • 网络安全练习之 ctfshow_web
  • 《路由与交换技术》读书笔记
  • 【开源】基于Vue和SpringBoot的开放实验室管理系统
  • 分类预测 | Matlab实现OOA-CNN-SVM鱼鹰算法优化卷积支持向量机分类预测
  • JeecgBoot 框架升级至 Spring Boot3 的实战步骤
  • nodejs+vue+微信小程序+python+PHP在线购票系统的设计与实现-计算机毕业设计推荐
  • 【C++11】线程库/异常
  • 4-Docker命令之docker exec
  • Error: Cannot find module ‘@npmcli/config‘ 最新解决办法
  • javaScript(四):函数和常用对象
  • 第一百十九回 如何Text组件中的文字自动换行
  • 【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
  • 【1day】蓝凌OA 系统custom.jsp 接口任意文件读取漏洞学习
  • Codeforces Round 913 (Div. 3)
  • 软件测试方法之等价类测试
  • GAN:WGAN-DIV
  • 智慧垃圾分拣站:科技改变城市环境,创造更美好的未来
  • OCP Java17 SE Developers 复习题08
  • MySQL 8.x 自签证书通过keytool和openssl转成JKS文件
  • 剑指 Offer(第2版)面试题 18:删除链表的节点
  • Canal笔记:安装与整合Springboot模式Mysql同步Redis