Отладка CUDA Nvidia NSight: «Ошибка запуска сетки CUDA» - PullRequest
3 голосов
/ 17 октября 2011

Когда я пытаюсь отладить произвольное приложение CUDA, например, Образец умножения или скручивания матрицы из Nvidia GPU Computing SDK 4.0 всегда выдает результат, подобный следующему:


Parallel Nsight Debug
CUDA grid launch failed: CUcontext: 2059192 CUmodule: 348912936 Function: _Z9matrixMulILi32EEvPfS0_S0_ii
……
……

И появляется файл со следующим содержанием:


                   Parallel Nsight CUDA Debugger

Приложение, отлаживаемое с помощью отладчика Nexus CUDA, не смогло найти любой связанный источник. Это может быть по ряду причин:

1) CUDA не инициализирован. Убедитесь, что cuInit был вызван, и он вернул успешный результат.

2) Контексты CUDA не созданы. Как только контекст создан, память может быть исследована в контексте. Каждый контекст отображается как один «поток» в представлении потоков Visual Studio. (Отладка | Windows | Потоки)

3) Нет активных сеток CUDA ни в каком контексте. Для достижения контрольных точек должна быть запущена сетка.

4) Вы выбрали «Контекст по умолчанию» в представлении «Темы Visual Studio». Этот контекст является заполнителем, показанным, когда нет доступных фактических CUDA контексты. Он не показывает реальные данные.

5) Модули CUDA не загружены. Вы можете увидеть, какие модули загружены в каждом контексте CUDA, показав Виды модулей Visual Studio. (Отладка | Windows | Модули)

6) Символики не найдены для загруженного .cubin. Модуль должен быть собран с отладочной информацией. Пожалуйста, укажите -G0 переключатель при сборке.

7) Ошибка запуска сетки при работе ядра.


Каждая точка останова в соответствующем файле .cu полностью игнорируется во время выполнения. Когда я просто запускаю приложение без Nsight Debugging, программа выполняется без проблем.

Что я могу сделать, чтобы решить эту проблему?

Моя настройка:

  • 1xIntel GPU и 1x NV 570GTX, я хочу использовать опцию локальной отладки
  • Win 7. Pro 64Bit
  • Dev Env .: VS2008 или VS2010
  • CUDA 4.0 & Parallel Nsight 2.0
  • Версия драйвера NV: 285,38
  • WPF отключен
  • TDR отключен
  • Windows работает в базовом режиме (без аэро)
  • Свойства проекта: Cuda Runtime API -> GPU-> Создать отладочную информацию GPU -> Да (-G0)

Ответы [ 4 ]

2 голосов
/ 25 октября 2011

CUDA Grid Launch имеет широкий спектр причин.Этот, вероятно, обращается к массиву за пределами его выделенного размера.что в мире x86 называется ошибкой сегментации.я отлаживаю их, выборочно комментируя части ядра, которое вы тестируете, до тех пор, пока ошибка не исчезнет.(что мы привыкли называть отладкой волчьего забора).Другой причиной сбоя запуска сетки является то, что ядру требуется слишком много времени (1 или 2 секунды) для выполнения.

причина, по которой отладчик не помогает, в том, что отладчик останавливает ТОЛЬКО 1 поток в 1 блоке!Ваша ошибка доступа наступит раньше.Также вы не можете использовать printf, чтобы найти ошибку, поскольку выходные данные не возвращаются в случае сбоя запуска сетки.

2 голосов
/ 17 октября 2011

Во-первых, вам нужно убедиться, что ваш дисплей управляется встроенной графикой Intel, а не графическим процессором NVIDIA. Это происходит потому, что когда вы достигаете точки останова в коде CUDA, вы останавливаете весь графический процессор, поэтому, если тот же графический процессор использовался для отображения, ваша система естественным образом блокировалась бы.

Обратите внимание, что требования к оборудованию для Parallel Nsight указывают на то, что вам нужно два поддерживаемых графических процессора , тогда как у вас есть только один, но , если я правильно понимаю, можно использовать графический процессор не Intel для отображения (я не пробовал).

Предполагая, что вышеприведенное работает, вы должны начать с проб сэмплов, включенных в Parallel Nsight. Их можно найти в группе меню «Параллельный просмотр» в меню «Пуск».

1 голос
/ 24 мая 2017

Чтобы добавить потенциальное решение поверх уже данных ответов, один из способов избежать ошибки - запустить монитор NSight с правами администратора.

0 голосов
/ 20 декабря 2011

Ответом на это, безусловно, является использование правильного драйвера для установки Parallel NSight.Для последней версии (2.1 RC2, в настоящее время) это версия драйвера 285.86.Для текущей стабильной версии 2.0 это версия драйвера 270.81, как упоминалось в другом постере.

...