Skip to content

Add Kirill Simonov report - #29

Open
NewsPGG wants to merge 6 commits into
gsvgit:mainfrom
NewsPGG:main
Open

Add Kirill Simonov report#29
NewsPGG wants to merge 6 commits into
gsvgit:mainfrom
NewsPGG:main

Conversation

@NewsPGG

@NewsPGG NewsPGG commented Jun 13, 2026

Copy link
Copy Markdown

No description provided.

@gsvgit gsvgit left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нейробред.


\section{Постановка задачи}

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

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не понял, как из куба следует важность пропускной способности памяти.


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

Данная учебная практика посвящена исследованию подходов к оптимизации доступа к памяти при вычислении матричных произведений. В отличие от дискретных видеокарт, целевой платформой в работе выступает система на кристалле (SoC) с архитектурой унифицированной памяти (Unified Memory Architecture, UMA). В таких системах центральный и графический процессоры физически разделяют общий объем оперативной памяти, что требует специфического подхода к распределению нагрузок и утилизации локальной кеш-памяти. Основой для проведения экспериментов послужил проект myGEMM, предоставляющий набор последовательно усложняющихся реализаций алгоритма.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. "Матричный произведения" --- это странный зверь.
  2. Скажите сразу, что за SoC.
  3. Сразу ссылка на myGEMM
  4. Усложняющихся?


Данная учебная практика посвящена исследованию подходов к оптимизации доступа к памяти при вычислении матричных произведений. В отличие от дискретных видеокарт, целевой платформой в работе выступает система на кристалле (SoC) с архитектурой унифицированной памяти (Unified Memory Architecture, UMA). В таких системах центральный и графический процессоры физически разделяют общий объем оперативной памяти, что требует специфического подхода к распределению нагрузок и утилизации локальной кеш-памяти. Основой для проведения экспериментов послужил проект myGEMM, предоставляющий набор последовательно усложняющихся реализаций алгоритма.

Особенностью macOS является использование транслятора \texttt{cl2Metal}, который преобразует OpenCL C в промежуточное представление Metal. Оригинальный код myGEMM содержит сложные препроцессорные вычисления (например, \texttt{\#define RTS (TS/WPT)}), что приводит к аварийному завершению компиляции под \texttt{cl2Metal}. Таким образом, требуется не только оптимизация самих алгоритмов, но и адаптация механизма передачи параметров.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И тут вдуг macOS...


Особенностью macOS является использование транслятора \texttt{cl2Metal}, который преобразует OpenCL C в промежуточное представление Metal. Оригинальный код myGEMM содержит сложные препроцессорные вычисления (например, \texttt{\#define RTS (TS/WPT)}), что приводит к аварийному завершению компиляции под \texttt{cl2Metal}. Таким образом, требуется не только оптимизация самих алгоритмов, но и адаптация механизма передачи параметров.

\textbf{Целью работы является} адаптация существующих алгоритмов блочного матричного умножения под трансляторы macOS, а также экспериментальная оценка влияния двумерного блочного разбиения и регистровой оптимизации на итоговую производительность в условиях UMA.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что такое "блочное разбиение" и "регистровая оптимизация"?

Для выполнения поставленной цели потребовалось решить следующие задачи:
\begin{itemize}
\item модифицировать кодовую базу ядер проекта myGEMM\footnote{Cedric Nugteren. Репозиторий проекта myGEMM. URL: \url{https://github.com/CNugteren/myGEMM} (дата обращения: 21.03.2026).} для обеспечения совместимости с компилятором \texttt{cl2Metal};
\item спроектировать автономную систему программ для статической генерации параметров разбиения и управления запусками;

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чо?


\section{Описание предлагаемого решения}

Оригинальная архитектура проекта myGEMM опирается на передачу параметров оптимизации (размеров блоков, ширины векторизации) непосредственно на этапе JIT-компиляции OpenCL-кода через динамически задаваемые параметры препроцессора. Однако встроенный в подсистему macOS компилятор \texttt{cl2Metal} демонстрирует нестабильную работу при разборе сложных препроцессорных выражений внутри \texttt{.cl} файлов, что делает невозможным использование оригинального подхода на платформе Apple Silicon.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Что за блоки, какая векторизация? Apple Silicon?


Оригинальная архитектура проекта myGEMM опирается на передачу параметров оптимизации (размеров блоков, ширины векторизации) непосредственно на этапе JIT-компиляции OpenCL-кода через динамически задаваемые параметры препроцессора. Однако встроенный в подсистему macOS компилятор \texttt{cl2Metal} демонстрирует нестабильную работу при разборе сложных препроцессорных выражений внутри \texttt{.cl} файлов, что делает невозможным использование оригинального подхода на платформе Apple Silicon.

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

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Прям программный комплекс?)

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И да. Похоже, тут точка в конце.

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

\begin{itemize}
\item \texttt{calculate\_kernels.py} — модуль статической подготовки конфигураций. Указанная программа служит инструментом для развертывания пользовательских параметров оптимизации (\texttt{TS}, \texttt{WPT}, \texttt{WIDTH} и других) в виде фиксированных констант препроцессора. Программа выполняет вычисление производных величин, необходимых для работы алгоритмов (например, \texttt{RTS = TS/WPT}, \texttt{LPT = (TSDK * WPT) / TS}), и записывает их в заголовочный файл \texttt{settings.h} как готовые целочисленные значения. Это полностью переносит математическую нагрузку с препроцессора OpenCL на сторону Python, что необходимо для стабильной трансляции кода в \texttt{cl2Metal} на платформе Apple Silicon. Кроме того, модуль обеспечивает реализацию векторизации: в зависимости от заданного параметра \texttt{WIDTH}, автоматически генерируется директива \texttt{typedef}, определяющая тип \texttt{floatX} (\texttt{float}, \texttt{float2} или \texttt{float4}), а также набор вспомогательных параметров препроцессора, что позволяет коду ядер OpenCL единообразно работать с векторами данных, сохраняя совместимость с управляющей программой на C++.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тире. Пробелы. Неразрывные. Ну хоть бы перечитывали за нейронкой.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Простите, но это уже буквально бред.


В качестве входных данных использовались квадратные матрицы размерностью \(4096 \times 4096\) и \(8192 \times 8192\) элементов. Для каждого ядра выполнялось 50 контрольных итераций, которым предшествовали 15 предварительных запусков для стабилизации температурного режима кристалла и предотвращения динамического снижения тактовой частоты. Между сменой тестируемых размерностей выдерживалась трехсекундная программная пауза.

Для минимизации влияния фоновой активности операционной системы macOS (обусловленной работой таких процессов, как \texttt{WindowServer} или \texttt{Spotlight}) на точность замеров, в методику проведения эксперимента был включен этап предварительной стабилизации графического процессора (\textit{warm-up}). Перед началом записи данных выполнялось 15 инициализирующих итераций, что обеспечивало выравнивание тактовой частоты графического процессора и выход системы из энергосберегающих состояний. Все 50 итераций измерения включались в финальный расчет, что при достаточном объеме выборки позволяет компенсировать случайные кратковременные всплески времени выполнения, связанные с планировщиком задач ОС. Стабильность полученных результатов при различных нагрузках подтверждается высокой повторяемостью средних значений производительности (GFLOPS) при последующих сессиях экспериментов.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ууууфффф..... Нейробред детектед.

Для минимизации влияния фоновой активности операционной системы macOS (обусловленной работой таких процессов, как \texttt{WindowServer} или \texttt{Spotlight}) на точность замеров, в методику проведения эксперимента был включен этап предварительной стабилизации графического процессора (\textit{warm-up}). Перед началом записи данных выполнялось 15 инициализирующих итераций, что обеспечивало выравнивание тактовой частоты графического процессора и выход системы из энергосберегающих состояний. Все 50 итераций измерения включались в финальный расчет, что при достаточном объеме выборки позволяет компенсировать случайные кратковременные всплески времени выполнения, связанные с планировщиком задач ОС. Стабильность полученных результатов при различных нагрузках подтверждается высокой повторяемостью средних значений производительности (GFLOPS) при последующих сессиях экспериментов.

Оценка вычислительной производительности основывалась на подсчете затраченного физического времени \(t\). Поскольку для вычисления одного элемента результирующей матрицы \(N \times N\) требуется \(2N\) скалярных операций сложения и умножения, итоговый показатель производительности в GFLOPS рассчитывался по формуле:
\[

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Откуда тут двойка?

@NewsPGG
NewsPGG requested a review from gsvgit June 14, 2026 14:22

@gsvgit gsvgit left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Думайте над тем, что пишите. Проверяйте внимательнее то, что написали.


В качестве вводных данных использовались квадратные матрицы размером \(4096 \times 4096\) и \(8192 \times 8192\) элементов. Для каждого ядра выполнялось 50 контрольных итераций, которыми предшествовали 15 предварительных запусков для стабилизации температурного режима процессора и предотвращения динамического снижения тактовой частоты. Между сменой тестируемых размеров матриц выдерживалась трёхсекундная программная пауза. На основе полученной выборки вычислялись среднее значение производительности (GFLOPS), стандартное отклонение и 95\%-й доверительный интервал, а проверка характера распределения результатов выполнялась при помощи критериев Д'Агостино-Пирсона и Шапиро-Уилка.

Для оценки вычислительной производительности измерялось время выполнения операций \(t\). При умножении плотных квадратных матриц размера \(N \times N\) требуется выполнить \(N\) операций умножения и \(N-1\) операций сложения для каждого из \(N^2\) элементов. Таким образом, суммарное число арифметических операций для всей матрицы составляет \(N^2\cdot(2N-1)\), что при больших значениях \(N\) упрощается до \(2N^3\). Итоговый показатель производительности в GFLOPS рассчитывался по формуле:

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"что при больших значениях " Это так не работает.


Для решения этой проблемы был разработан инструментарий на языке Python, обеспечивающий автоматизацию сборки проекта и проведение серии экспериментов. В состав средств автоматизации входят следующие изолированные компоненты:
\begin{itemize}[noitemsep, topsep=0pt]
\item \texttt{calculate\_kernels.py} ~--- статическая обработка конфигураций. Содержит встроенный словарь для одиннадцати версий вычислительных ядер. Программа для каждого ядра рассчитывает макроподстановки и сохраняет их в заголовочный файл \texttt{settings.h}. Также модуль автоматизирует сборку проекта, компилируя исходные файлы, запускает прогревочные итерации для графического процессора и сохраняет данные каждого запущенного процесса.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Неразрывные проблеы не так работают.

@gsvgit gsvgit left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет . Этот позор от нейронки надо переделать самостоятельно.


В качестве вводных данных использовались квадратные матрицы размером \(4096 \times 4096\) и \(8192 \times 8192\) элементов. Для каждого ядра выполнялось 50 контрольных итераций, которыми предшествовали 15 предварительных запусков для стабилизации температурного режима процессора и предотвращения динамического снижения тактовой частоты. Между сменой тестируемых размеров матриц выдерживалась трёхсекундная программная пауза. На основе полученной выборки вычислялись среднее значение производительности (GFLOPS), стандартное отклонение и 95\%-й доверительный интервал, а проверка характера распределения результатов выполнялась при помощи критериев Д'Агостино-Пирсона и Шапиро-Уилка.

Для оценки вычислительной производительности измерялось время выполнения операций \(t\). При умножении плотных квадратных матриц размера \(N \times N\) требуется выполнить \(N\) операций умножения и \(N-1\) операций сложения для каждого из \(N^2\) элементов. При расчёте производительности (GFLOPS) зачастую используется стандартная асимптотическая оценка сложности алгоритма, равная \(2N^3\) операций. Младшим членом \(N^2\) пренебрегают, так как при исследуемых больших размерах матриц его вклад становится исчезающе малым. Итоговый показатель производительности в GFLOPS рассчитывался по формуле:

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хосспади. Перестаньте уже издеваться над нейронкой. Сядьте и подумайте сами. Своей головой. Может даже до сентября.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants