Отладка и диагностика
English | 简体中文 | 日本語 | Deutsch | Русский
Документация · Компилятор · Среда выполнения API · 中文
1. Найдите неисправный этап.
| Стадия или симптом | Сначала проверьте |
|---|---|
| Cargo Ошибка манифеста или разрешения зависимостей | Пути, функции, файл блокировки и кеш зависимостей |
| Ошибка сборки Rust | Первая ошибка компилятора, набор инструментов и комбинация функций |
| CUDA Ошибка поиска в наборе инструментов | CUDA_PATH, каталог установки и заголовки. |
| Ошибка инициализации драйвера или устройства | Доступность драйверов, индекс устройств и динамическая загрузка библиотеки |
| Ошибка конфигурации Direct PTX | Функция Direct-PTX, выбор компилятора и версия PTX |
| Ошибка прямой компиляции PTX | Неподдерживаемая операция, цель или макет аргумента, указанный в ошибке. |
| Ошибка обратного чтения или синхронизации. | Более ранние асинхронные отправки, привязки ввода и ошибки устройства |
| Неправильные числовые результаты | Форма, шаги, dtype, границы, синхронизация и контракты алгоритмов |
Сохраняйте первую ошибку и ее контекст, а не только итоговую сводку ошибок сборки.
2. Журналы компиляции и кэширования
Конфигурация среды выполнения находится в ruda::runtime::config. CompilationConfig предоставляет logger, cache и check_mode. CompilationLogLevel сериализуется как disabled, basic или full; full включает информацию о компиляции на уровне исходного кода.
В примере ptx-runtime подсчитываются компиляции и попадания в дисковый кэш PTX. RUDA_PTX_TEST_CACHE читается только в этом примере, а не автоматически каждым приложением.
См. compilation.rs и ptx_runtime.rs.
3. Проверка границ
BoundsCheckMode имеет три конфигурации:
| Конфигурация | Поведение во время выполнения |
|---|---|
| auto | При регулярных запусках используются проверки; явные непроверенные запуски могут их пропустить |
| enforce | Обеспечивает проверку запуска. |
| validate | При регулярных запусках чеки сохраняются; непроверенные пути выбирают режим проверки |
Возможности обнаружения зависят от компилятора и бэкенда. Эти режимы не обнаруживают автоматически все обращения за границы, гонки и ошибки времени жизни. Не отключайте проверки лишь для продолжения ошибочного случая.
4. Асинхронные ошибки
ComputeClient::launch не возвращает вычисленные результаты. Наблюдайте за завершением посредством обратного чтения, возвращающего Result, или ожидая синхронизации. Различают проверку аргументов, компиляцию ядра и сбои выполнения устройства.
5. Воспроизведите проблему.
На странице примеров перечислены ограничения общей памяти, тензорные, побитовые случаи и случаи половинной точности.
При сообщении о проблеме укажите исходную версию, функции, полную команду, бэкенд, версию PTX, GPU/драйвер/инструментарий, входные данные и фактические выходные данные. Удалите конфиденциальную информацию и следуйте руководству по участию.