我正在尝试打印我已使用的线程数(在我的代码中声明)以及我正在创建的块数。它们的类型为:dim3(我正在使用 C 编程。)
我的代码看起来像下面这样:
//Declared a NxN grid
*int N = 4; //Num of rows
int numThreads = 4;
dim3 dimBlock(numThreads);
dim3 dimGrid((N/dimBlock.x)+(!(N%dimBlock.x)?0:1));
Run Code Online (Sandbox Code Playgroud)
您能帮我了解如何在终端上打印此信息吗?使用 printf,要使用哪个说明符;就像我们使用 %d 表示 int,%f 表示 float 等。
小智 5
在启动内核之前,您可以使用此类代码来显示块中的网格尺寸以及线程中的块尺寸:
dim3 gridDim;
dim3 blockDim;
// here you set gridDim and blockDim to some values
printf("Grid : {%d, %d, %d} blocks. Blocks : {%d, %d, %d} threads.\n",
gridDim.x, gridDim.y, gridDim.z, blockDim.x, blockDim.y, blockDim.z);
kernel<<<gridDim, blockDim>>>();
Run Code Online (Sandbox Code Playgroud)
通过一些研究,您可以轻松找到如何做到这一点。另请记住,您有一个涵盖 dim3 向量类型的文档:
该类型是基于 uint3 的整数向量类型,用于指定维度。定义 dim3 类型的变量时,任何未指定的组件都将初始化为 1。
因此,由于它使用无符号整数,您也可以在 printf 调用中使用 %u 而不是 %d。
| 归档时间: |
|
| 查看次数: |
2562 次 |
| 最近记录: |