<?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=K-means_clustering%2C_scalability1</id>
	<title>K-means clustering, scalability1 - История изменений</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=K-means_clustering%2C_scalability1"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=K-means_clustering,_scalability1&amp;action=history"/>
	<updated>2026-10-22T18:05:09Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=K-means_clustering,_scalability1&amp;diff=29175&amp;oldid=prev</id>
		<title>ASA: Новая страница: «{{level-i}}  Основные авторы описания: [https://algowiki-project.org/ru/Участник:Бротиковская_Данута&lt;b&gt;Д.Брот...»</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=K-means_clustering,_scalability1&amp;diff=29175&amp;oldid=prev"/>
		<updated>2022-07-19T13:08:59Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{level-i}}  Основные авторы описания: [https://algowiki-project.org/ru/Участник:Бротиковская_Данута&amp;lt;b&amp;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;
Основные авторы описания: [https://algowiki-project.org/ru/Участник:Бротиковская_Данута&amp;lt;b&amp;gt;Д.Бротиковская&amp;lt;/b&amp;gt;], [https://algowiki-project.org/ru/Участник:DennZo1993&amp;lt;b&amp;gt;Д.Зобнин&amp;lt;/b&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
= Ссылки =&lt;br /&gt;
&lt;br /&gt;
[https://github.com/serban/kmeans Использованная параллельная реализация алгоритма &amp;lt;i&amp;gt;k&amp;lt;/i&amp;gt;-means].&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;
Исследование масштабируемости параллельной реализации алгоритма &amp;lt;i&amp;gt;k&amp;lt;/i&amp;gt;-means проводилось на суперкомпьютере &amp;quot;Ломоносов&amp;quot;&amp;lt;ref name=&amp;quot;Lom&amp;quot;&amp;gt;Воеводин Вл., Жуматий С., Соболев С., Антонов А., Брызгалов П., Никитенко Д., Стефанов К., Воеводин Вад. Практика суперкомпьютера «Ломоносов» // Открытые системы, 2012, N 7, С. 36-39.&amp;lt;/ref&amp;gt; [http://parallel.ru/cluster Суперкомпьютерного комплекса Московского университета]. Алгоритм реализован на языке C с использованием средств MPI.&lt;br /&gt;
Для исследования масштабируемости проводилось множество запусков программы с разным значением параметра (количество векторов для кластеризации), а также с различным числом процессоров. Фиксировались результаты запусков &amp;amp;ndash; время работы &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; и количество произведенных итераций алгоритма &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Параметры запусков для экспериментальной оценки:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Значения &amp;lt;b&amp;gt;количества векторов&amp;lt;/b&amp;gt; &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;: 20&amp;#039;000, 30&amp;#039;000, 50&amp;#039;000, 100&amp;#039;000, 200&amp;#039;000, 300&amp;#039;000, 500&amp;#039;000, 700&amp;#039;000, 1&amp;#039;000&amp;#039;000, 1&amp;#039;500&amp;#039;000, 2&amp;#039;000&amp;#039;000.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Значения &amp;lt;b&amp;gt;количества процессоров&amp;lt;/b&amp;gt; &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;: 1, 8, 16, 32, 64, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 480, 512.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Значение &amp;lt;b&amp;gt;количества кластеров&amp;lt;/b&amp;gt; &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;: 100.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;Значение &amp;lt;b&amp;gt;размерности векторов&amp;lt;/b&amp;gt; &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;: 10.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для проведения экспериментов были сгенерированы нормально распределенные псевдослучайные данные (с использованием Python библиотеки [http://scikit-learn.org/ scikit-learn]):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from sklearn.datasets import make_classification&lt;br /&gt;
X1, Y1 = make_classification(n_features=10, n_redundant=2, n_informative=8,&lt;br /&gt;
                             n_clusters_per_class=1, n_classes=100,&lt;br /&gt;
                             n_samples=2000000)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для заданной конфигурации эксперимента (&amp;lt;math&amp;gt;n, d, p, k&amp;lt;/math&amp;gt;) и полученных результатов (&amp;lt;math&amp;gt;t, i&amp;lt;/math&amp;gt;)  [[Глоссарий#Производительность|производительность]]  и эффективность реализации расчитывались по формулам:&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;math&amp;gt;{\rm Performance} = \frac{N_{\rm k-means}^{d, n}}{t}\ \ ({\rm FLOPS}),&amp;lt;/math&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;N_{\rm k-means}^{d, n}&amp;lt;/math&amp;gt; &amp;amp;ndash; точное число операций с плавающей точкой (операции с памятью, а также целочисленные операции не учитывались), вычисленное в соответствие с разделом [[#Последовательная сложность алгоритма| &amp;quot;Последовательная сложность алгоритма&amp;quot;]];&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;&amp;lt;math&amp;gt;{\rm Efficiency} = \frac{100 \cdot {\rm Performance}}{{\rm Performance}_{\rm Peak}^{p}}\ \ (\%),&amp;lt;/math&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
где &amp;lt;math&amp;gt;{\rm Performance}_{\rm Peak}^{p}&amp;lt;/math&amp;gt; &amp;amp;ndash; пиковая производительность суперкомпьютера при &amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt; процессорах, вычисленная согласно спецификациям Intel&amp;lt;sup&amp;gt;&amp;amp;reg;&amp;lt;/sup&amp;gt; XEON&amp;lt;sup&amp;gt;&amp;amp;reg;&amp;lt;/sup&amp;gt; X5670&amp;lt;ref&amp;gt;&amp;quot;http://ark.intel.com/ru/products/47920/Intel-Xeon-Processor-X5670-12M-Cache-2_93-GHz-6_40-GTs-Intel-QPI&amp;quot;&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Графики зависимости производительности и эффективности параллельной реализации &amp;lt;i&amp;gt;k&amp;lt;/i&amp;gt;-means от числа векторов для кластеризации (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) и числа процессоров (&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;) представлены на рисунках 1 и 2, соответственно.&lt;br /&gt;
&lt;br /&gt;
[[file:Flops.png|thumb|center|800px|Рис. 1. Параллельная реализация &amp;lt;i&amp;gt;k&amp;lt;/i&amp;gt;-means. График зависимости производительности реализации алгоритма от числа векторов для кластеризации (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) и числа процессоров (&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;).]]&lt;br /&gt;
[[file:Efficiency.png|thumb|center|800px|Рис. 2. Параллельная реализация &amp;lt;i&amp;gt;k&amp;lt;/i&amp;gt;-means. График зависимости эффективности реализации алгоритма от числа векторов для кластеризации (&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;) и числа процессоров (&amp;lt;math&amp;gt;p&amp;lt;/math&amp;gt;).]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;В результате&amp;lt;/b&amp;gt; экспериментальной оценки были получены следующие оценки эффективности реализации:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Минимальное&amp;lt;/b&amp;gt; значение: 0.000409 % достигается при &amp;lt;math&amp;gt;n=20&amp;#039;000, p=480&amp;lt;/math&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Максимальное&amp;lt;/b&amp;gt; значение: 0.741119 % достигается при &amp;lt;math&amp;gt;n=300&amp;#039;000, p=1&amp;lt;/math&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Оценки масштабируемости реализации алгоритма &amp;lt;i&amp;gt;k&amp;lt;/i&amp;gt;-means:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;По числу процессоров:&amp;lt;/b&amp;gt; -0.002683 &amp;amp;ndash; эффективность убывает с ростом числа процессоров. Данный результат вызван ростом накладных расходов для обеспечения параллельного выполнения алгоритма.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;По размеру задачи:&amp;lt;/b&amp;gt; 0.002779 &amp;amp;ndash; эффективность растет с ростом числа векторов. Данный результат вызван тем, что при увеличении размера задачи, количество вычислений растет по сравнению с временем, затрачиваемым на пересылку данных.&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Общая оценка:&amp;lt;/b&amp;gt; -0.000058 &amp;amp;ndash; можно сделать вывод, что в целом эффективность реализации незначительно уменьшается с ростом размера задачи и числа процессоров.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Динамические характеристики и эффективность реализации алгоритма =&lt;br /&gt;
= Результаты прогонов =&lt;br /&gt;
&lt;br /&gt;
= Литература =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Статьи в работе]]&lt;br /&gt;
&lt;br /&gt;
[[En:K-means clustering, scalability1]]&lt;/div&gt;</summary>
		<author><name>ASA</name></author>
	</entry>
</feed>