Мелкозернистая проверка памяти для CUDA? - PullRequest
1 голос
/ 15 мая 2011

Я подозреваю, что у меня ошибка с мелкозернистой памятью в большом ядре CUDA, которое я запускаю.На стороне устройства printf показывает некоторые переменные значения переменных, которые должны быть детерминированными.«Стабильная» версия инструментов разработки CUDA использует режим эмуляции удаленного устройства, а его версия cuda-gdb не работает с шаблонными функциями.Cuda-memcheck работает, но ничего не ловит.

В процессоре я бы использовал valgrind или электрический забор, чтобы ловить ошибки памяти, подобные этой.Какие хитрости существуют для отладки ошибок памяти, если у вас есть только printf?

Например, есть ли способ заполнить все пространство памяти с помощью nans и использовать printfs, чтобы найти, где они впервые появляются в моих вычислениях?

1 Ответ

1 голос
/ 15 мая 2011

Для такого рода вещей мне нравится выделять все доступное глобальное пространство памяти, а затем самостоятельно управлять памятью. Используйте пользовательскую функцию memset, чтобы установить все выделение для распознаваемой битовой комбинации размера слова, а затем инициализировать блоки в выделении для использования вашим ядром. Если вы реализуете простое утверждение на стороне устройства для перехвата этого битового шаблона и потока отчета, блока, строки, где он отображается, вы должны иметь возможность изолировать за пределами границ считывания глобальной памяти, которые cuda-memcheck не перехватывает.

...