<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?action=history&amp;feed=atom&amp;title=Boruvka%27s%2C_scalability</id>
	<title>Boruvka&#039;s, scalability - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?action=history&amp;feed=atom&amp;title=Boruvka%27s%2C_scalability"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Boruvka%27s,_scalability&amp;action=history"/>
	<updated>2026-10-23T05:58:05Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Boruvka%27s,_scalability&amp;diff=28954&amp;oldid=prev</id>
		<title>ASA: Новая страница: «{{level-i}}  Основные авторы описания: И.В.Афанасьев  = Ссылки =  Для проведения...»</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=Boruvka%27s,_scalability&amp;diff=28954&amp;oldid=prev"/>
		<updated>2022-07-05T10:31:40Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{level-i}}  Основные авторы описания: &lt;a href=&quot;/ru/%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:Elijah&quot; title=&quot;Участник:Elijah&quot;&gt;И.В.Афанасьев&lt;/a&gt;  = Ссылки =  Для проведения...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{level-i}}&lt;br /&gt;
&lt;br /&gt;
Основные авторы описания: [[Участник:Elijah|И.В.Афанасьев]]&lt;br /&gt;
&lt;br /&gt;
= Ссылки =&lt;br /&gt;
&lt;br /&gt;
Для проведения экспериментов использовалась реализация алгоритма Борувки, реализованная для CPU.&lt;br /&gt;
&lt;br /&gt;
= Локальность данных и вычислений =&lt;br /&gt;
== Локальность реализации алгоритма ==&lt;br /&gt;
=== Структура обращений в память и качественная оценка локальности ===&lt;br /&gt;
=== Количественная оценка локальности ===&lt;br /&gt;
= Масштабируемость алгоритма и его реализации =&lt;br /&gt;
== Масштабируемость алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Возможность обрабатывать фрагменты независимо означает хорошую масштабируемость алгоритма. Сдерживающими факторами являются&lt;br /&gt;
# пропускная способность памяти при чтении данных графа&lt;br /&gt;
# соперничество потоков при выполнении атомарных операций с памятью&lt;br /&gt;
# барьерная синхронизация после каждого подшага алгоритма.&lt;br /&gt;
&lt;br /&gt;
== Масштабируемость реализации алгоритма ==&lt;br /&gt;
&lt;br /&gt;
Проведём исследование масштабируемости параллельной реализации алгоритма Борувки согласно [[Scalability methodology|методике]]. Исследование проводилось на суперкомпьютере &amp;quot;Ломоносов-2&amp;quot; [http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета].&lt;br /&gt;
&lt;br /&gt;
Набор и границы значений изменяемых [[Глоссарий#Параметры запуска|параметров запуска]] реализации алгоритма: &lt;br /&gt;
&lt;br /&gt;
*	число процессоров [1 : 28] с шагом 1;&lt;br /&gt;
*	размер графа [2^20 : 2^27].&lt;br /&gt;
&lt;br /&gt;
Проведем отдельные исследования сильной масштабируемости и масштабируемости вширь реализации алгоритма Борувки.&lt;br /&gt;
&lt;br /&gt;
Производительность определена как TEPS (от англ. Traversed Edges Per Second), то есть число ребер графа, который алгоритм обрабатывает в секунду. С помощью данной метрики можно сравнивать производительность для различных размеров графа, оценивая, насколько понижается эффективность обработки графа при увеличении его размера&lt;br /&gt;
&lt;br /&gt;
[[file:MST scaling strong.png|thumb|center|700px|Рисунок 1. Параллельная реализация алгоритма Борувки масштабируемость CPU версии: производительность в зависимости от числа запущенных CPU-потоков.]]&lt;br /&gt;
&lt;br /&gt;
[[file:MST scaling wide.png|thumb|center|700px|Рисунок 2. Параллельная реализация алгоритма Борувки масштабируемость различных версий реализации алгоритма: производительность в зависимости от размера графа]]&lt;br /&gt;
&lt;br /&gt;
= Динамические характеристики и эффективность реализации алгоритма =&lt;br /&gt;
&lt;br /&gt;
Все результаты получены на суперкомпьютере «Ломоносов-2». Использовались процессоры Intel Xeon E5-2697v3, задача решалась для графа большого размера на одном узле. &lt;br /&gt;
На рисунках показана эффективность реализации алгоритма Борувки, запуск проводился на 1 узле для графа 2^27, выполнялась 1 итерация.&lt;br /&gt;
[[file:Boruvka cpu.png|thumb|center|700px|Рисунок 3. График загрузки CPU при выполнении алгоритма Борувки]]&lt;br /&gt;
&lt;br /&gt;
На графике загрузки процессора видно, что почти все время работы программы не загружены и средний уровень загрузки составляет около 10%. Это нормальная картина для программ, запущенных c использованием одного ядра в реализации. &lt;br /&gt;
&lt;br /&gt;
[[file:Boruvka Loadavg.png|thumb|center|700px|Рисунок 4. График числа процессов, ожидающих вхождения в стадию счета (Loadavg), при работе алгоритма Борувки]]&lt;br /&gt;
&lt;br /&gt;
На графике числа процессов, ожидающих вхождения в стадию счета (Loadavg), видно, что на протяжении всей работы программы значение этого параметра постоянно на уровне 2. Это указывает на постоянную загрузку аппаратных ресурсов не более чем 2 процессами, однако их число для узла слишком мало, что с одной стороны может указывать на не очень рациональное использование ресурсов.&lt;br /&gt;
&lt;br /&gt;
 [[file:Boruvka L1.png|thumb|center|700px|Рисунок 5. График кэш-промахов L1 в секунду при работе алгоритма Борувки]]&lt;br /&gt;
 &lt;br /&gt;
На графике кэш-промахов первого уровня видно, что число промахов очень высокое и находится на уровне 40 млн/сек . Интересен факт увеличения числа промахов к концу итерации до уровня в 70 млн/сек.&lt;br /&gt;
&lt;br /&gt;
 [[file:Boruvka L2.png|thumb|center|700px|Рисунок 6. График кэш-промахов L1 в секунду при работе алгоритма Борувки]]&lt;br /&gt;
 &lt;br /&gt;
На графике кэш-промахов второго уровня видно, что число промахов тоже достаточно высокое и находится на уровне 30 млн/сек . На графике промахов второго уровня факт увеличения числа промахов к концу итерации проявляется более явно и увеличивается до значения в 50млн/сек.&lt;br /&gt;
&lt;br /&gt;
 [[file:Boruvka L3.png|thumb|center|700px|Рисунок 7. График кэш-промахов L3 в секунду при работе алгоритма Борувки]]&lt;br /&gt;
&lt;br /&gt;
На графике кэш-промахов последнего уровня видно, что число промахов тоже достаточно большое и составляет около 30 млн/сек по всем узлам. Это указывает на то, что задача очень плохо укладывается в кэш-память, и программа постоянно работает с оперативной памятью, что объясняется очень большим размером использованного графа.&lt;br /&gt;
&lt;br /&gt;
[[file:Boruvka Inf data.png|thumb|center|700px|Рисунок 8. График скорости передачи по сети Infiniband в байт/сек при работе алгоритма Борувки]]&lt;br /&gt;
&lt;br /&gt;
На графике скорости передачи данных по сети Infiniband наблюдается достаточно высокая интенсивность использования сети на первом этапе. Это объясняется программной логикой, которая предполагает чтение графа из файла с диска, коммуникации с которым происходят на Ломоносов-2 через выделенную для этих задач сеть Infiniband.&lt;br /&gt;
&lt;br /&gt;
 [[file:Boruvka inf pckts.png|thumb|center|700px|Рисунок 9. График скорости передачи по сети Infiniband в пакетах/сек при работе алгоритма Борувки]]&lt;br /&gt;
&lt;br /&gt;
На графике скорости передачи данных в пакетах в секунду наблюдается аналогичная картина очень высокой интенсивности на первом этапе выполнения задачи. Далее сеть почти не используется.&lt;br /&gt;
 &lt;br /&gt;
В целом, по данным системного мониторинга работы программы можно сделать вывод о том, что программа работала стабильно интенсивно,  однако очень неэффективно использовала память из-за очень большого размера графа.&lt;br /&gt;
&lt;br /&gt;
= Результаты прогонов =&lt;br /&gt;
&lt;br /&gt;
[[Категория:Статьи в работе]]&lt;br /&gt;
&lt;br /&gt;
[[En:Boruvka&amp;#039;s, scalability]]&lt;/div&gt;</summary>
		<author><name>ASA</name></author>
	</entry>
</feed>