我正在尝试打印我使用的线程数(在我的代码中声明),以及我创建的块数。它们属于以下类型: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));

你能帮我看看如何在终端上打印出来吗?
使用 printf,要使用哪个说明符;就像我们使用 %d 表示 int, %f 表示浮点数,等等。

最佳答案

在启动内核之前,您可以使用这种代码以块为单位显示网格尺寸,并在线程中显示块尺寸:

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>>>();

通过一些研究,您可以轻松找到如何做到这一点。
还要记住你有 a documentation that covers the dim3 vector type :



因此,由于它使用无符号整数,因此您也可以在 printf 调用中使用 %u 而不是 %d。

关于cuda - 无论如何要打印dim3值 - Cuda中的网格尺寸,块尺寸?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50243485/

10-12 00:43