Этот gp не используется более чем в одном приложении nvidia windows 10

Обновлено: 21.11.2024

Автор: fchollet
Дата создания: 28.04.2020
Последнее изменение: 29.04.2020
Описание: Руководство по работе с несколькими графическими процессорами и распределенному обучению для моделей Keras.

Введение

Обычно существует два способа распределения вычислений между несколькими устройствами:

Параллелизм данных, при котором одна модель реплицируется на несколько устройств или компьютеров. Каждый из них обрабатывает разные пакеты данных, а затем объединяет их результаты. Существует много вариантов этой настройки, которые различаются тем, как результаты слияния разных реплик модели, остаются ли они синхронизированными в каждой партии или они более слабо связаны и т. д.

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

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

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

  • На нескольких графических процессорах (обычно от 2 до 8), установленных на одном компьютере (один хост, обучение на нескольких устройствах). Это наиболее распространенная конфигурация для исследователей и небольших промышленных рабочих процессов.
  • В кластере из множества компьютеров, на каждом из которых размещается один или несколько графических процессоров (распределенное обучение с несколькими рабочими процессами). Это хорошая настройка для крупномасштабных отраслевых рабочих процессов, например. обучение моделей классификации изображений с высоким разрешением на десятках миллионов изображений с использованием 20–100 графических процессоров.

Настройка

Синхронное обучение на нескольких устройствах с одним хостом

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

Как это работает

На каждом этапе обучения:

  • Текущий пакет данных (называемый глобальным пакетом) разделен на 8 различных подпакетов (называемых локальными пакетами). Например, если в глобальном пакете 512 образцов, в каждом из 8 локальных пакетов будет 64 образца.
  • Каждая из 8 реплик независимо обрабатывает локальный пакет: они выполняют прямой проход, затем обратный проход, выводя градиент весов относительно потери модели в локальном пакете.
  • Обновления веса, происходящие из локальных градиентов, эффективно объединяются в 8 репликах. Поскольку это делается в конце каждого шага, реплики всегда остаются синхронизированными.

На практике процесс синхронного обновления весов реплик модели обрабатывается на уровне каждой отдельной переменной веса. Это делается с помощью зеркального объекта переменных.

Как это использовать

Для проведения синхронного обучения на одном хосте и нескольких устройствах с помощью модели Keras следует использовать API tf.distribute.MirroredStrategy. Вот как это работает:

  • Создайте экземпляр MirroredStrategy , при необходимости настроив конкретные устройства, которые вы хотите использовать (по умолчанию стратегия будет использовать все доступные графические процессоры).
  • Используйте объект стратегии, чтобы открыть область действия, и в этой области создайте все необходимые объекты Keras, содержащие переменные. Как правило, это означает создание и компиляцию модели внутри области распространения.
  • Обучайте модель с помощью функции fit(), как обычно.

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

Схематично это выглядит так:

Вот простой пример сквозного запуска:

Использование обратных вызовов для обеспечения отказоустойчивости

При использовании распределенного обучения вы всегда должны убедиться, что у вас есть стратегия восстановления после сбоя (отказоустойчивость). Самый простой способ справиться с этим - передать обратный вызов ModelCheckpoint в fit() , чтобы сохранять вашу модель через равные промежутки времени (например, каждые 100 пакетов или каждую эпоху). Затем вы можете перезапустить обучение с сохраненной модели.

Вот простой пример:

Советы по повышению производительности tf.data

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

Примечание о пакетной обработке наборов данных

При создании набора данных убедитесь, что он объединен с глобальным размером пакета. Например, если каждый из ваших 8 графических процессоров способен запускать пакет из 64 образцов, вы вызываете использование глобального размера пакета 512.

Вызов dataset.cache()

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

Это может повысить производительность, если:

  • Не ожидается, что ваши данные будут меняться от итерации к итерации.
  • Вы читаете данные из удаленной распределенной файловой системы.
  • Вы читаете данные с локального диска, но ваши данные поместятся в памяти, а ваш рабочий процесс в значительной степени связан с вводом-выводом (например, чтение и декодирование файлов изображений).

Вызов dataset.prefetch(buffer_size)

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

Распределенное синхронное обучение с несколькими работниками

Как это работает

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

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

Как это использовать

  1. Настройте кластер (мы приводим указатели ниже).
  2. Настройте соответствующую переменную среды TF_CONFIG для каждого рабочего процесса. Это сообщает работнику, какова его роль и как общаться с его коллегами.
  3. На каждом рабочем потоке запустите код построения и компиляции модели в рамках объекта MultiWorkerMirroredStrategy, аналогично тому, как мы это делали для обучения на одном хосте.
  4. Запустите оценочный код на назначенном оценочном компьютере.

Настройка кластера

Сначала настройте кластер (совокупность машин). Каждая машина должна быть настроена индивидуально, чтобы иметь возможность запускать вашу модель (как правило, на каждой машине будет работать один и тот же образ Docker) и иметь доступ к вашему источнику данных (например, GCS).

Управление кластером выходит за рамки этого руководства. Вот документ, который поможет вам начать работу. Вы также можете взглянуть на Kubeflow.

Настройка переменной среды TF_CONFIG

Хотя код, работающий на каждом рабочем потоке, почти такой же, как код, используемый в рабочем процессе с одним хостом (за исключением другого объекта стратегии tf.distribute), существует одно существенное различие между рабочим процессом с одним хостом и несколькими рабочими процессами. рабочий процесс заключается в том, что вам необходимо установить переменную среды TF_CONFIG на каждой машине, работающей в вашем кластере.

Переменная среды TF_CONFIG представляет собой строку JSON, которая указывает:

  • Конфигурация кластера, а также список адресов и портов машин, составляющих кластер
  • «Задача» исполнителя, то есть роль, которую эта конкретная машина должна играть в кластере.

Один пример TF_CONFIG:

В настройке синхронного обучения с несколькими работниками допустимыми ролями (типами задач) для машин являются "рабочий" и "оценщик".

Например, если у вас есть 8 машин с 4 графическими процессорами каждая, у вас может быть 7 рабочих и один оценщик.

  • Рабочие процессы обучают модель, каждый из которых обрабатывает подпакеты глобального пакета.
  • Один из рабочих процессов (рабочий процесс 0) будет выполнять функции "главного" исполнителя особого типа, который отвечает за сохранение журналов и контрольных точек для последующего повторного использования (обычно в облачном хранилище).
  • Оценщик запускает непрерывный цикл, который загружает последнюю контрольную точку, сохраненную главным рабочим процессом, выполняет ее оценку (асинхронно от других рабочих процессов) и записывает журналы оценки (например, журналы TensorBoard).

Выполнение кода на каждом воркере

Вы должны запустить код обучения для каждого работника (включая начальника) и код оценки для оценщика.

Обучающий код в основном такой же, как и при установке с одним хостом, за исключением того, что вместо MirroredStrategy используется MultiWorkerMirroredStrategy.

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

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

Это содержимое относится к Виртуальному рабочему столу Azure с объектами Виртуального рабочего стола Azure Azure Resource Manager. Если вы используете Виртуальный рабочий стол Azure (классический вариант) без объектов Azure Resource Manager, см. эту статью.

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

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

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

Выберите один из размеров виртуальных машин Azure серии NV, NVv3, NVv4 или NCasT4_v3. Они предназначены для виртуализации приложений и рабочих столов и позволяют ускорить GPU для большинства приложений и пользовательского интерфейса Windows. Правильный выбор пула хостов зависит от ряда факторов, в том числе от конкретных рабочих нагрузок вашего приложения, желаемого качества взаимодействия с пользователем и стоимости. Как правило, более крупные и более мощные графические процессоры обеспечивают лучшее взаимодействие с пользователем при заданной плотности пользователей, в то время как меньшие и дробные размеры графических процессоров позволяют более точно контролировать стоимость и качество. Учитывайте вывод ВМ серии NV при выборе ВМ, подробности о выводе из эксплуатации NV

Виртуальные машины серий Azure NC, NCv2, NCv3, ND и NDv2 обычно не подходят для узлов сеансов виртуальных рабочих столов Azure. Эти виртуальные машины предназначены для специализированных высокопроизводительных вычислений или средств машинного обучения, например, созданных с помощью NVIDIA CUDA. Они не поддерживают ускорение графического процессора для большинства приложений или пользовательского интерфейса Windows.

Создайте пул хостов, подготовьте виртуальную машину и настройте группу приложений

Создайте новый пул хостов, используя виртуальную машину выбранного размера. Инструкции см. в разделе Учебник. Создание пула узлов с помощью портала Azure.

Виртуальный рабочий стол Azure поддерживает отрисовку и кодирование с ускорением графического процессора в следующих операционных системах:

  • Windows 10 версии 1511 или новее
  • Windows Server 2016 или новее

Многосессионная ОС специально не указана, однако экземпляры NV. Лицензия GRID поддерживает 25 одновременных пользователей, см. серию NV

Вы также должны настроить группу приложений или использовать группу настольных приложений по умолчанию (с названием "Группа настольных приложений"), которая автоматически создается при создании нового пула хостов. Инструкции см. в разделе Учебник. Управление группами приложений для Виртуального рабочего стола Azure.

Установите поддерживаемые графические драйверы на виртуальную машину

Чтобы воспользоваться возможностями графического процессора виртуальных машин Azure серии N в Azure Virtual Desktop, необходимо установить соответствующие графические драйверы. Следуйте инструкциям в разделе Поддерживаемые операционные системы и драйверы для установки драйверов. Поддерживаются только драйверы, распространяемые Azure.

  • Для виртуальных машин Azure NV-серии, NVv3-серии или NCasT4_v3-серии только драйверы NVIDIA GRID, а не драйверы NVIDIA CUDA, поддерживают ускорение графического процессора для большинства приложений и пользовательского интерфейса Windows. Если вы решите установить драйверы вручную, обязательно установите драйверы GRID. Если вы решите установить драйверы с помощью расширения виртуальной машины Azure, драйверы GRID будут автоматически установлены для этих размеров виртуальных машин.
  • Для виртуальных машин Azure серии NVv4 установите драйверы AMD, предоставленные Azure. Вы можете установить их автоматически с помощью расширения виртуальной машины Azure или вручную.

После установки драйвера требуется перезагрузка ВМ. Используйте шаги проверки, описанные выше, чтобы убедиться, что графические драйверы были успешно установлены.

Настроить отрисовку приложений с ускорением на GPU

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

  1. Подключитесь к рабочему столу виртуальной машины, используя учетную запись с правами локального администратора.
  2. Откройте меню "Пуск" и введите "gpedit.msc", чтобы открыть редактор групповой политики.
  3. Перейдите в дереве к разделу Конфигурация компьютера > Административные шаблоны > Компоненты Windows > Службы удаленных рабочих столов > Узел сеансов удаленных рабочих столов > Среда удаленных сеансов.
  4. Выберите политику Использовать аппаратные графические адаптеры для всех сеансов служб удаленных рабочих столов и задайте для этой политики значение Включено, чтобы включить отрисовку графического процессора в удаленном сеансе.

Настроить кодирование кадров с GPU-ускорением

Удаленный рабочий стол кодирует всю графику, отображаемую приложениями и рабочими столами (независимо от того, визуализируется ли она с помощью графического или центрального процессора) для передачи клиентам удаленного рабочего стола. Когда часть экрана часто обновляется, эта часть экрана кодируется видеокодеком (H.264/AVC). По умолчанию удаленный рабочий стол не использует доступные графические процессоры для этой кодировки. Настройте групповую политику для узла сеанса, чтобы включить кодирование кадров с ускорением графического процессора. Продолжая шаги, описанные выше:

Кодирование кадров с ускорением графического процессора недоступно в виртуальных машинах серии NVv4.

Выбрать политику Настроить H.264/AVC для подключений к удаленному рабочему столу и установите для этой политики значение Enabled, чтобы включить аппаратное кодирование для AVC/H.264 в удаленном сеансе.

В Windows Server 2016 установите для параметра Предпочитать аппаратное кодирование AVC значение Всегда пытаться.

После редактирования групповых политик принудительно обновите групповую политику. Откройте командную строку и введите:

Выйти из сеанса удаленного рабочего стола.

Настроить кодирование полноэкранного видео

Кодирование полноэкранного видео можно включить даже без графического процессора.

Если вы часто используете приложения, создающие контент с высокой частотой кадров, такие как 3D-моделирование, CAD/CAM и видеоприложения, вы можете включить полноэкранное кодирование видео для удаленного сеанса. Профиль полноэкранного видео обеспечивает более высокую частоту кадров и лучшее взаимодействие с пользователем для таких приложений за счет пропускной способности сети и ресурсов хоста сеанса и клиента. Для кодирования полноэкранного видео рекомендуется использовать кодирование кадров с GPU-ускорением. Настройте групповую политику для узла сеанса, чтобы включить полноэкранное кодирование видео. Продолжая шаги, описанные выше:

Выберите политику Приоритет графического режима H.264/AVC 444 для подключений к удаленному рабочему столу и установите для этой политики значение Включено, чтобы принудительно использовать кодек H.264/AVC 444 в удаленном сеансе.

После редактирования групповых политик принудительно обновите групповую политику. Откройте командную строку и введите:

Выйти из сеанса удаленного рабочего стола.

Проверьте рендеринг приложения с ускорением на GPU

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

  • Для виртуальных машин Azure с графическим процессором NVIDIA используйте утилиту nvidia-smi, как описано в разделе Проверка установки драйвера, чтобы проверить использование графического процессора при запуске ваших приложений.
  • В поддерживаемых версиях операционной системы вы можете использовать Диспетчер задач для проверки загрузки графического процессора. Выберите GPU на вкладке "Производительность", чтобы узнать, используют ли приложения GPU.

Проверьте кодирование кадров с GPU-ускорением

Чтобы убедиться, что удаленный рабочий стол использует кодирование с ускорением графического процессора:

  1. Подключитесь к рабочему столу виртуальной машины с помощью клиента Виртуального рабочего стола Azure.
  2. Запустите средство просмотра событий и перейдите к следующему узлу: Журналы приложений и служб > Microsoft > Windows > RemoteDesktopServices-RdpCoreCDV > Operational
  3. Чтобы определить, используется ли кодирование с ускорением на графическом процессоре, найдите событие с идентификатором 170. Если вы видите сообщение "Аппаратное кодирование AVC включено: 1", значит, используется кодирование на графическом процессоре.

Проверьте кодировку полноэкранного видео

Чтобы убедиться, что удаленный рабочий стол использует полноэкранное кодирование видео:

  1. Подключитесь к рабочему столу виртуальной машины с помощью клиента Виртуального рабочего стола Azure.
  2. Запустите средство просмотра событий и перейдите к следующему узлу: Журналы приложений и служб > Microsoft > Windows > RemoteDesktopServices-RdpCoreCDV > Operational
  3. Чтобы определить, используется ли полноэкранное кодирование видео, найдите событие с идентификатором 162. Если вы видите сообщение "Доступно AVC: 1 начальный профиль: 2048", значит, используется кодирование AVC 444.

Дальнейшие шаги

Эти инструкции помогут вам настроить ускорение графического процессора на одном хосте сеансов (одной ВМ). Некоторые дополнительные рекомендации по включению ускорения графического процессора в большом пуле хостов:

Приведенная ниже публикация принадлежит Стиву Проновосту, нашему ведущему инженеру, ответственному за планировщик графического процессора и диспетчер памяти.

Мы рады представить поддержку данных о производительности графического процессора в диспетчере задач. Это одна из функций, о которых вы часто просили, и мы прислушались. Графический процессор наконец-то дебютирует в этом почтенном инструменте повышения производительности. Чтобы сразу увидеть эту функцию, вы можете присоединиться к программе предварительной оценки Windows. Или дождитесь обновления Windows Fall Creator’s Update.

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

Системные требования

В Windows доступ к графическому процессору осуществляется через модель драйвера дисплея Windows (WDDM). В основе WDDM лежит графическое ядро, которое отвечает за абстрагирование, управление и совместное использование графического процессора всеми запущенными процессами (каждое приложение имеет один или несколько процессов). Графическое ядро ​​включает в себя планировщик графического процессора (VidSch), а также диспетчер видеопамяти (VidMm). VidSch отвечает за планирование различных механизмов графического процессора для процессов, желающих их использовать, а также за арбитраж и определение приоритетов доступа между ними. VidMm отвечает за управление всей памятью, используемой графическим процессором, включая как VRAM (память на вашей видеокарте), так и страницы основной DRAM (системной памяти), к которым напрямую обращается графический процессор. Экземпляр VidMm и VidSch создается для каждого графического процессора в вашей системе.

Данные в диспетчере задач собираются непосредственно из VidSch и VidMm.Таким образом, данные о производительности графического процессора доступны независимо от того, какой API используется, будь то Microsoft DirectX API, OpenGL, OpenCL, Vulkan или даже проприетарный API, такой как Mantle от AMD или CUDA от Nvidia. Кроме того, поскольку VidMm и VidSch являются реальными агентами, принимающими решения об использовании ресурсов графического процессора, данные в диспетчере задач будут более точными, чем многие другие утилиты, которые часто делают все возможное, чтобы сделать разумные предположения, поскольку они не имеют доступа к фактическим данным. данные.

Для данных о производительности графического процессора в Диспетчере задач требуется драйвер графического процессора, поддерживающий WDDM версии 2.0 или выше. WDDMv2 был представлен в исходном выпуске Windows 10 и поддерживается примерно 70% пользователей Windows 10. Если вы не уверены, какую версию WDDM использует ваш драйвер графического процессора, вы можете использовать утилиту dxdiag, которая входит в состав Windows, чтобы выяснить это. Чтобы запустить dxdiag, откройте меню «Пуск» и просто введите dxdiag.exe. Найдите на вкладке Отображение в разделе Драйверы Модель драйвера. К сожалению, если вы используете более старый графический процессор WDDMv1.x, диспетчер задач не будет отображать для вас данные графического процессора.

Вкладка "Производительность"

На вкладке "Производительность" вы найдете данные о производительности, агрегированные по всем процессам, для всех ваших графических процессоров с поддержкой WDDMv2.

Графические процессоры и ссылки

Использование графического процессора

В верхней части правой панели вы найдете информацию об использовании различных ядер GPU.

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

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

Важно отличать ядра графического процессора от ядер графического процессора. Движки графического процессора состоят из ядер графического процессора. Например, 3D-движок может иметь 1000 ядер, но эти ядра сгруппированы вместе в сущность, называемую движком, и планируются как группа. Когда процесс получает квант времени ядра, он получает возможность использовать все базовые ядра этого ядра.

Некоторые графические процессоры поддерживают сопоставление нескольких ядер с одним и тем же базовым набором ядер. Хотя эти механизмы также могут быть запланированы параллельно, в конечном итоге они совместно используют базовые ядра. Концептуально это похоже на гиперпоточность на ЦП. Например, 3D-движок и вычислительный движок могут фактически полагаться на один и тот же набор унифицированных ядер. В таком сценарии ядра при выполнении распределяются между ядрами либо пространственно, либо во времени.

На рисунке ниже показаны механизмы и ядра гипотетического графического процессора.

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

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

На левой панели под именем графического процессора и в нижней части правой панели вы увидите совокупный процент использования графического процессора. Здесь у нас было несколько различных вариантов того, как мы могли бы агрегировать загрузку по движкам. Средняя загрузка по движкам казалась обманчивой, поскольку, например, GPU с 10 движками, запускающими игру, полностью загружающую 3D-движок, в сумме составил бы 10% общего использования! Это определенно не то, что хотят видеть геймеры. Мы также могли бы выбрать 3D-движок для представления графического процессора в целом, поскольку он, как правило, является наиболее известным и используемым движком, но это также могло ввести пользователей в заблуждение. Например, воспроизведение видео при некоторых обстоятельствах может вообще не использовать 3D-движок, и в этом случае совокупное использование графического процессора будет отображаться как 0% во время воспроизведения видео!Вместо этого мы решили выбрать процент использования самого загруженного ядра как показатель общего использования графического процессора.

Видеопамять

Под графиками движков приведены графики использования видеопамяти и сводка. Видеопамять делится на две большие категории: выделенная и общая.

Выделенная память представляет собой память, которая зарезервирована исключительно для использования графическим процессором и управляется VidMm. На дискретных графических процессорах это ваша VRAM, память, которая находится на вашей видеокарте. Â На встроенных графических процессорах это объем системной памяти, зарезервированный для графики. Многие встроенные графические процессоры избегают резервирования памяти исключительно для графического использования и вместо этого предпочитают полагаться исключительно на память, совместно используемую с ЦП, что более эффективно.

Этот небольшой объем зарезервированной памяти драйвера представлен зарезервированной аппаратной памятью.

Для встроенных графических процессоров все сложнее. Некоторые интегрированные графические процессоры будут иметь выделенную память, а другие — нет. Некоторые интегрированные графические процессоры резервируют память в прошивке (или во время инициализации драйвера) из основной DRAM. Хотя эта память выделяется из DRAM, совместно используемой с ЦП, она отбирается у Windows и выходит из-под контроля диспетчера памяти Windows (Mm) и управляется исключительно VidMm. Этот тип резервирования обычно не рекомендуется в пользу общей памяти, которая является более гибкой, но в настоящее время она требуется некоторым графическим процессорам.

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

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

В Windows есть политика, согласно которой графическому процессору разрешено использовать только половину физической памяти в любой момент времени. Это делается для того, чтобы остальная часть системы имела достаточно памяти для продолжения правильной работы. В системе 16 ГБ графическому процессору разрешено использовать до 8 ГБ этой DRAM в любой момент. Приложения могут выделять гораздо больше видеопамяти, чем это. На самом деле, видеопамять полностью виртуализирована в Windows и ограничена только общим пределом фиксации системы (т. е. общим объемом установленной памяти DRAM + размером файла подкачки на диске). VidMm гарантирует, что GPU не превысит половину бюджета DRAM, динамически блокируя и освобождая страницы DRAM. Точно так же, когда поверхности не используются, VidMm со временем освобождает страницы памяти обратно в Mm, чтобы при необходимости их можно было переназначить. Объем общей памяти, потребляемой на вкладке производительности, по сути представляет собой объем такой общей системной памяти, который в настоящее время потребляет графический процессор по сравнению с этим ограничением.

Вкладка "Процессы"

На вкладке "Процесс" вы найдете сводную информацию об использовании графического процессора с разбивкой по процессам.

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

Решение, которое мы решили использовать, состоит в том, чтобы отобразить загрузку самого загруженного ядра на всех графических процессорах для этого процесса как представление его общего использования графического процессора. Но если бы это было все, что мы сделали, все равно было бы запутанно. Одно приложение может нагружать 3D-движок на 100 %, а другое — на 100 %. В этом случае оба приложения сообщили бы об общем использовании 100%, что могло бы ввести в заблуждение. Чтобы решить эту проблему, мы добавили второй столбец, в котором указано, какой комбинации GPU и Engine соответствует отображаемое использование. Мы хотели бы услышать, что вы думаете об этом выборе дизайна.

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

Вкладка "Подробности"

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

Есть несколько вещей, которые важно отметить в отношении этих счетчиков использования видеопамяти. Счетчики представляют собой общий объем выделенной и общей видеопамяти, используемой в данный момент этим процессом. Это включает в себя как частную память (т. е. память, которая используется исключительно этим процессом), так и общую память между процессами (т. е. память, которая используется совместно с другими процессами, не путать с памятью, совместно используемой ЦП и ГП).

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

Другим интересным последствием этого является то, что некоторые системные процессы, в частности dwm.exe и csrss.exe, которые совместно используют много памяти с другими процессами, будут казаться намного больше, чем они есть на самом деле. Например, когда приложение создает окно верхнего уровня, видеопамять будет выделена для хранения содержимого этого окна. Эта поверхность видеопамяти создается csrss.exe от имени приложения, возможно, отображается в самом процессе приложения и используется совместно с оконным менеджером рабочего стола (dwm.exe), так что окно может быть размещено на рабочем столе. Видеопамять выделяется только один раз, но доступна, возможно, всем трем процессам и появляется на фоне их индивидуального использования памяти. Точно так же цепочка обмена DirectX приложения или визуальный элемент DCOMP (XAML) совместно используются компоновщиком рабочего стола. Большая часть видеопамяти, выделяемой этим двум процессам, на самом деле является результатом того, что приложение создает что-то, что используется совместно с ними, поскольку сами по себе они выделяют очень мало. По этой же причине вы увидите, что они будут расти по мере того, как ваш рабочий стол будет загружен, но имейте в виду, что на самом деле они не потребляют все ваши ресурсы.

Мы могли бы вместо этого показать разбивку частной памяти для каждого процесса и игнорировать общую память. Однако в результате многие приложения выглядели бы намного меньше, чем они есть на самом деле, поскольку в Windows мы активно используем разделяемую память. В частности, для универсальных приложений типично наличие сложного визуального дерева, которое полностью используется компоновщиком рабочего стола, поскольку это позволяет компоновщику использовать более разумный и эффективный способ рендеринга приложения только тогда, когда это необходимо, и приводит к повышению общей производительности для система. Мы не думали, что скрытие общей памяти будет правильным ответом. Мы также могли бы выбрать отображение private+shared для обычных процессов, но только private для csrss.exe и dwm.exe, но это также было похоже на сокрытие полезной информации для опытных пользователей.

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

Заключительная мысль

Мы надеемся, что эта информация окажется для вас полезной и поможет вам максимально эффективно использовать новые данные о производительности графического процессора диспетчера задач.

Будьте уверены, что команда, стоящая за этой работой, будет внимательно следить за вашими конструктивными отзывами и предложениями, так что продолжайте их поступать! Лучший способ оставить отзыв — через Центр обратной связи. Чтобы запустить Feedback Hub, используйте сочетание клавиш Windows + f. Отправьте свой отзыв (и отправьте нам голосование) в категории Среда рабочего стола -> Диспетчер задач.

Вы можете использовать устройства с совместимым графическим процессором (также называемым графической картой, видеокартой или графическим процессором) в Lightroom, чтобы ускорить задачу применения правок к изображениям в подробном представлении. Если вы запускаете Lightroom на компьютере с Windows, использование совместимого графического процессора ускоряет рендеринг изображений в Photo Grid, Square Grid и Filmstrip. Функция Enhance Details в Lightroom также ускоряется за счет графического процессора. Использование совместимого графического процессора также может обеспечить значительное повышение скорости на дисплеях с высоким разрешением, таких как мониторы 4K и 5K.

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

Системные требования для использования графического процессора для отображения

Окна

  • Юбилейное обновление Windows 10 (версия 1809) или более поздней версии
  • Графический процессор с поддержкой DirectX 12.Чтобы узнать версию DirectX в вашей системе, см. эту документацию Microsoft.
  • Графические процессоры Intel: требуется графический процессор Skylake или более поздней версии

macOS

  • macOS 10.14 или новее
  • ГП с поддержкой Metal. Чтобы узнать, поддерживает ли ваш компьютер Metal, см. эту документацию Apple.

Минимальные системные требования для использования графического процессора для обработки изображений

4 ГБ ОЗУ графического процессора или больше для дисплеев с разрешением 4 КБ и выше

  • В настоящее время Lightroom не использует более одного графического процессора. Использование двух видеоадаптеров не увеличивает производительность. Чтобы устранить проблемы, возникающие из-за конфликтующих графических драйверов, выполните шаги 5 и 6 в разделе Решение 4. Шаги по устранению неполадок графического процессора и графического драйвера.
  • Ускоряется только основное окно Lightroom. «Вторичное» окно не ускоряется графическим процессором.
  • Графические процессоры, работающие на виртуальных машинах, не тестируются и не поддерживаются.
  • При запуске Lightroom выполняется проверка видеокарты. Если тест не пройден, видеокарта отключается, даже если она соответствует минимальным требованиям. Пройдите шаги по устранению неполадок, чтобы попытаться устранить ошибку. Некоторые видеокарты, несмотря на соответствие минимальным требованиям, могут никогда не быть совместимы с Lightroom для ускорения графики.

Предложения по выбору видеокарты

Для достижения наилучшей производительности используйте дискретную графическую карту с оценкой вычислений на GPU не ниже 2000.

  • Очень высокая оценка не означает, что вы также получите отличные результаты в Lightroom Classic, поскольку производительность зависит от множества факторов.
  • Встроенные видеокарты обычно менее производительны. Их часто можно найти в ноутбуках, поскольку они потребляют меньше энергии для сохранения заряда батареи и совместного использования памяти с процессором.
  • Убедитесь, что у вас установлена ​​последняя версия драйвера для вашей видеокарты. Версии графического процессора для ноутбука и настольного компьютера имеют несколько разные названия.

Если Lightroom может использовать графический процессор, вы обнаружите, что в настройках установлен флажок «Использовать графический процессор для отображения».

(macOS) Lightroom > Настройки > Производительность

(Windows) Правка > Настройки > Производительность

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

Информация о графическом процессоре в Lightroom

Ускорение графического процессора в Lightroom

В Lightroom для параметра «Использовать графический процессор» по умолчанию установлено значение «Авто». Текущее состояние ускорения графического процессора отображается сразу под именем графического процессора. Ваша система может автоматически поддерживать базовое или полное ускорение. Если ваша система автоматически поддерживает базовое ускорение, вы можете включить полное ускорение с помощью параметра «Пользовательский».

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

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

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

Выберите этот параметр, чтобы полностью отключить ускорение графического процессора.

Выберите этот параметр, чтобы выбрать уровень поддержки графического процессора вручную.

  • Использовать GPU для отображения
  • Использовать графический процессор для обработки изображений

Использовать параметры графического процессора в Lightroom

По умолчанию Lightroom автоматически выбирает соответствующий уровень ускорения графического процессора: выключено, базовое или полное.

  • Базовое ускорение оптимизирует то, как Lightroom отправляет информацию на ваш графический процессор для отображения. Это делает Lightroom более отзывчивым и включает такие функции, как анимированное масштабирование (скрабби-зум).
  • При полном ускорении для обработки изображений используется графический процессор, а пиксели обрабатываются с помощью графического процессора в дополнение к центральному при редактировании. Используя Process Version 5, большинство корректировок теперь ускоряются с помощью графического процессора. Например, полное ускорение может повысить скорость отображения результатов при перемещении ползунка «Текстура». Использование графического процессора также помогает Lightroom соответствовать требованиям дисплеев с разрешением 4K, 5K и выше.Полное ускорение было добавлено в выпуске от ноября 2019 г. (версия 3.0). Для включения полного ускорения требуется базовое ускорение.

Чтобы определить марку и модель вашей видеокарты, запустите Lightroom и выберите «Справка» > «Информация о системе», чтобы просмотреть информацию о вашем графическом процессоре.

Информация о графическом процессоре

В настоящее время Lightroom не использует более одного графического процессора. Использование двух видеокарт не повышает производительность Lightroom.

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

Для достижения наилучших результатов подключите два (или более) монитора к одной видеокарте.

Если вам нужно использовать более одной видеокарты, убедитесь, что они одной марки и модели. В противном случае в Lightroom могут возникнуть сбои и другие конфликты. Чтобы устранить проблему, возникающую из-за конфликтующих графических драйверов, выполните шаги 5 и 6 в разделе Решение 4. Шаги по устранению неполадок графического процессора и графического драйвера.

Автор:

Проблема:

В системе с двумя графическими картами, одна из которых представляет собой интегрированное встроенное устройство (обычно Intel HD Graphics), а другая — дискретная графическая карта NVIDIA или AMD, AutoCAD использует низкоуровневое видео вместо высокопроизводительного. адаптер дисплея. Обычно это наблюдается на ноутбуках. В некоторых случаях при использовании внешнего монитора при подключении монитора используется неправильная графическая карта или он переключает AutoCAD на встроенное видео при отключении от сети.

Причины:

  • Технология конфигурации с двумя видеоадаптерами называется «Optimus» от NVIDIA и «Enduro» или «Dynamic Switchable Graphics» от AMD. Такая конструкция позволяет системе автоматически переключаться между дисплеем с высокой и низкой производительностью, чтобы использовать меньше энергии аккумулятора. Проблема возникает, когда программное обеспечение для переключения выбирает графическую карту для AutoCAD, так как она всегда использовала низкопроизводительный дисплей.
  • При использовании внешнего монитора видеопорт, к которому он подключен, может проходить только через недорогой видеоадаптер. Он также может проходить через док-станцию ​​​​или другое подобное соединение, которое может отклоняться от использования высококачественной графики в системе, заставляя AutoCAD не иметь возможности использовать ее (поскольку в этот момент система фактически недоступна). < /li>

Решение:

  • Установите последнее обновление для AutoCAD (см. раздел Установка обновлений, надстроек и улучшений).
  • Установите последнюю версию графического драйвера (см. Как установить последнюю версию сертифицированного видеодрайвера).
  • Вручную установите высококачественное видео для AutoCAD (см. раздел Настройка программного обеспечения Autodesk для использования высокопроизводительной графики).
  • Проверьте кабели монитора, чтобы убедиться, что он подключен к дискретной видеокарте, а не к встроенной карте. Совет. В Windows 10 щелкните правой кнопкой мыши рабочий стол, выберите Параметры экрана, а затем Дополнительные параметры экрана. Это покажет, к какому адаптеру подключен монитор(ы).
  • В Панель управления > Диспетчер устройств разверните Видеоадаптеры, щелкните правой кнопкой мыши Intel HD Graphics и выберите Отключить.
  • В немобильных системах панель управления видеодрайвером может не иметь возможности выбора подходящего видеоадаптера. В этом случае удалите драйверы для ненужной графической карты и используйте групповую политику, чтобы предотвратить повторную установку драйвера Windows (групповая политика для начинающих).
  • Отключите встроенный (или переключаемый) адаптер в BIOS компьютера, чтобы заставить систему использовать только высококачественную графику. Параметр BIOS может быть помечен как видео по умолчанию, интегрированное видео, видео Intel, переключаемая графика, Optimus или Enduro.

Примечание. Некоторые компьютерные системы могут использовать основную/дополнительную конфигурацию видео. Например, Intel HD Graphics будет основным графическим процессором, а графический процессор NVIDIA или AMD будет вторичным по отношению к нему. Все сигналы дисплея проходят через набор микросхем Intel, независимо от того, какая карта используется. В этой настройке в BIOS нет параметра для отключения двойной графики.

Читайте также: