- «Начать отладку CUDA» устройство отладки (ядро) код, т. е. материал, составленный с помощью
nvcc
->bunch of preprocessing
->cudafe++
->cicc
toolchain path.
- "Local для Windows Debugger" отлаживает код хоста, а материал, собранный с обеих
nvcc
->bunch of preprocessing
->cl
или просто cl
.
Это не имеет значения, в каком файле, .cpp
, .cu
или .h
ваш код. Единственное, что имеет значение, это то, что ваш код аннотируется как __device__
или __global__
или нет.
Начиная с CUDA 7.5 RC (Aug 2015), в Windows вы можете отлаживать только один из них за раз. В Linux и OSX вы можете отлаживать оба одновременно с cuda-gdb
.
Смотрите также: NVIDIA CUDA Compiler Driver NVCC
Другие вещи, которые могут привести к разочарованию во время отладки на Windows:
- Вы настраиваете свойства для одной конфигурации пары/платформы, но работает еще один
- что-то пошло не так с файлами
.pdb
для модулей хоста и устройства. Проверьте nvcc
, cl
, nvlink
и link
вариантов. Например, информация об отладке хоста и устройства может быть записана в один и тот же файл, перезаписывая друг друга.
- Агрессивная оптимизация: встраивание, оптимизация локалей и т. Д. Код выпуска почти невозможно отладить для человека. Отладчик можно одурачить.
- Наличие неопределенного поведения и/или нарушений доступа к памяти. Они могут легко разбивать отладчик, приводящий к неожиданным результатам, таким как точки останова, которые не попадают.
- Вы забыли проверить ошибки для одного из вызовов CUDA API или ядра, была ошибка, а контекст CUDA был мертв, а ядра больше не запускались. Но вы этого еще не знаете. Ваш хост-код продолжает работать, и вы ожидаете, что точки останова ядра будут удалены, но этого никогда не произойдет, потому что ядро просто не будет вызвано.
- Все описанные выше ошибки могут быть в библиотеке. Не ожидайте, что библиотеки будут без ошибок.
- У компиляторов, отладчиков и драйверов есть ошибки. Но вы всегда должны сначала предположить, что с вашим кодом что-то не так, и если ничего не помогает, расследуйте и отправляйте отчет об ошибке поставщику.
Написание заявления и добавление вопросительного знака в конце его не вызывает у него вопроса? – talonmies
Помогает ли http://stackoverflow.com/q/10827995/681865 (т. Е. Вы строите для отладки?) – talonmies
@talonmies idd. протестировали все эти ответы, но они не имеют никакого значения. – Matthias