Поделиться через


Использование GPU

Примечание.

Диагностика графики Visual Studio не поддерживается в Visual Studio ARM64.

Используйте инструмент учета использования GPU в Профилировщике производительности, чтобы получить более полное представление о высокоуровневом использовании оборудования в вашем приложении Direct3D. С его помощью можно определить, привязана ли производительность приложения к ЦП или GPU, и понять, как более эффективно использовать оборудование платформы. Инструмент учета использования GPU поддерживает приложения, использующие Direct3D 12, Direct3D 11 и Direct3D 10 и не поддерживает другие графические API, например Direct2D или OpenGL.

Окно отчета об использовании GPU выглядит так:

Screenshot of GPU Usage Report, with CPU and GPU timelines

Requirements

Ниже приведены требования по применению инструмента учета использования GPU, дополняющие требования по диагностике графики.

  • GPU и драйвер, поддерживающие необходимое инструментирование синхронизации.

    Примечание.

    Дополнительные сведения о поддерживаемых драйверах и оборудовании см. в разделе Поддерживаемые драйвера и оборудование в конце этого документа.

Дополнительные сведения о требованиях по диагностике графики см. в статье по началу работы.

Работа с инструментом учета использования GPU

При запуске приложения под управлением инструмента учета использования GPU система Visual Studio создает сеанс диагностики, выводящий высокоуровневую информацию о производительности отрисовки приложения и использовании GPU в режиме реального времени.

Запуск инструмента учета использования GPU

  1. В главном меню выберите Отладка>Производительность и диагностика (или нажмите сочетание клавиш на клавиатуре: ALT+F2).

  2. В концентраторе Производительность и диагностика установите флажок Использование GPU. При необходимости установите флажки для других интересующих вас инструментов. Вы можете одновременно запустить несколько инструментов производительности и диагностики, чтобы получить более полное представление о производительности приложения.

    Screenshot of the Performance Profiler, with GPU Usage selected

    Примечание.

    Не все инструменты производительности и диагностики можно использовать одновременно.

  3. В нижней части концентратора Производительность и диагностика нажмите кнопку Пуск, чтобы запустить приложение под управлением выбранных инструментов.

Высокоуровневые сведения, отображаемые в режиме реального времени, включают в себя синхронизацию кадров, частоту кадров и уровень использования GPU. Все эти элементы информации отображаются независимо друг от друга, однако все они используют общую шкалу времени, чтобы можно было легко найти связь между ними.

Каждый график Время кадра (мс) и Кадров в секунду (кадров/с) содержит две красные горизонтальные линии, представляющие целевые показатели производительности для 60 и 30 кадров в секунду. На графике "Время кадра" приложение превышает целевой показатель производительности, когда график проходит под линией, и не достигает его, когда график проходит над линией. На графике "Кадров в секунду" действует обратный принцип — приложение превышает целевой показатель производительности, когда график проходит над линией, и не достигает его, когда график проходит под линией. В основном эти графики используются для получения общего представления о производительности приложения и выявления замедлений в работе, которые может потребоваться проверить. Например, если видите неожиданное падение частоты кадров или пик загрузки GPU, может потребоваться дальнейшая проверка.

Во время выполнения приложения под управлением инструмента учета использования GPU сеанс диагностики также собирает подробные сведения о событиях графики, которые были обработаны GPU. Эта информация используется для создания более детального отчета об использовании оборудования приложением. Поскольку создание этого отчета занимает некоторое время, его можно просмотреть только после завершения сбора информации в рамках сеанса диагностики.

Если вы хотите подробнее рассмотреть проблему производительности или использования, остановите сбор сведений о производительности, чтобы можно было создать необходимый отчет.

Чтобы создать и просмотреть отчет об использовании GPU, сделайте следующее:

  1. В нижней части окна сеанса диагностики выберите ссылку Остановка сбора или в верхнем левом углу щелкните Остановить.

    Screenshot of a diagnostics session window in the GPU Usage tool, showing Frames per second, GPU utilization, the Stop button, and the Stop collection link.

  2. В верхней части отчета выберите часть одного из графиков, где изображена соответствующая проблема. Выбранный фрагмент может иметь длину до 3 секунд. Более длинные фрагменты усекаются с конца.

    Screenshot of a diagnostics session window in the GPU Usage tool with part of the diagnostic session timeline selected.

  3. Для просмотра подробной временной шкалы выделенного фрагмента в нижней части отчета выберите view details (Просмотр сведений) в сообщении ...click here to view details of GPU usage for that range (Щелкните для просмотра сведений об использовании GPU для этого диапазона).

    Screenshot of the diagnostics session window, with range selected

Открывается новый документ с вкладками, содержащий отчет. Отчет об использовании GPU помогает определить, когда событие графики было запущено на ЦП, когда оно достигло GPU и сколько времени потребовалось GPU для его выполнения. Эти сведения помогают выявить узкие места и возможности для повышения уровня параллелизма в коде.

Экспорт в GPUView или Windows Performance Analyzer

Начиная с Visual Studio 2017, вы можете открыть эти данные с помощью GPUView и Windows Performance Analyzer. Просто выберите ссылки Открыть в GpuView или Открыть в WPA, расположенные в правом нижнем углу диагностического сеанса.

Screenshot of the diagnostics session window, with links highlighted

Работа с отчетом об использовании GPU

В верхней части отчета об использовании GPU отображаются временные шкалы для операций обработки ЦП, операций отрисовки GPU и операций копирования ЦП. Эти временные шкалы разделены светло серыми вертикальными полосами, указывающими на вертикальную синхронизацию дисплея (vsync). Частота полос соответствует частоте обновления одного из дисплеев (выбранного в раскрывающемся списке Дисплей), для которого были собраны данные об использовании GPU.

Поскольку частота обновления дисплея может превышать целевой показатель производительности, прямая зависимость вертикальной синхронизации и частоты кадров, которой должно достичь приложение, может отсутствовать. Чтобы достичь целевых показателей производительности, приложение должно завершить всю обработку, выполнить отрисовку и совершить вызов Present() с целевой частотой кадров. Отрисованный кадр не будет отображаться до следующей вертикальной синхронизации после Present().

В нижней части отчета об использовании GPU перечислены события графики, возникшие за охваченный в отчете период времени. При выборе события отображается маркер в соответствующих событиях на временных шкалах. Как правило, одно событие в потоке ЦП отображает вызов API, а другое событие на одной из временных шкал GPU показывает, когда GPU завершил задачу. Аналогично при выборе события на временной шкале в нижней части отчета показывается соответствующее событие графики.

После увеличения временных шкал в верхней части отчета видны только наиболее продолжительные события. Чтобы просмотреть более кратковременные события, увеличьте масштаб временных шкал, нажав клавишу CTRL и вращая колесико указывающего устройства либо воспользовавшись элементом управления масштабирования в левом нижнем углу верхней панели. Можно также перетаскивать содержимое панели временных шкал для перемещения по записанным событиям.

Чтобы найти желаемое, отфильтруйте отчет об использовании GPU по имени процесса, идентификатору потока и имени события. Кроме того, вы можете выбрать, какая частота обновления дисплея определяет линии вертикальной синхронизации. Вы можете отсортировать события по уровням иерархии, если ваше приложение использует интерфейс ID3DUserDefinedAnnotation для группировки команд отрисовки.

Вот дополнительные сведения:

Управление фильтром Description
Обработать Имя процесса, который вас интересует. Этот раскрывающийся список содержит все процессы, использовавшие GPU во время сеанса диагностики. Цвет, связанный с процессом, является цветом операций потока на временных шкалах.
Поток Идентификатор потока, который вас интересует. В многопоточном приложении эта информация может помочь изолировать определенные потоки, относящиеся к интересующему вас процессу. События, связанные с выбранным потоком, выделяются на каждой временной шкале.
Отображать Номер дисплея, для которого отображается частота обновления. Некоторые драйверы можно настроить для представления нескольких физических дисплеев в качестве одного большого виртуального дисплея. Может отображаться только один дисплей, даже если к компьютеру подключено несколько дисплеев.
Фильтр Ключевые слова, которые вас интересуют. В нижней части отчета будут отображаться только те события, которые полностью или частично соответствуют ключевому слову. Можно указать несколько ключевых слов, разделяя их точкой с запятой (;).
Иерархическая сортировка Флажок, указывающий, сохраняются ли или игнорируются иерархии событий, определенные с помощью пользовательских маркеров.

Список событий в нижней части отчета об использовании GPU содержит сведения о каждом событии.

Столбец Description
Имя события Имя события графики. Событие обычно соответствует одному событию на временной шкале потоков ЦП и одному событию на временной шкале GPU. Имена событий могут быть неопределенными, если инструменту учета использования GPU не удается определить имя события. Дополнительные сведения см. в примечании после этой таблицы.
Начало ЦП (нс) Время инициирования события на ЦП путем вызова API Direct3D. Время измеряется в наносекундах и отсчитывается относительно момента запуска приложения.
Начало GPU (нс) Время инициирования события в GPU. Время измеряется в наносекундах и отсчитывается относительно момента запуска приложения.
Длительность GPU (нс) Время в наносекундах, которое потребовалось для завершения события в GPU.
Имя процесса Имя приложения, из которого пришло событие.
Идентификатор потока Идентификатор потока, из которого пришло событие.

Важно!

Если GPU или драйвер не поддерживают необходимые функции инструментирования, все события будут отображаться как неопределенные. В случае возникновения этой проблемы обновите драйвер GPU и повторите попытку. Дополнительные сведения см. в разделе Поддержка оборудования и драйверов в конце этого документа.

Параметры инструмента учета использования GPU

В инструменте учета использования GPU можно настроить отложенный сбор данных профилирования, чтобы не начинать сбор сведений о сразу после запуска приложения. Поскольку данные профилирования могут иметь значительный объем, можно выполнить это действие, если вы знаете, что снижения производительности приложения регистрируются лишь с недавнего времени.

Чтобы отложить профилирование относительно запуска приложения, выполните следующие действия.

  1. В главном меню выберите Отладка>Производительность и диагностика (или нажмите сочетание клавиш на клавиатуре: ALT+F2).

  2. В концентраторе Производительность и диагностика рядом с элементом Использование GPU щелкните ссылку Параметры.

  3. На странице свойств Общие в области GPU Profiling Configuration (Конфигурация профилирования GPU) снимите флажок Begin profiling at app start (Начать профилирование с момента запуска приложения), чтобы отложить профилирование.

    Screenshot of Object Property Pages, showing collection options

Важно!

На данный момент вы не сможете отложить профилирование для приложений Direct3D 12.

После запуска приложения в инструменте учета использования GPU вам будет доступна дополнительная ссылка в нижней части окна инструмента учета использования GPU. Чтобы начать сбор данных профилирования, выберите ссылку Start (Запуск) в сообщении Start collecting additional detailed GPU Usage Data (Запуск сбора дополнительных подробных данных об использовании GPU).

Поддержка оборудования и драйверов

Поддерживаются следующие драйверы и оборудование GPU:

Vendor Описание GPU Требуемая версия драйвера
Intel® Процессоры Intel® четвертого поколения (Haswell)

- Intel® HD Graphics (GT1)
- Intel® HD Graphics 4200 (GT2)
- Intel® HD Graphics 4400 (GT2)
- Intel® HD Graphics 4600 (GT2)
- Intel® HD Graphics P4600 (GT2)
- Intel® HD Graphics P4700 (GT2)
- Intel® HD Graphics 5000 (GT3)
- Intel® Iris™ Graphics 5100 (GT3)
- Intel® Iris™ Pro Graphics 5200 (GT3e)
(используйте самые последние версии драйверов)
AMD® Большинство продуктов, выпущенных после серии AMD Radeon™ HD 7000-series (кроме AMD Radeon™ HD 7350-7670)

AMD Radeon™ GPU, AMD FirePro™ GPU и акселераторы AMD FirePro GPU на базе архитектуры Graphics Core Next (GCN)

Гибридные процессоры (Accelerated Processing Unit — APU) AMD® E-Series и AMD A-series на базе архитектуры Graphics Core Next (GCN) (Kaveri, Kabini, Temash, Beema, Mullins)
14.7 RC3 или более поздней версии
NVIDIA® Большинство продуктов, выпущенных после серии NVIDIA® GeForce® 400-series

NVIDIA® GeForce® GPU, NVIDIA Quadro® GPU и акселераторы NVIDIA® Tesla™ GPU на базе архитектуры Fermi™, Kepler™ или Maxwell™
343.37 или более поздней версии

В настоящее время не поддерживаются конфигурации с несколькими GPU, такими как NVIDIA® SLI™ и AMD Crossfire™. Средства настройки гибридной графики, например NVIDIA® Optimus™ и AMD Enduro™, поддерживаются.