欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

cuda grid 和block理解(二)

发布时间:2025/4/5 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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)满足:

总结

以上是生活随笔为你收集整理的cuda grid 和block理解(二)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。