cuda grid 和block理解(二)
生活随笔
收集整理的这篇文章主要介绍了
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理解(二)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 深入浅出让你理解什么是LLVM
- 下一篇: opencv 的特征提取算子SIFT/O