cuda grid 和block理解(二)

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)满足:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值