Анализ и оптимизация производительности современного процессора. Метод анализа производительности. Модель производительности Roofline.
Анализ и оптимизация производительности современного процессора. Метод анализа производительности. Модель производительности Roofline.

Модель производительности Roofline — это модель производительности, ориентированная на пропускную способность, которая широко используется в области высокопроизводительных вычислений. Он был разработан в 2009 году в Калифорнийском университете в Беркли. «Линия крыши» в модели означает, что производительность приложения не может превышать возможности машины. Каждая функция и каждый цикл в программе ограничены вычислительным объемом или объемом памяти машины. Эта концепция проиллюстрирована на изображении ниже. Производительность приложения всегда будет ограничена определенной функцией «крыши».

Аппаратное обеспечение имеет два основных ограничения: Скорость вычислений. (Пиковая вычислительная производительность, FLOPS) и скорость перемещения данных (Пиковая пропускная способность памяти, ГБ/с). Максимальная производительность приложения зависит от пика Минимальный предел между FLOPS (горизонтальная линия) и пропускной способностью платформы, умноженной на интенсивность вычислений (диагональная линия). на картинке roofline Диаграмма объединяет два приложения A и B Производительность сравнивалась с аппаратными ограничениями. приложение A требует меньше вычислительных ресурсов, его производительность ограничена пропускной способностью памяти и приложениями. B являются более вычислительно интенсивными,Поэтому на него не будут сильно влиять узкие места памяти. Сходным образом,A и B Может представлять две разные функции в программе и иметь разные характеристики производительности. линия крыши Производительность Модель учитывает это и может отображать несколько индивидуальных функций приложения на одной индивидуальной диаграмме.

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

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

Язык кода:javascript
копировать
void matmul(int N, float a[][2048], float b[][2048], float c[][2048]) {
    #pragma omp parallel for
    for(int i = 0; i < N; i++) {
        for(int j = 0; j < N; j++) {
            for(int k = 0; k < N; k++) {
                c[i][j] = c[i][j] + a[i][k] * b[k][j];
            }
        }
    }
}

давайте посчитаем Закодированныйарифметическая сила. Следовательно, в самом внутреннем теле цикла у нас есть одно сложение и одно умножение; 2 индивидуальный ФЛОП. Дополнительно у нас есть три операции чтения и одна операция записи, поэтому переносим; 4 ops * 4 bytes = 16 индивидуальныйбайт。Должен Закодированныйарифметическая силадля 2 / 16 = 0.125。AI даданныйпроизводительность Точка-точка X значение на оси.

Производительность традиционных приложений позволяет максимально эффективно использовать возможности вашей машины. SIMD èМногоядерные возможности. Обычно нам нужно много аспектов: векторизация, память, многопоточность. линия крыши Методы могут помочь оценить эти характеристики приложения. существовать roofline На графике мы можем построить скалярный одноядерный SIMD одноядерный SIMD Теоретический максимум многоядерной производительности

Это позволит нам понять, есть ли возможности для повышения производительности приложения. Если мы обнаружим, что наше приложение ограничено вычислениями (т.е. имеет высокую арифметическую сила) и ниже пиковой скалярной одноядерной производительности, нам следует рассмотреть возможность принудительной векторизации и распределения работы по нескольким отдельным потокам. Напротив, если приложение арифметическое Сильно, мы должны искать способы улучшить доступ к памяти. использовать Roofline Конечная цель Модели оптимизации производительности — поднять эти точки. Векторизация и многопоточность перемещают точку вверх, увеличивая при этом арифметическую силаоптимизация ПамятьAccess переместит точку вправо,А также может улучшить производительность.

Теоретические максимальные значения (линия крыши) обычно указаны в характеристиках оборудования, и с ними легко ознакомиться. Вы также можете рассчитать теоретический максимум, исходя из характеристик используемой машины. Обычно это нетрудно сделать, если знать параметры машины. для Intel Core i5-8259U процессор, использующий AVX2 и 2 индивидуальный Fused Multiply Add (FMA) Максимум единицы FLOP Число (одинарной точности с плавающей запятой) можно вычислить следующим образом:

Пиковое значение FLOPS = 8 (количество логических ядер) × 256 (разрядность AVX) 32 бита (размер с плавающей запятой) × 2 (FMA) × 3,8 ГГц (максимальная турбочастота) = 486,4 GFLOP

Я использовал его для экспериментов Intel NUC Kit NUC8i5BEH Максимальную пропускную способность памяти можно рассчитать следующим образом. Помните, ГДР технология позволяет осуществлять любую передачу доступа к памяти 64 немного или 8 индивидуальныйбайт。

Пиковая пропускная способность памяти = 2400 (скорость передачи данных памяти DDR4) × 2 (каналы памяти) × 8 (байты на доступ к памяти) × 1 (слот) = 38,4 Ги Б/с

картина Empirical Roofline Tool: https://bitbucket.org/berkeleylab/cs-roofline-toolkit/src/master/2 и Intel Advisor: https://software.intel.com/content/www/us/en/develop/tools/advisor.html3 Такие автоматизированные инструменты способны эмпирически определять теоретические максимумы путем запуска набора заранее подготовленных тестов производительности. Более высокая производительность может быть достигнута, если вычисление может повторно использовать данные из кэша. FLOP скорость. линия крыши Этого можно добиться, внедрив специальные roofline чтобы добиться этого(

Как только аппаратные ограничения определены, мы можем начать оценивать приложение относительно roofline производительность. для автоматического сбора Roofline Два наиболее распространенных метода выборки данных (путем likwid: https://github.com/RRZE-HPC/likwid4 Toolsuse) и Binary Instrumentation (от Intel Эмулятор разработки программного обеспечения (SDE: https://software.intel.com/content/www/us/en/develop/articles/intel-software-development-emulator.html5 ) использовать). Выборка требует меньше накладных расходов при сборе данных, а двоичный инструментарий обеспечивает более точные результаты. 6 Intel Advisor Автоматическая сборка Roofline графики и давать советы по оптимизации производительности данного цикла. На рисунке ниже показано Intel Advisor созданный Roofline Пример диаграммы. Обратите внимание, что линия крыши Для диаграммы используйте логарифмический масштаб.

Метод Roofline позволяет отслеживать прогресс оптимизации, печатая точки «до» и «после» на одной и той же индивидуальной диаграмме. поэтому,Это итерационный процесс,Помогите разработчикам помочь своим приложениям в полной мере использовать возможности оборудования. На рисунке показано улучшение производительности, достигнутое за счет внесения следующих двух изменений в предыдущий код:

  • Поменяйте местами самые внутренние петли двух лицевых (поменяйте местами 4 и сначала 5 ХОРОШО). Это обеспечивает удобный для кэша доступ к памяти (см. [@sec:MemBound])。
  • Включите автовекторизацию самого внутреннего цикла с помощью инструкций AVX2.

Подводя итог, можно сказать, что модель производительности Roofline может помочь:

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

Другие ресурсы и ссылки:

  • Документация NERSC доступна по адресу https://docs.nersc.gov/development/ Performance-debugging-tools/roofline/.
  • Национальная лаборатория исследований Лоуренса Беркли, https://crd.lbl.gov/departments/computer-science/par/research/roofline/
  • о Roofline Модельи Intel Advisor Коллекция видеодемонстраций на https://techdecoded.intel.io/. (поиск "Roofline")。
  • Perfplot индивидуальная коллекция инструментов сценариев, которая позволяет пользователям выполнять новейшие Intel Платформа измеряет счетчик производительности и генерирует результаты использования. roofline картина ипроизводительность. URL: https://github.com/GeorgOfenbeck/perfplot

2. Empirical Roofline Tool - https://bitbucket.org/berkeleylab/cs-roofline-toolkit/src/master/. ↩

3. Intel Advisor - https://software.intel.com/content/www/us/en/develop/tools/advisor.html. ↩

4. Likwid - https://github.com/RRZE-HPC/likwid. ↩

5. Intel SDE - https://software.intel.com/content/www/us/en/develop/articles/intel-software-development-emulator.html. ↩

6. Более детальное сравнение методов сбора данных о линии крыши можно увидеть в этой презентации: https://crd.lbl.gov/assets/Uploads/ECP20-Roofline-4-cpu.pdf ↩

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose