Документация / РусскийИсходный текст ↗

Отладка и диагностика

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/драйвер/инструментарий, входные данные и фактические выходные данные. Удалите конфиденциальную информацию и следуйте руководству по участию.