update: 2015/09/28
reference:
1. Professional CUDA C Programming
2. I touchs: Get Started On NVIDIA Jetson TK1
3. I touchs: How to re-flash your Jetson TK1 Development Kit
4. I touchs: Using the Jetson TK1 as a remote development environment for CUDA
A. 在 Nsight Eclipse Edition 撰寫程式如下:
// 檔名: checkDimension.cu
#include <cuda_runtime.h>
#include <stdio.h>
__global__ void checkIndex(const int N)
{
int i = blockIdx.x * blockDim.x + threadIdx.x;
if (i < N)
printf("threadIdx:(%d, %d, %d), blockIdx:(%d, %d, %d), blockDim:(%d, %d, %d), gridDim:(%d, %d, %d)\n",
threadIdx.x, threadIdx.y, threadIdx.z,
blockIdx.x, blockIdx.y, blockIdx.z,
blockDim.x, blockDim.y, blockDim.z,
gridDim.x, gridDim.y, gridDim.z);
}
int main(int argc, char **argv)
{
// define total data element
int nElem = 5;
printf("\n");
printf(">> total data count = %d \n", nElem);
// define grid and block structure
dim3 block(3);
dim3 grid((nElem + block.x - 1) / block.x);
printf(">> define block dimension = %d \n", block.x);
printf(">> we get grid dimension = %d \n", grid.x);
// check grid and block dimension from host side
printf("\n* check grid and block dimension from host side *\n");
printf("grid.x = %d , grid.y = %d , grid.z = %d\n", grid.x, grid.y, grid.z);
printf("block.x = %d , block.y = %d , block.z = %d\n", block.x, block.y, block.z);
printf("\n");
// check grid and block dimension from device side
printf("*check grid and block dimension from device side *\n");
checkIndex<<<grid, block>>>(nElem);
// reset device before you leave
cudaDeviceReset();
return 0;
}
-----------------------------------------------------------------------------------------------
B. 執行結果: