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