gpt4 book ai didi

cuda - 无论如何要打印dim3值 - Cuda中的网格尺寸, block 尺寸?

转载 作者:行者123 更新时间:2023-12-02 02:54:33 25 4
gpt4 key购买 nike

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

This type is an integer vector type based on uint3 that is used to specify dimensions. When defining a variable of type dim3, any component left unspecified is initialized to 1.



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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com