Анализ использования пропускной способности памяти вершин

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

Счетчики Qualcomm Adreno

На устройствах с графическими процессорами Qualcomm Adreno некоторые заметные счетчики включают в себя:

Прилавок Описание
Чтение памяти вершин Пропускная способность данных вершин, считываемых из внешней памяти.
Среднее число байт/вершина Средний размер данных вершин в байтах.
% остановки выборки вершин Процент тактовых циклов, в которых графический процессор блокируется при обработке данных вершин.

Счетчики ARM Мали (НЗП)

На устройствах с графическими процессорами ARM Mali к некоторым заметным счетчикам относятся:

Прилавок Описание
Загрузка/сохранение битов чтения из внешней памяти Биты данных, считываемые из внешней памяти модулем загрузки/сохранения, усредняются по шейдерным ядрам.
Загрузка/сохранение тактов чтения из кэша L2 Биты данных, считываемые из кэша L2 модулем загрузки/сохранения, усредняются по ядрам шейдеров.
[Более]

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

Встречный анализ

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

Пропускная способность чтения памяти Vertex для одного кадра: среднее значение 327 МБ/с и пиковое значение 1,16 ГБ/с.
Рисунок 1. Пропускная способность чтения памяти вершин для одного кадра со средним значением 327 МБ/с и пиковым значением 1,16 ГБ/с.

Мы рекомендуем пиковую пропускную способность чтения вершинной памяти не более 1,5 ГБ/с и среднюю пропускную способность не более 500 МБ/с. Более высокие значения указывают на одну из нескольких распространенных проблем:

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

Проблемы с размером вершин также можно диагностировать с помощью дорожки «Средние байты/вершины» , размер которой мы рекомендуем не превышать 32 байтов или вершин.

Средний размер вершины для одного кадра, среднее значение 31,3 байта.
Рисунок 2. Средний размер вершины для одного кадра, среднее значение 31,3 байта.

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