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

拓展知识:了解grid、block、thread 关系

拓展知识:了解grid、block、thread 关系

如何理解呢?
实际上这个角标的计算也是虚拟地址,只不过为了底层寻址方便设计的,就跟c/c++概念中的虚拟地址一样。
一个三维的东西,grid最顶层,其次是block,最底层是thread。

1. 三者的概念关系

名称含义层次关系示例
Grid(网格)启动一次 kernel(GPU 函数)时的整体线程集合最外层一个 grid 中包含多个 block
Block(线程块)一组可以共享共享内存、可同步的线程grid 的组成单元一个 block 中包含多个 thread
Thread(线程)最基本的执行单元block 的组成单元每个 thread 执行相同 kernel 代码,不同数据

2. 三者的维度

名称含义类型范围
threadIdx.{x,y,z}当前线程在 block 内的索引局部索引[0, blockDim.{x,y,z}-1]
blockIdx.{x,y,z}当前 block 在 grid 内的索引全局块索引[0, gridDim.{x,y,z}-1]
blockDim.{x,y,z}每个 block 的线程数结构体常量固定值
gridDim.{x,y,z}grid 中 block 的数量结构体常量固定值

3.常见的维度

3.1 . 1D(一维)

#define M 32
#define N 64
dim3 block(N) //一个block有N个线程
dim3 grid(M) //一个grid 有 32个block
//1. blockIdx.x 范围是啥? 0~31
//2. threadIdx.x 范围是啥 0~63
//3. blockDim.x = 64 
//如何求取一维的线程标号呢?
int global_id = threadIdx.x (当前线程在这个block的偏移) + blockIdx.x(第几个block) * blockDim.x(恒定的值,为64)

3.2 . 2D(二维)

#define GM 16
#define GN 32
#define BM 64
#define BN 128
dim3 block(BM,BN);
dim3 grid(GM,GN)
//gridDim.x	grid 在 X 方向上的 block 数	16
//gridDim.y	grid 在 Y 方向上的 block 数	32
//blockDim.x	每个 block 在 X 方向的 thread 数	64
//blockDim.y	每个 block 在 Y 方向的 thread 数	128
//blockIdx.x 范围是啥?当前 block 在 grid 中 X 方向的索引 0~15
//blockIdx.y  当前 block 在 grid 中 Y 方向的索引 0~31
// threadIdx.x 当前线程在 block 内 X 方向索引 0~63
// threadIdx.y 当前线程在block内y方向的索引 0~127//二维索引:
int global_x = threadIdx.x + blockIdx.x * blockDim.x; //x方向的全局索引
int global_y = threadIdx.y + blockIdx.y * blockDim.y;//y方向上的索引//全局唯一索引
int g_id = global_y  * (gridDim.x * blockDim.x) + global_x;

3.3 三维情况

只做了解,用的少

int global_x = blockIdx.x * blockDim.x + threadIdx.x;
int global_y = blockIdx.y * blockDim.y + threadIdx.y;
int global_z = blockIdx.z * blockDim.z + threadIdx.z;int global_id = (global_z * gridDim.y * blockDim.y + global_y) * (gridDim.x * blockDim.x) + global_x;
http://www.dtcms.com/a/544580.html

相关文章:

  • 打破视频壁垒:视频融合平台EasyCVR如何实现多路视频监控上屏的高效管理?
  • 仓颉原子操作封装:从底层原理到鸿蒙高并发实战
  • BIOS 设置PC 上电自启动
  • “自然搞懂”深度学习系列(基于Pytorch架构)——03渐入佳境
  • 网站建设及推广枣强怎么做汽车网站推广方案
  • 做网站什么软件给女朋友做情侣网站的程序员
  • 天津网站备案深圳高端设计公司名单
  • 不只是字符串:Actix-web 路由与 FromRequest的类型安全艺术
  • Tongweb7部署应用
  • 无锡网络建站网络推广计划书案例
  • 一位脑瘫患者如何接单4位数
  • CSS3(前端基础)
  • uv成功安装环境但是找不到模块
  • 关于相机标定要用到的两个网站(棋盘格/Aruco等)
  • 前端工程化流程搭建与配置优化指南
  • 04-函数与模块-教程
  • 电商商城网站建设方案外贸网站分类
  • 做网站路径产品设计优秀网站
  • MetaGPT、AutoGen、XAgent camel仔细对比
  • 小白指南:Apache DolphinScheduler 补数据功能实操演示
  • 使用 JDOM 库生成 XML 文件并返回 File
  • 打工人日报#20251029
  • (107页PPT)食品零售行业数字化转型解决方案参考(附下载方式)
  • 【打靶日记】VulNyx 之 Lower5
  • Linux小课堂: LNMP架构下Discuz论坛部署全流程解析
  • 徐州网站建设推广做餐饮企业网站的费用
  • 网站搭建合同基于漏斗模型网站关键路径分析
  • 利用腾讯开源 Hunyuan3D 2.1:在 DigitalOcean GPU Droplet 上快速搭建 3D 模型
  • 【开题答辩全过程】以 多媒体素材管理系统为例,包含答辩的问题和答案
  • 聊聊高并发访问遇到过期的缓存项测试策略