Skip to content

Add Daniil_Pravkin_report.tex - #2

Open
Prosto-Dan wants to merge 19 commits into
gsvgit:mainfrom
Prosto-Dan:main
Open

Add Daniil_Pravkin_report.tex#2
Prosto-Dan wants to merge 19 commits into
gsvgit:mainfrom
Prosto-Dan:main

Conversation

@Prosto-Dan

Copy link
Copy Markdown

Add Daniil_Pravkin_report.tex
Add sgemm_graph.png

Add sgemm_graph.png
Кафедра: \emph{кафедра, на которой планируется защита/сдача работы}

% Степень/звание и должность научника мы лучше вас знаем, их можно не указывать.
Научный руководитель: \emph{ФИО научного руководителя}

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{flushright}
Группа: \enquote{25.Б73-мм}

Кафедра: \emph{кафедра, на которой планируется защита/сдача работы}

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{Постановка задачи}

% Буквально парой предложений ввести в контекст, обязательно сформулировать цель работы. Если работа делается где-то глубоко внутри проекта, на введение можно потратить больше места, чтобы подвести читателя от сути проекта в целом к тому, что конкретно вам надо было сделать. Только без воды, никакого "в современном мире"!

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{Постановка задачи}

% Буквально парой предложений ввести в контекст, обязательно сформулировать цель работы. Если работа делается где-то глубоко внутри проекта, на введение можно потратить больше места, чтобы подвести читателя от сути проекта в целом к тому, что конкретно вам надо было сделать. Только без воды, никакого "в современном мире"!
Vortex - это проект с открытым исходным кодом для поддержки GPGPU на основе расширений RISC-V ISA, с возможностью аппаратной конфигурации. Целью работы является получение навыков работы с FPGA-стеком.

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.

Постарайтесь писать чуть более полноценные и связанные предложения.

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

% Раздел пишется в свободной форме, с минимумом технических подробностей (можно приводить ссылки на более подробные документы).
Для получения навыков работы с Vortex, был проведён эксперимент по измерению масштабируемости функции умножения матриц.

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{Эксперименты}

\subsection*{Введение}
Vortex использует модель исполнения SIMT (Single Instructions Multiple Threads)\footnote{Информация из документации Vortex о микроархитектуре на сайте github.com (\url{https://github.com/vortexgpgpu/vortex/blob/master/docs/microarchitecture.md}) (27.04.2026)}, в которой одна и та же инструкция выполняется над разными данными. Это достигается при помощи потоков (threads) (наименьшие единицы вычисления, которые выполняются параллельно) и варпов (warps) (набор потоков, выполняющих одну и ту же инструкцию). Таким образом достигается распараллеливание выполнения задачи. Одной из задач, выполняемой при помощи такой модели исполнения, является умножение матриц (например, в графических процессорах от компании NVIDIA)\footnote{В архитектуре CUDA, использующей SIMT, также есть функция умножения матриц (\url{https://docs.nvidia.com/cutlass/latest/media/docs/cpp/efficient_gemm.html})}.

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.

Зачем в эксериментах вдруг описание Vortex?

% ниже списком перечисляете то, что выносится как результат практики.

\begin{itemize}
\item произведено сравнение затрачиваемого количества тактов различными конфигурациями при выполнении функции умножения матриц Vortex

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.

Пунктуация.

\item проанализирована масштабируемость функции умножения матриц
\end{itemize}

Техническая документация: \url{https://github.com/vortexgpgpu/vortex} .

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.

А где Ваше репо с оформленными экспериментами и прочим?

@Prosto-Dan Prosto-Dan May 17, 2026

Copy link
Copy Markdown
Author

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.

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

\subsection*{Результаты и анализ}
В результате поиска аппаратной конфигурации (табл. \ref{tab:optimal_for_8}), наиболее оптимальной при восьми ядрах оказалась следующая: clusters=1, warps=8, threads=64, l2cache, l3cache.

По результатам тестов по измерению масштабируемости (рис. \ref{figure:sgemm_graph}), при увеличении количества ядер от 1 до 16, количество тактов уменьшается, а при cores=16 достигает наименьшего значения. При дальнейшем увеличении количества ядер (начиная с 32), количество тактов начинает возрастать. Это свидетельствует о накладных расходах, затрачиваемых на корректную работу ядер, в том числе для обеспечения параллельного выполнения, вследствие чего суммарное количество тактов больше, чем при 16-ти ядрах. Таким образом, для умножения матриц 512x512 при clusters=1, warps=8, threads=64, l2cache, l3cache наименьшее количество тактов достигается при использовании 16-ти ядер.

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.

Судя по графику, Вы не проверяли значения между 16 и 32. Правда ли, что например, при 18 не лучше, чем пот 16?

@Prosto-Dan
Prosto-Dan requested a review from gsvgit June 11, 2026 20:45

\section{Введение}

Vortex --- это проект с открытым исходным кодом, предназначенный для поддержки вычислений на графических процессорах (GPGPU). Он реализован на основе расширений системы команд RISC-V ISA и предусматривает возможность аппаратной конфигурации.

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.

неразрывный пробел перед тире.


Целью данной работы является получение навыков работы с FPGA-стеком.

Для достижения цели требуется решить следующие задачи:

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.

Точка.


Перед проведением экспериментов необходимо было выбрать способ симуляции Vortex: RTL-симуляцию или Cycle-Approximate-симуляцию.

Первый вариант осуществляется при помощи Verilator --- симулятора, преобразующего код на Verilog HDL, в однопоточный или многопоточный код на C++/SystemC. В таком подходе моделируется каждый отдельный сигнал, триггер и логический элемент. Вследствие чего данный метод довольно точен, но при этом он затрачивает много времени, поэтому он используется для проверки корректности взаимодействия программы и архитектуры Vortex.

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.

"HDL, в однопоточный " тут точно запятая нужна?

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.

Не понял, как из затратности следует примернимость для проверки чего-то там.

Проанализировать масштабируемость функции умножения матриц при увеличении количества ядер и фиксированном объёме входных данных.

\subsection*{Входные данные}
Для эксперимента была выбрана матрица размера 512x512 с целью получения более реалистичной производительности. Для алгоритма требуется память для двух перемножаемых матриц и одной итоговой, следовательно, объём трёх матриц данного размера --- 3~МиБ, что превышает объём общей памяти (Local Memory) (128 КиБ), L1-кэша (16~КиБ), L2-кэша (1~МиБ) и L3-кэша (2~МиБ)\footnote{Объёмы общей памяти и l1/l2/l3-кэшей взяты со страниц Vortex на сайте github.com (объём общей памяти: \url{https://github.com/vortexgpgpu/vortex/blob/master/hw/rtl/mem/VX_local_mem.sv} оъёмы кэшей: \url{https://github.com/vortexgpgpu/vortex/blob/master/docs/simulation.md}) (26.04.2026)}; следовательно, программа будет больше взаимодействовать с основной памятью.

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.

Так-то объём зависит от типа данных.


\subsection*{Проведение эксперимента}

Порядок выполнения тестов:

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.

Точка.

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

\subsection*{Результаты и анализ}
В результате поиска аппаратной конфигурации (табл. \ref{tab:optimal_for_8}) наиболее оптимальной при восьми ядрах оказалась следующая: clusters=1, warps=8, threads=64, l2cache, l3cache.

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.

Неразрывный пробел перед ref.


\section{Заключение}

В ходе выполнения работы получены следующие результаты:

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.

Точка.

\item Проанализирована масштабируемость функции умножения матриц.
\end{itemize}

Техническая документация: \url{https://github.com/Prosto-Dan/vortex_practice_1_year} .

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. Графики и туда добавьте.


\begin{figure}
\centering
\includegraphics[width=0.8\linewidth]{sgemm_graph.png}

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.

Я надеюсь, это matplotlib. выгрузите графики в pdf. А то однажды они развалятся на пиксели.

@Prosto-Dan
Prosto-Dan requested a review from gsvgit June 12, 2026 12:23

Второй вариант осуществляется при помощи SimX~--- симулятора Vortex, написанного на C++. Он является потактовым, то есть воспроизводит поведение микроархитектуры с точностью до такта (содержимое кэша, состояние счётчиков, загрузка конвейера). Поэтому данный метод чуть менее точен, но более быстр по сравнению с RTL-симуляцией.

Таким образом, было принято решение использовать в экспериментах симулятор SimX.

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.

Из сказаного выше не понятно каким таким образом.

Для экспериментов была выбрана матрица размера $512\times512$ с целью получения более реалистичной производительности. Для алгоритма требуется память для двух перемножаемых матриц и одной итоговой, при этом каждый элемент матрицы имеет тип float~\footnote{Информация из реализации функции sgemm в Vortex, URL: \url{https://github.com/vortexgpgpu/vortex/blob/master/tests/regression/sgemm/common.h} (дата обращения: 12.06.2026).}, следовательно, объём трёх матриц данного размера~--- 3~МиБ, что превышает объём общей памяти (Local Memory) (128 КиБ), L1-кэша (16~КиБ), L2-кэша (1~МиБ) и L3-кэша (2~МиБ)~\footnote{Объёмы общей памяти и l1/l2/l3-кэшей взяты из документации Vortex (объём общей памяти: URL: \url{https://github.com/vortexgpgpu/vortex/blob/master/hw/rtl/mem/VX_local_mem.sv}, оъёмы кэшей: URL: \url{https://github.com/vortexgpgpu/vortex/blob/master/docs/simulation.md}) (дата обращения: 26.04.2026).}; следовательно, программа будет больше взаимодействовать с основной памятью.

\samepage{
Порядок выполнения тестов:

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{Заключение}

В ходе выполнения работы получены следующие результаты.

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.

Нет. А вот тут точка не нужна....


Целью данной работы является получение навыков работы с FPGA-стеком.

Для достижения цели требуется решить следующие задачи.

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
Author

Choose a reason for hiding this comment

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

Прошу прощения за глупость. Изначально оставил двоеточия, но в обзоре изменённых файлов остались комментарии про точки, из-за чего посчитал, что это неучтённые замечания.

@Prosto-Dan
Prosto-Dan requested a review from gsvgit June 15, 2026 14:20
@gsvgit

gsvgit commented Jul 14, 2026

Copy link
Copy Markdown
Owner

О. Там же вышл новый Вортекс. И разработчики утверждают, что перестали воспроизводиться проблемы со сбросом регистров. А давайте Вы воспроизведёте наши эксперименты и проверите, правда это, или нет.

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