对cuda函数grid中的block的理解(1)
2017-02-20 12:37
281 查看
#include<stdio.h> int sum = 0; __global__ void f(){ printf("gridDim.x = %d\n",gridDim.x); printf("gridDim.y = %d\n",gridDim.y); printf("gridDim.z = %d\n",gridDim.z); printf("blockDim.x = %d\n",blockDim.x); printf("blockDim.y = %d\n",blockDim.y); printf("blockDim.z = %d\n",blockDim.z); printf("threadIdx.x = %d\n",threadIdx.x); printf("threadIdx.y = %d\n",threadIdx.y); printf("threadIdx.z = %d\n",threadIdx.z); printf("blockIndx.x = %d\n",blockIdx.x); printf("blockIndx.y = %d\n",blockIdx.y); printf("blockIndx.z = %d\n",blockIdx.z); } int main(){ printf("sum = %d\n",sum); dim3 test(3,2,2);//总共3*2*2=12个block <<<grid中block的布局,block中thread的布局>>> 下面调用test代表grid布局包含block的布局(x,y,z) f return 0; }
sum = 0 gridDim.x = 3 gridDim.x = 3 gridDim.x = 3 gridDim.x = 3 gridDim.x = 3 gridDim.x = 3 gridDim.x = 3 gridDim.x = 3 gridDim.y = 2 gridDim.y = 2 gridDim.y = 2 gridDim.y = 2 gridDim.y = 2 gridDim.y = 2 gridDim.y = 2 gridDim.y = 2 gridDim.z = 2 gridDim.z = 2 gridDim.z = 2 gridDim.z = 2 gridDim.z = 2 gridDim.z = 2 gridDim.z = 2 gridDim.z = 2 blockDim.x = 1 blockDim.x = 1 blockDim.x = 1 blockDim.x = 1 blockDim.x = 1 blockDim.x = 1 blockDim.x = 1 blockDim.x = 1 blockDim.y = 1 blockDim.y = 1 blockDim.y = 1 blockDim.y = 1 blockDim.y = 1 blockDim.y = 1 blockDim.y = 1 blockDim.y = 1 blockDim.z = 1 blockDim.z = 1 blockDim.z = 1 blockDim.z = 1 blockDim.z = 1 blockDim.z = 1 blockDim.z = 1 blockDim.z = 1 threadIdx.x = 0 threadIdx.x = 0 threadIdx.x = 0 threadIdx.x = 0 threadIdx.x = 0 threadIdx.x = 0 threadIdx.x = 0 threadIdx.x = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.z = 0 threadIdx.z = 0 threadIdx.z = 0 threadIdx.z = 0 threadIdx.z = 0 threadIdx.z = 0 threadIdx.z = 0 threadIdx.z = 0 blockIndx.x = 1 blockIndx.x = 1 blockIndx.x = 0 blockIndx.x = 0 blockIndx.x = 2 blockIndx.x = 2 blockIndx.x = 0 blockIndx.x = 0 blockIndx.y = 0 blockIndx.y = 1 blockIndx.y = 1 blockIndx.y = 1 blockIndx.y = 0 blockIndx.y = 1 blockIndx.y = 0 blockIndx.y = 0 blockIndx.z = 0 blockIndx.z = 0 blockIndx.z = 0 blockIndx.z = 1 blockIndx.z = 0 blockIndx.z = 0 blockIndx.z = 1 blockIndx.z = 0 gridDim.x = 3 gridDim.x = 3 gridDim.x = 3 gridDim.x = 3 gridDim.y = 2 gridDim.y = 2 gridDim.y = 2 gridDim.y = 2 gridDim.z = 2 gridDim.z = 2 gridDim.z = 2 gridDim.z = 2 blockDim.x = 1 blockDim.x = 1 blockDim.x = 1 blockDim.x = 1 blockDim.y = 1 blockDim.y = 1 blockDim.y = 1 blockDim.y = 1 blockDim.z = 1 blockDim.z = 1 blockDim.z = 1 blockDim.z = 1 threadIdx.x = 0 threadIdx.x = 0 threadIdx.x = 0 threadIdx.x = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.y = 0 threadIdx.z = 0 threadIdx.z = 0 threadIdx.z = 0 threadIdx.z = 0 blockIndx.x = 1 blockIndx.x = 2 blockIndx.x = 1 blockIndx.x = 2 blockIndx.y = 1 blockIndx.y = 0 blockIndx.y = 0 blockIndx.y = 1 blockIndx.z = 1 blockIndx.z = 1 blockIndx.z = 1 blockIndx.z = 1
相关文章推荐
- 对cuda函数block中thread的理解(2)
- CUDA:一维、二维的grid、block的核函数线程分配
- CUDA 的 Threading:Block 和 Grid 的設定與 Warp
- CUDA的Threading:Block和Grid设定
- 【并行计算-CUDA开发】CUDA编程——GPU架构,由sp,sm,thread,block,grid,warp说起
- CUDA软件架构—网格(Grid)、线程块(Block)和线程(Thread)的组织关系以及线程索引的计算公式
- CUDA 的 Threading:Block 和 Grid 的設定與 Warp
- cuda编程之thread,block and grid
- gpu/cuda-01-grid/block/thread
- CUDA编程——GPU架构,由sp,sm,thread,block,grid,warp说起
- CUDA中grid、block、thread、warp与SM、SP的关系
- CUDA的Threading:Block和Grid设定
- CUDA的Threading:Block和Grid设定
- CUDA: Threading的Block和Grid的設定與 Warp
- cuda-Block和Grid设定
- CUDA 的 Threading:Block 和 Grid 的設定與 Warp
- How do I choose grid and block dimensions for CUDA kernels?
- Understanding CUDA grid dimensions, block dimensions and threads organization
- CUDA里面GRID, BLOCK 边界检测
- Cuda 学习教程(五):GPU架构-Sp,sm,thread,block,grid,warp