dim3 grid(3, 2);
dim3 block(5, 3);

可以转置一下理解

#include <stdio.h>
#include <iostream>
using namespace std;__global__ void hello_from_gpu()
{const int b = blockIdx.x;const int c = blockIdx.y;const int tx = threadIdx.x;const int ty = threadIdx.y;// cout<<b<<endl;printf("Hello World from block-(%d,%d) and thread-(%d, %d)!\n", b,c, tx, ty);
}int main(void)
{const dim3 grid(3, 2);const dim3 block(5, 3);//const dim3 block_size(2, 4);hello_from_gpu<<<grid, block>>>();cudaDeviceSynchronize();return 0;
}
dim3 grid(3, 2);
dim3 block(5, 3);
nvcc hello5.cu
./a.out
Hello World from block-(2,0) and thread-(0, 0)!
Hello World from block-(2,0) and thread-(1, 0)!
Hello World from block-(2,0) and thread-(2, 0)!
Hello World from block-(2,0) and thread-(3, 0)!
Hello World from block-(2,0) and thread-(4, 0)!
Hello World from block-(2,0) and thread-(0, 1)!
Hello World from block-(2,0) and thread-(1, 1)!
Hello World from block-(2,0) and thread-(2, 1)!
Hello World from block-(2,0) and thread-(3, 1)!
Hello World from block-(2,0) and thread-(4, 1)!
Hello World from block-(2,0) and thread-(0, 2)!
Hello World from block-(2,0) and thread-(1, 2)!
Hello World from block-(2,0) and thread-(2, 2)!
Hello World from block-(2,0) and thread-(3, 2)!
Hello World from block-(2,0) and thread-(4, 2)!
Hello World from block-(0,0) and thread-(0, 0)!
Hello World from block-(0,0) and thread-(1, 0)!
Hello World from block-(0,0) and thread-(2, 0)!
Hello World from block-(0,0) and thread-(3, 0)!
Hello World from block-(0,0) and thread-(4, 0)!
Hello World from block-(0,0) and thread-(0, 1)!
Hello World from block-(0,0) and thread-(1, 1)!
Hello World from block-(0,0) and thread-(2, 1)!
Hello World from block-(0,0) and thread-(3, 1)!
Hello World from block-(0,0) and thread-(4, 1)!
Hello World from block-(0,0) and thread-(0, 2)!
Hello World from block-(0,0) and thread-(1, 2)!
Hello World from block-(0,0) and thread-(2, 2)!
Hello World from block-(0,0) and thread-(3, 2)!
Hello World from block-(0,0) and thread-(4, 2)!
Hello World from block-(0,1) and thread-(0, 0)!
Hello World from block-(0,1) and thread-(1, 0)!
Hello World from block-(0,1) and thread-(2, 0)!
Hello World from block-(0,1) and thread-(3, 0)!
Hello World from block-(0,1) and thread-(4, 0)!
Hello World from block-(0,1) and thread-(0, 1)!
Hello World from block-(0,1) and thread-(1, 1)!
Hello World from block-(0,1) and thread-(2, 1)!
Hello World from block-(0,1) and thread-(3, 1)!
Hello World from block-(0,1) and thread-(4, 1)!
Hello World from block-(0,1) and thread-(0, 2)!
Hello World from block-(0,1) and thread-(1, 2)!
Hello World from block-(0,1) and thread-(2, 2)!
Hello World from block-(0,1) and thread-(3, 2)!
Hello World from block-(0,1) and thread-(4, 2)!
Hello World from block-(2,1) and thread-(0, 0)!
Hello World from block-(2,1) and thread-(1, 0)!
Hello World from block-(2,1) and thread-(2, 0)!
Hello World from block-(2,1) and thread-(3, 0)!
Hello World from block-(2,1) and thread-(4, 0)!
Hello World from block-(2,1) and thread-(0, 1)!
Hello World from block-(2,1) and thread-(1, 1)!
Hello World from block-(2,1) and thread-(2, 1)!
Hello World from block-(2,1) and thread-(3, 1)!
Hello World from block-(2,1) and thread-(4, 1)!
Hello World from block-(2,1) and thread-(0, 2)!
Hello World from block-(2,1) and thread-(1, 2)!
Hello World from block-(2,1) and thread-(2, 2)!
Hello World from block-(2,1) and thread-(3, 2)!
Hello World from block-(2,1) and thread-(4, 2)!
Hello World from block-(1,1) and thread-(0, 0)!
Hello World from block-(1,1) and thread-(1, 0)!
Hello World from block-(1,1) and thread-(2, 0)!
Hello World from block-(1,1) and thread-(3, 0)!
Hello World from block-(1,1) and thread-(4, 0)!
Hello World from block-(1,1) and thread-(0, 1)!
Hello World from block-(1,1) and thread-(1, 1)!
Hello World from block-(1,1) and thread-(2, 1)!
Hello World from block-(1,1) and thread-(3, 1)!
Hello World from block-(1,1) and thread-(4, 1)!
Hello World from block-(1,1) and thread-(0, 2)!
Hello World from block-(1,1) and thread-(1, 2)!
Hello World from block-(1,1) and thread-(2, 2)!
Hello World from block-(1,1) and thread-(3, 2)!
Hello World from block-(1,1) and thread-(4, 2)!
Hello World from block-(1,0) and thread-(0, 0)!
Hello World from block-(1,0) and thread-(1, 0)!
Hello World from block-(1,0) and thread-(2, 0)!
Hello World from block-(1,0) and thread-(3, 0)!
Hello World from block-(1,0) and thread-(4, 0)!
Hello World from block-(1,0) and thread-(0, 1)!
Hello World from block-(1,0) and thread-(1, 1)!
Hello World from block-(1,0) and thread-(2, 1)!
Hello World from block-(1,0) and thread-(3, 1)!
Hello World from block-(1,0) and thread-(4, 1)!
Hello World from block-(1,0) and thread-(0, 2)!
Hello World from block-(1,0) and thread-(1, 2)!
Hello World from block-(1,0) and thread-(2, 2)!
Hello World from block-(1,0) and thread-(3, 2)!
Hello World from block-(1,0) and thread-(4, 2)!
所以,一个线程需要两个内置的坐标变量(blockIdx,threadIdx)来唯一标识,它们都是dim3类型变量,其中blockIdx指明线程所在grid中的位置,而threaIdx指明线程所在block中的位置,如图中的Thread (1,1)满足:

cuda grid 和block理解(二)相关推荐

  1. CUDA:一维、二维的grid、block的核函数线程分配

    1.一维grid,一维block int nx = 1 << 14;int ny = 1 << 14;int dimx = 32;dim3 block(dimx, 1);dim ...

  2. [原]CUDA中grid、block、thread、warp与SM、SP的关系

    [原]CUDA中grid.block.thread.warp与SM.SP的关系 2015-3-27阅读209 评论0 首先概括一下这几个概念.其中SM(Streaming Multiprocessor ...

  3. matlab中cuda编程中分配grid和block dimension的时候的注意事项

    这两天在MATLAB里面用CUDA, 结果老是不对, 找了半天才发现, 原来是分配的问题 所以提醒小伙伴们, 分配的时候先看下你的GPU性能 >> gpuDeviceans = CUDAD ...

  4. Cuda 程序设计中 Grid 和 Block 维度设置的注意事项

    1. Cuda 线程的 Grid 架构 Cuda 线程分为 Grid 和 Block 两个级别,Grid.Block.Thread 的关系如下图. 一个核函数目前只包括一个 Grid,也就是图中的 G ...

  5. CUDA运行时 Runtime(二)

    CUDA运行时 Runtime(二) 一. 概述 下面的代码示例是利用共享内存的矩阵乘法的实现.在这个实现中,每个线程块负责计算C的一个方子矩阵C sub,块内的每个线程负责计算Csub的一个元素.如 ...

  6. 初学docker理解二

    docker理解二 <此文仅仅个人对于docker的理解,不涉及任何其他的东西> 随着对docker理解的深入脑海里总是会浮现几个问题: 1. docker到底是什么 docker现实中究 ...

  7. 【经典算法实现 44】理解二维FFT快速傅里叶变换 及 IFFT快速傅里叶逆变换(迭代法 和 递归法)

    [经典算法实现 44]理解二维FFT快速傅里叶变换 及 IFFT快速傅里叶逆变换(迭代法 和 递归法) 一.二维FFTFFTFFT快速傅里叶变换 公式推导 二.二维FFTFFTFFT 及 IFFTIF ...

  8. 矩阵与行列式的区别 行列式简单理解(二三阶)

    目录 矩阵与行列式的区别 行列式简单理解(二三阶) 矩阵与行列式的区别 如下: 1. 矩阵是一个表格,行数和列数可以不一样:而行列式是一个数,且行数必须等于列数.只有方阵才可以定义它的行列式,而对于长 ...

  9. 深入理解二维码生成尺寸

    深入理解二维码生成尺寸 详细了解二维码的原理,CSDN这两篇博客不错: 转自MachineChen的博客:http://blog.csdn.net/u012611878/article/details ...

最新文章

  1. java 注解去掉缓存_java spring 使用注解来实现缓存
  2. 问一下大家个3D问题:旋转和缩放以及平移中如何插值矩阵?
  3. vCenter Server Appliance 5.5忘记root密码
  4. java web filter标签是什么,Java Web:5.Filter
  5. 生成sql 脚本没有索引
  6. python-global全局变量
  7. Kafka 安装和搭建 (一)
  8. fdtd算法的matlab程序,FDTD算法的Matlab程序
  9. r语言 图形一览_R语言统计与绘图:ggplot2图形组合布局
  10. .NET Core跨平台的奥秘[中篇]:复用之殇
  11. HTTP 500 - 内部服务器错误的解决
  12. 基于jsoneditor二次封装一个可实时预览的json编辑器组件(react版)
  13. linux skype的安装
  14. RMAN高级应用_pizi.pdf
  15. C/C++ libcurl CURLOPT_NOSIGNAL选项
  16. 校园宽带客户端认证程序无法继续初始化绑定通信接口网络地址失败_解决办法
  17. 关于注册校验和密钥生成软件问题
  18. 关于win弹出cmd命令行问题
  19. 实现对文件夹进行加密
  20. 评估人-自主系统团队通信的方法(1)

热门文章

  1. HBase在大搜车金融业务中的应用实践
  2. MySQL-MongoDB开源监控利器之PMM
  3. eclipse egit(分支管理 上)
  4. swift 用协议实现代理传值功能
  5. PHP变量的变量——可变变量
  6. Port Forwarding Port Triggering
  7. 回顾我学过的编程语言
  8. 微软CEO鲍尔默力推HTML5:称其为平台的粘合剂
  9. NAND FLASH读写速度计算方法详解
  10. 机器学习之神经网络模型-上(Neural Networks: Representation)