cuda grid block size

编译命令:nvcc hello.cu -o hello
运行:./hello

#include <stdio.h>
__global__ void helloWorldKernel() {
    // 获取线程在 block 中的坐标
    int tx = threadIdx.x;
    int ty = threadIdx.y;
    int tz = threadIdx.z;

    // 获取 block 在 grid 中的坐标
    int bx = blockIdx.x;
    int by = blockIdx.y;
    int bz = blockIdx.z;

    // 打印 Hello World + 线程和块的坐标
    printf("Hello World from thread (%2d, %2d, %2d) in block (%2d, %2d, %2d)\n",
           tx, ty, tz, bx, by, bz);
}

int main() {
    // 定义 grid 和 block 的维度
    dim3 gridSize(2, 2, 1);   // 整个 grid 有 2x2x2 = 8 个 block
    dim3 blockSize(2, 2, 2);  // 每个 block 有 2x2x2 = 8 个线程

    // 启动 kernel
    helloWorldKernel<<<gridSize, blockSize>>>();

    // 等待 kernel 执行完成
    cudaDeviceReset();

    return 0;
}

输出:

            
Hello World from thread ( 0,  0,  0) in block ( 0,  0,  0)
Hello World from thread ( 0,  0,  1) in block ( 0,  0,  0)
Hello World from thread ( 0,  1,  0) in block ( 0,  0,  0)
Hello World from thread ( 0,  1,  1) in block ( 0,  0,  0)
Hello World from thread ( 1,  0,  0) in block ( 0,  0,  0)
Hello World from thread ( 1,  0,  1) in block ( 0,  0,  0)
Hello World from thread ( 1,  1,  0) in block ( 0,  0,  0)
Hello World from thread ( 1,  1,  1) in block ( 0,  0,  0)

Hello World from thread ( 0,  0,  0) in block ( 0,  1,  0)
Hello World from thread ( 1,  0,  0) in block ( 0,  1,  0)
Hello World from thread ( 0,  1,  0) in block ( 0,  1,  0)
Hello World from thread ( 1,  1,  0) in block ( 0,  1,  0)
Hello World from thread ( 0,  0,  1) in block ( 0,  1,  0)
Hello World from thread ( 1,  0,  1) in block ( 0,  1,  0)
Hello World from thread ( 0,  1,  1) in block ( 0,  1,  0)
Hello World from thread ( 1,  1,  1) in block ( 0,  1,  0)

Hello World from thread ( 0,  0,  0) in block ( 1,  1,  0)
Hello World from thread ( 1,  0,  0) in block ( 1,  1,  0)
Hello World from thread ( 0,  1,  0) in block ( 1,  1,  0)
Hello World from thread ( 1,  1,  0) in block ( 1,  1,  0)
Hello World from thread ( 0,  0,  1) in block ( 1,  1,  0)
Hello World from thread ( 1,  0,  1) in block ( 1,  1,  0)
Hello World from thread ( 0,  1,  1) in block ( 1,  1,  0)
Hello World from thread ( 1,  1,  1) in block ( 1,  1,  0)

Hello World from thread ( 0,  0,  0) in block ( 1,  0,  0)
Hello World from thread ( 1,  0,  0) in block ( 1,  0,  0)
Hello World from thread ( 0,  1,  0) in block ( 1,  0,  0)
Hello World from thread ( 1,  1,  0) in block ( 1,  0,  0)
Hello World from thread ( 0,  0,  1) in block ( 1,  0,  0)
Hello World from thread ( 1,  0,  1) in block ( 1,  0,  0)
Hello World from thread ( 0,  1,  1) in block ( 1,  0,  0)
Hello World from thread ( 1,  1,  1) in block ( 1,  0,  0)

posted @ 2025-05-13 23:35  aixueforever  阅读(21)  评论(0)    收藏  举报