Процедура отладки CUDA для недетерминированного вывода - PullRequest
4 голосов
/ 21 июля 2011

Я отлаживаю свой код восстановления изображений на основе CUDA 4.0 / Thrust на моей 64-битной системе Ubuntu 10.10, и я пытаюсь выяснить, как отладить эту ошибку времени выполнения, в которой отображаются мои выходные изображенияк некоторому случайному «шуму».В моем коде нет вывода генератора случайных чисел, поэтому я ожидаю, что выходные данные будут согласованы между запусками, даже если это неправильно.Однако это не ...

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

Я пытался использовать gpu ocelot , но у него есть проблемы с распознаванием некоторых из моих CUDAи CUSPARSE вызовы функций.

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

1 Ответ

2 голосов
/ 21 июля 2011

Вы уверены, что все ваши ядра имеют правильную обработку размера блоков / остатков? Единственное место, где мы видели недетерминированные результаты, возникало, когда в конце массива не было элементов данных, которые не обрабатывались.

Наши ядра изначально предназначались для данных, которые, как известно, были целым числом, кратным 256 элементам. Поэтому мы использовали размер блока 256 и сделали простое деление, чтобы получить количество блоков. Когда данные затем изменялись на любую длину, оставшиеся 255 или менее элементов никогда не обрабатывались. Эти пятна на выходе имели случайные данные.

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