проверить глобальную память устройства с помощью cuda-gdb - PullRequest
6 голосов
/ 13 июля 2011

Я пытаюсь использовать cuda-gdb для проверки глобальной памяти устройства.Кажется, все значения равны нулю, даже после cudaMemcpy.Однако в ядре значения в общей памяти хорошие.Любая идея?Проверяет ли cuda-gdb глобальную память устройства вообще.Кажется, что память хоста и общая память устройства в порядке.Благодарю.

Ответы [ 3 ]

14 голосов
/ 17 июня 2016

Предположим, d_array - указатель на память устройства,

(cuda-gdb) print d_array
$1 = (double *) 0x13082c3000

Чтобы получить доступ к его значению, сначала преобразуйте его в глобальный указатель памяти:

(cuda-gdb) print ((@global double *)d_array)[0]
$2 = 0.5

Для доступа к массиву:

(cuda-gdb) print ((@global double *)d_array)[0]@3
$3 = {0.5, 0.4, 0.3}
1 голос
/ 31 мая 2012

В настоящее время cuda-gdb может читать данные, которые вы скопировали в глобальную память, только после запуска ядра CUDA. Это может улучшиться в будущих выпусках.

0 голосов
/ 14 июля 2011

Один простой способ проверить данные в глобальной памяти - это записать данные обратно из глобальной памяти обратно на хост и посмотреть значения. Но я не уверен, что это можно проверить с помощью cuda-gdb.

Кстати, как вы узнали, что значения в глобальной памяти - это все нули. Если ваш конечный результат полностью равен нулю, это означает, что в вашем коде что-то не так. CUDA возвращает ноль, если не знает, что именно это за значение. Например, в основном CUDA не возвращает NAN, вместо этого он возвращает ноль.

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