Аннотирование кода с помощью NVTX
Именуйте диапазоны, чтобы временные шкалы было проще читать.
«Аннотирование кода с помощью NVTX» — бесплатный урок CUDA Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CUDA Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CUDA Academy содержит 4 уроков всего.
Временным шкалам нужны подписи
Необработанная временная шкала заполнена безымянными полосами. NVTX позволяет добавлять собственные имена, чтобы профилировщик отображал Ваш код. 🏷️
Что такое NVTX
NVTX — это расширение инструментов NVIDIA: небольшая библиотека для пометки областей и событий, которые Nsight затем отображает на временной шкале.
Подключение заголовочного файла
Сначала подключите один заголовочный файл. После этого вызовы для добавления пометок будут доступны в любом месте Вашего кода на стороне хоста.
#include <nvtx3/nvToolsExt.h>Пометка диапазона
Оберните участок работы в именованный диапазон. Вызов push запускает его, а pop завершает, рисуя одну подписанную полосу.
nvtxRangePush("load data");
// work here
nvtxRangePop();Вложенность push и pop
Диапазоны вкладываются, как скобки. Внутренний push должен завершиться вызовом pop раньше внешнего, поэтому подписи аккуратно располагаются на временной шкале.
Мгновенные маркеры
Для одного момента времени добавьте маркер вместо диапазона. Он фиксирует одно событие, например начало эпохи.
nvtxMark("epoch start");Раскрашивание диапазонов
Каждому диапазону можно назначить цвет, чтобы этапы сразу различались. Загрузка может быть синей, а вычисления — зелёными.
Понятные временные шкалы
С NVTX представление Nsight показывает такие фазы, как предварительная обработка и вывод результатов, по их именам. Вам больше не нужно расшифровывать загадочные символы ядер.
Почти бесплатны в отключённом состоянии
Когда профилировщик не подключён, вызовы NVTX почти ничего не стоят. Вы можете оставить аннотации в коде без заметных затрат.
Это выполняется на стороне хоста
NVTX аннотирует код на стороне хоста — сторону CPU, которая координирует работу. Он обрамляет области, где выполняются Ваши ядра и копирования.
Обёртки RAII
В современном C++ часто оборачивают диапазон в небольшой объект RAII. Он автоматически вызывает pop при завершении области видимости, поэтому Вы ничего не забудете.
Быстрая проверка
Вы хотите, чтобы на временной шкале Nsight появились именованные и подписанные области.
Итоги
NVTX превращает загадочные полосы в именованные диапазоны и маркеры. Несколько вызовов push и pop делают временные шкалы Nsight сразу понятными. 👏
Часто задаваемые вопросы
Урок «Аннотирование кода с помощью NVTX» бесплатный?
Да — полный текст урока «Аннотирование кода с помощью NVTX» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CUDA Academy, подпишись на CoddyKit PRO. Курс CUDA Academy содержит 4 уроков всего.
Чему я научусь в уроке «Аннотирование кода с помощью NVTX»?
Именуйте диапазоны, чтобы временные шкалы было проще читать. Ты практикуешь CUDA Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CUDA Academy?
Предыдущий опыт не требуется. CUDA Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Аннотирование кода с помощью NVTX»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CUDA Academy?
Да. Каждый урок CUDA Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Представление временной шкалы в Nsight Systems
- Метрики ядер в Nsight Compute
- Вычислительно- и memory-bound задачи
- Аннотирование кода с помощью NVTX