CUDA/PyCUDA: диагностика сбоя запуска, исчезающего при cuda-gdb
Кто-нибудь знает вероятные пути расследования сбоев запуска ядра, которые исчезают при запуске под Cuda-GDB? Назначения памяти находятся в пределах спецификации, при каждом запуске одного и того же ядра каждый раз происходит сбой, и (пока) он не завершился с ошибкой в отладчике.
О, Великий ТАК Гуру, что теперь?
2 ответа
cuda-gdb выливает всю разделяемую память и регистрируется в локальной памяти. Поэтому, когда что-то работает нормально, построено для отладки, и в противном случае происходит сбой, это обычно означает, что доступ к разделяемой памяти выходит за границы. cuda-memcheck может помочь, в зависимости от того, какую карту вы используете. В этом отношении Fermi лучше старых карт.
РЕДАКТИРОВАТЬ: Возвращаясь к плохим старым временам, я помню, что у меня был злобный GT9500, который генерировал похожие ошибки NV13 и имел случайные сбои кода при работе с ядрами с очень большим объемом памяти и большим объемом совместной памяти. Никогда при отладке. Я поставил его на плохое аппаратное обеспечение и перешел на GT200, чтобы с тех пор не увидеть подобную ошибку. Одной из возможностей может быть плохое оборудование. Это G92 (9800GT или аналогичный)?
CUDA GDB может сделать некоторые операции cuda синхронными.
- Вы читаете из памяти после инициализации?
- вы используете потоки?
- Вы запускаете более одного ядра?
- Где и как это терпит неудачу?