Skip to content

add Brulevich Nikita report - #21

Open
Brulevich-Nikita wants to merge 15 commits into
gsvgit:mainfrom
Brulevich-Nikita:nikita-brulevich-report
Open

add Brulevich Nikita report#21
Brulevich-Nikita wants to merge 15 commits into
gsvgit:mainfrom
Brulevich-Nikita:nikita-brulevich-report

Conversation

@Brulevich-Nikita

Copy link
Copy Markdown

No description provided.


\textbf{Целью работы} является реализация и оптимизация операций над разреженными матрицами и векторами (редукция строк и столбцов, срез векторов и матриц, произведение Кронекера, преобразование каждого ненулевого элемента матрицы) для библиотеки QTreeFSharp.

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

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.

Ааааа!!!!!


\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.

Точка.

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.

Извините, здесь и в комментарии выше не очень понял, где ожидается точка. Вместо двоеточия или сразу после заголовка 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.

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


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

\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. В большинстве случаев они не нужны.


\subsection{Структуры данных}

Разреженные векторы реализованы на бинарном дереве (\texttt{btree}), где листья содержат \texttt{UserValue} или \texttt{Dummy}. Размер дерева округляется до ближайшей степени двойки.

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 \texttt{map}~--- применение функции к каждому ненулевому элементу матрицы
\end{itemize}

Также была изменена сигнатура функции fromCoordinateList в Matrix.fs и Vector.fs, добавлена валидация аргументов.

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.

По сути изменено и то, и другое: fromCoordinateList я обернул в Result вместо возвращения вектора по умолчанию, добавил валидацию. Мне предложение кажется корректным, поправьте, пожалуйста, если ошибаюсь

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.

Ок. Похоже на правду. Ну тогда стоит ещё предложение про это написать, чтобы было понятно, что именно изменилось.

}
\end{table}

На рис.~\ref{fig:reducecols_time} представлено сравнение времени выполнения, а на рис.~\ref{fig:reducecols_memory} — сравнение аллокаций памяти.

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.

Тире

\label{fig:reducecols_memory}
\end{figure}

На плотных матрицах реализация через транспонирование оказывается быстрее на 10-22\% благодаря лучшей кэш-локальности. На разреженных матрицах, напротив, прямой обход по столбцам оказывается быстрее на 18-97\%.

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.

Это скорее предположение, потому что других явных причин для такого поведения не видно. Я сформулировал это скорее как объяснение, нежели вывод, поэтому если данное предложение лишнее - могу его убрать.

ReduceCols\_DenseRandomLarge & 1024×1024 & 1106 ms & 277 MB \\
\bottomrule
\end{tabular}
\end{table}

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{Выводы из экспериментов}

Анализ полученных результатов позволяет ответить на исследовательские вопросы, сформулированные в разделе~3.2.

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.

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

Анализ полученных результатов позволяет ответить на исследовательские вопросы, сформулированные в разделе~3.2.

\begin{enumerate}
\item \textbf{Редукция матриц (reduceRows, reduceCols)}: разреженные матрицы демонстрируют преимущество над плотными во всех размерах. На малых матрицах (32×32) выигрыш составляет 3-4 раза (64-66 μs против 256-293 μs), на средних (256×256)~--- 30-40 раз (1.7-1.9 ms против 56-78 ms), на больших (1024×1024)~--- до 120 раз (9-10 ms против 856-1137 ms). Аллокации памяти также отличаются в 4, 15 и 60 раз соответственно. Результаты времени выполнения для плотных матриц с единичными и случайными значениями (DenseUniform и DenseRandom) близки, разница не превышает 25\%, разница объёма аллоцированной памяти~--- не более 2\%.

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.

есть \times

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.

Про таймс не знал, все крестики на них сейчас поменяю. А μ я копировал и вставлял из вывода результатов бенчмарков (md файл)

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.

Вы не поверите. В тех есть что-нибудь типа \mu

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.

Хорошо, изменю. Можете ответить на другие вопросы тоже, пожалуйста?

@Brulevich-Nikita
Brulevich-Nikita force-pushed the nikita-brulevich-report branch from fc76a97 to dd3c05e Compare June 14, 2026 11:30
@Brulevich-Nikita
Brulevich-Nikita force-pushed the nikita-brulevich-report branch from f3ed1ef to f051254 Compare June 14, 2026 17:29

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

Работа выполняется в рамках проекта \textbf{LamaGraph} (Lambdas, Matrices and Graphs), нацеленного на разработку прототипа быстрого вычислителя для разреженной линейной алгебры, реализованного в функциональной парадигме программирования на языке F\#.

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.

Ох. Только сейчас обратил внимание. Посмотрите внимательно, на чём вычислитель реализован. И да. "Быстрый" --- вредное слово. Вы ещё не знаете, какой он получится. А если что, придётся отвечать за это.


\textbf{Целью работы} является реализация и оптимизация операций над разреженными матрицами и векторами (редукция строк и столбцов, срез векторов и матриц, произведение Кронекера, преобразование каждого ненулевого элемента матрицы) для библиотеки QTreeFSharp.

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

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.

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

\item \texttt{map}~--- применение функции к каждому ненулевому элементу матрицы
\end{itemize}

Также была изменена сигнатура функции fromCoordinateList в Matrix.fs и Vector.fs, добавлена валидация аргументов.

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.

Ок. Похоже на правду. Ну тогда стоит ещё предложение про это написать, чтобы было понятно, что именно изменилось.


Также была изменена сигнатура функции fromCoordinateList в Matrix.fs и Vector.fs, добавлена валидация аргументов.

Проведено сравнение двух способов реализации \texttt{reduceCols}:

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.

А тут вообще какое-то месиво. Можно тут точку и в конце первого пункта тоже точку не забыть.

\end{tabular}
\end{table}

Разреженные матрицы демонстрируют преимущество над плотными во всех размерах. На малых матрицах (32$\times$32) выигрыш составляет 3-4 раза (64-66 $\mu$s против 256-293 $\mu$s), на средних (256$\times$256)~--- 30-40 раз (1.7-1.9 ms против 56-78 ms), на больших (1024$\times$1024)~--- до 120 раз (9-10 ms против 856-1137 ms). Аллокации памяти также отличаются в 4, 15 и 60 раз соответственно. Результаты времени выполнения для плотных матриц с единичными и случайными значениями (DenseUniform и DenseRandom) близки, разница не превышает 25\%, разница объёма аллоцированной памяти~--- не более 2\%.

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.

Диапозон --- это два минуса: 30--40

\end{tabular}
\end{table}

Разреженные матрицы демонстрируют преимущество над плотными во всех размерах. На малых матрицах (32$\times$32) выигрыш составляет 3-4 раза (64-66 $\mu$s против 256-293 $\mu$s), на средних (256$\times$256)~--- 30-40 раз (1.7-1.9 ms против 56-78 ms), на больших (1024$\times$1024)~--- до 120 раз (9-10 ms против 856-1137 ms). Аллокации памяти также отличаются в 4, 15 и 60 раз соответственно. Результаты времени выполнения для плотных матриц с единичными и случайными значениями (DenseUniform и DenseRandom) близки, разница не превышает 25\%, разница объёма аллоцированной памяти~--- не более 2\%.

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.

Ээээ.... "Разреженные матрицы демонстрируют преимущество над плотными во всех размерах" Кэп, это ты?

\label{fig:reducecols_memory}
\end{figure}

Вывод из сравнения реализаций reduceCols: транспонирование эффективнее на плотных матрицах (ускорение растёт с размером: 1.5\%, 11\%, 22\%), но проигрывает на разреженных (замедление 18\%, 51\%, 97\%). Это объясняется лучшей кэш-локальностью при последовательном обходе строк после транспонирования.

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.

Эм.... А как утилизацию кэшей проверяли? И почему при использовании деревьев плотность как-то влияет на кэши?

\end{tabular}
\end{table}

На всех размерах производительность среза (slice) для разреженных и плотных матриц/векторов остаётся сопоставимой (разница не превышает 10-15\%).

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.

Цель - проверить, что slice не работает катастрофически медленно на плотных матрицах и векторах. Разница 10-15% получилась в пределах ожидаемого, учитывая, что расходы на аллокацию перевешивают.

\end{tabular}
\end{table}

Выигрыш разреженных матриц над плотными растёт с размером. Для матриц 8$\times$8 разреженная быстрее в 25 раз (92 $\mu$s против 2.3 ms), для 16$\times$16~--- в 95 раз (1.2 ms против 114 ms), для 32$\times$32~--- в 200 раз (6.2 ms против 1.29 с). Аллокации памяти различаются ещё сильнее: 86 KB против 1.5 MB (8$\times$8), 229 KB против 31 MB (16$\times$16), 112 KB против 576 MB (32$\times$32). Соотношение по памяти достигает 5000 раз на максимальном размере.

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.

Ыыыы.....

@Brulevich-Nikita
Brulevich-Nikita force-pushed the nikita-brulevich-report branch from 6d01ffa to 38f6cc7 Compare June 15, 2026 11:49
@gsvgit

gsvgit commented Jun 15, 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