Есть ли в любом случае для печати значения dim3 - Размеры сетки, размеры блока в Cuda? - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь напечатать количество потоков, которые я использовал (объявлено в моем коде), и количество блоков, которые я создаю. Они имеют тип: dim3 (Я использую программирование на Си.)

Мой код выглядит примерно так:

//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 для float и т. д.

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете использовать этот вид кода для отображения размеров сетки в блоках и блоков измерений в потоках перед запуском ядра:

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

С некоторыми исследованиями вы можете легко найти, как это сделать. Также помните, что у вас есть документация, которая охватывает тип вектора dim3 :

Этот тип является целочисленным векторным типом на основе uint3, который используется для указания размеров. При определении переменной типа dim3 любой неуказанный компонент инициализируется равным 1.

Таким образом, поскольку он использует целые числа без знака, вы также можете использовать% u вместо% d в вызове printf.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...