#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#define N 512
#define K 64
__global__ void printf_base()
{
printf("Hello \n");
}
void printf_base_test()
{
dim3 block(1);
dim3 grid(1);
printf_base << < grid, block >> > ();
}
__global__ void grid_block_Idx()
{
printf(" blockIdx.x=%d blockIdx.y=%d threadIdx.x=%d threadIdx.y=%d kernel print test \n", blockIdx.x,blockIdx.y,threadIdx.x, threadIdx.y);
}
void grid_block_Idx_test()
{
//针对block容量的测试
//dim3 block(32, 32);//经过测试发现,在本台机器block的上限,就是block(32,32),如果block(33.33),kernel函数中的内容就无法被调用(比如printf语句)
//dim3 block(16, 64);//block(16, 64)是可以的,但是block(16,65)就不可以,说明当前系统当前显卡,block当中的线程数量上限是16*64=32*32=1024个
//dim3 grid(1, 1);
//针对grid容量的测试
/*
dim3 block(1, 1);
dim3 grid(8192, 8192);//(64,64)是可以的,(128,128)也是可以的,(256,256)也是可以的,(1024,1024)也是可以的,(4096,4096)也是可以的
//(8192,8192)也是可以的,感觉grid中的block的数量是可以没有上限的
*/
//综合测试
dim3 block(2, 2);
dim3 grid(512, 512);
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");
grid_block_Idx << < grid, block >> > ();
}
int main()
{
//printf_base_test();
grid_block_Idx_test();
return 0;
}
以上是测试工程.cu文件的内容。