add Brulevich Nikita report - #21
Conversation
|
|
||
| \textbf{Целью работы} является реализация и оптимизация операций над разреженными матрицами и векторами (редукция строк и столбцов, срез векторов и матриц, произведение Кронекера, преобразование каждого ненулевого элемента матрицы) для библиотеки QTreeFSharp. | ||
|
|
||
| Для достижения цели были поставлены и решены следующие задачи: |
|
|
||
| \subsection{Исследовательские вопросы} | ||
|
|
||
| В ходе экспериментального исследования предполагается ответить на следующие вопросы: |
There was a problem hiding this comment.
Извините, здесь и в комментарии выше не очень понял, где ожидается точка. Вместо двоеточия или сразу после заголовка subsection?
There was a problem hiding this comment.
В конце вводного предложения, перед перечислеием. при таком оформлении перечисления там не может быть двоеточия. Так как дальше у Вас каждый элемент сбольшой буквы и заканчивается точкой.
|
|
||
| \section{Описание предлагаемого решения} | ||
|
|
||
| \subsection{Структуры данных} |
There was a problem hiding this comment.
Не мельчите с subsection. В большинстве случаев они не нужны.
|
|
||
| \subsection{Структуры данных} | ||
|
|
||
| Разреженные векторы реализованы на бинарном дереве (\texttt{btree}), где листья содержат \texttt{UserValue} или \texttt{Dummy}. Размер дерева округляется до ближайшей степени двойки. |
There was a problem hiding this comment.
То есть это Вы их так реализовали?
Должно быть чёткое разделение того, что было, и того, что сделали Вы.
| \item \texttt{map}~--- применение функции к каждому ненулевому элементу матрицы | ||
| \end{itemize} | ||
|
|
||
| Также была изменена сигнатура функции fromCoordinateList в Matrix.fs и Vector.fs, добавлена валидация аргументов. |
There was a problem hiding this comment.
Прям сигнатура? Или только реализация?
There was a problem hiding this comment.
По сути изменено и то, и другое: fromCoordinateList я обернул в Result вместо возвращения вектора по умолчанию, добавил валидацию. Мне предложение кажется корректным, поправьте, пожалуйста, если ошибаюсь
There was a problem hiding this comment.
Ок. Похоже на правду. Ну тогда стоит ещё предложение про это написать, чтобы было понятно, что именно изменилось.
| } | ||
| \end{table} | ||
|
|
||
| На рис.~\ref{fig:reducecols_time} представлено сравнение времени выполнения, а на рис.~\ref{fig:reducecols_memory} — сравнение аллокаций памяти. |
| \label{fig:reducecols_memory} | ||
| \end{figure} | ||
|
|
||
| На плотных матрицах реализация через транспонирование оказывается быстрее на 10-22\% благодаря лучшей кэш-локальности. На разреженных матрицах, напротив, прямой обход по столбцам оказывается быстрее на 18-97\%. |
There was a problem hiding this comment.
Это скорее предположение, потому что других явных причин для такого поведения не видно. Я сформулировал это скорее как объяснение, нежели вывод, поэтому если данное предложение лишнее - могу его убрать.
| ReduceCols\_DenseRandomLarge & 1024×1024 & 1106 ms & 277 MB \\ | ||
| \bottomrule | ||
| \end{tabular} | ||
| \end{table} |
There was a problem hiding this comment.
Мало кучи таблиц. Нужны анализ и выводы.
|
|
||
| \subsection{Выводы из экспериментов} | ||
|
|
||
| Анализ полученных результатов позволяет ответить на исследовательские вопросы, сформулированные в разделе~3.2. |
There was a problem hiding this comment.
Лучше ранести ближе к соответствующему эксперименту.
There was a problem hiding this comment.
Понял, тогда пункт 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\%. |
There was a problem hiding this comment.
И мне прям интересно, где вы мю на клавиатуре нашли....
There was a problem hiding this comment.
Про таймс не знал, все крестики на них сейчас поменяю. А μ я копировал и вставлял из вывода результатов бенчмарков (md файл)
There was a problem hiding this comment.
Вы не поверите. В тех есть что-нибудь типа \mu
There was a problem hiding this comment.
Хорошо, изменю. Можете ответить на другие вопросы тоже, пожалуйста?
fc76a97 to
dd3c05e
Compare
f3ed1ef to
f051254
Compare
|
|
||
| \section*{Введение} | ||
|
|
||
| Работа выполняется в рамках проекта \textbf{LamaGraph} (Lambdas, Matrices and Graphs), нацеленного на разработку прототипа быстрого вычислителя для разреженной линейной алгебры, реализованного в функциональной парадигме программирования на языке F\#. |
There was a problem hiding this comment.
Ох. Только сейчас обратил внимание. Посмотрите внимательно, на чём вычислитель реализован. И да. "Быстрый" --- вредное слово. Вы ещё не знаете, какой он получится. А если что, придётся отвечать за это.
|
|
||
| \textbf{Целью работы} является реализация и оптимизация операций над разреженными матрицами и векторами (редукция строк и столбцов, срез векторов и матриц, произведение Кронекера, преобразование каждого ненулевого элемента матрицы) для библиотеки QTreeFSharp. | ||
|
|
||
| Для достижения цели были поставлены и решены следующие задачи: |
|
|
||
| \subsection{Исследовательские вопросы} | ||
|
|
||
| В ходе экспериментального исследования предполагается ответить на следующие вопросы: |
There was a problem hiding this comment.
В конце вводного предложения, перед перечислеием. при таком оформлении перечисления там не может быть двоеточия. Так как дальше у Вас каждый элемент сбольшой буквы и заканчивается точкой.
| \item \texttt{map}~--- применение функции к каждому ненулевому элементу матрицы | ||
| \end{itemize} | ||
|
|
||
| Также была изменена сигнатура функции fromCoordinateList в Matrix.fs и Vector.fs, добавлена валидация аргументов. |
There was a problem hiding this comment.
Ок. Похоже на правду. Ну тогда стоит ещё предложение про это написать, чтобы было понятно, что именно изменилось.
|
|
||
| Также была изменена сигнатура функции fromCoordinateList в Matrix.fs и Vector.fs, добавлена валидация аргументов. | ||
|
|
||
| Проведено сравнение двух способов реализации \texttt{reduceCols}: |
There was a problem hiding this comment.
А тут вообще какое-то месиво. Можно тут точку и в конце первого пункта тоже точку не забыть.
| \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\%. |
There was a problem hiding this comment.
Диапозон --- это два минуса: 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\%. |
There was a problem hiding this comment.
Ээээ.... "Разреженные матрицы демонстрируют преимущество над плотными во всех размерах" Кэп, это ты?
| \label{fig:reducecols_memory} | ||
| \end{figure} | ||
|
|
||
| Вывод из сравнения реализаций reduceCols: транспонирование эффективнее на плотных матрицах (ускорение растёт с размером: 1.5\%, 11\%, 22\%), но проигрывает на разреженных (замедление 18\%, 51\%, 97\%). Это объясняется лучшей кэш-локальностью при последовательном обходе строк после транспонирования. |
There was a problem hiding this comment.
Эм.... А как утилизацию кэшей проверяли? И почему при использовании деревьев плотность как-то влияет на кэши?
| \end{tabular} | ||
| \end{table} | ||
|
|
||
| На всех размерах производительность среза (slice) для разреженных и плотных матриц/векторов остаётся сопоставимой (разница не превышает 10-15\%). |
There was a problem hiding this comment.
М.... Скажите, а какова была цель экспериментов?
There was a problem hiding this comment.
Цель - проверить, что 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 раз на максимальном размере. |
6d01ffa to
38f6cc7
Compare
|
Короче, приходите нормально разбираться с экспериментами. не надо мерить что-то лишь бы померить. |
No description provided.