<?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=SDDP%2C_scalability</id>
	<title>SDDP, 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=SDDP%2C_scalability"/>
	<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=SDDP,_scalability&amp;action=history"/>
	<updated>2026-10-22T14:56:03Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=SDDP,_scalability&amp;diff=29208&amp;oldid=prev</id>
		<title>ASA: /* Динамические характеристики и эффективность реализации алгоритма */</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=SDDP,_scalability&amp;diff=29208&amp;oldid=prev"/>
		<updated>2022-07-20T13:35:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Динамические характеристики и эффективность реализации алгоритма&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 13:35, 20 июля 2022&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l59&quot;&gt;Строка 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 59:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Динамические характеристики и эффективность реализации алгоритма =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Динамические характеристики и эффективность реализации алгоритма =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Те немногие данные, которые удалось получить посредством экспериментов запуска алгоритмов на  многоядерном процессоре домашнего компьютера не позволяют сделать глубоких и исчерпывающих выводов. Однако, судя по таблице, указанной в разделе 2&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.6 &lt;/del&gt;данной статьи можно сделать вывод, что при бОльшем количестве вычислительных узлов, время выполнения алгоритма алгоритма растет медленнее при росте числа этапов.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Те немногие данные, которые удалось получить посредством экспериментов запуска алгоритмов на  многоядерном процессоре домашнего компьютера не позволяют сделать глубоких и исчерпывающих выводов. Однако, судя по таблице, указанной в разделе &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;3.&lt;/ins&gt;2 данной статьи&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;можно сделать вывод, что при бОльшем количестве вычислительных узлов, время выполнения алгоритма алгоритма растет медленнее при росте числа этапов.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Результаты прогонов =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= Результаты прогонов =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ASA</name></author>
	</entry>
	<entry>
		<id>https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=SDDP,_scalability&amp;diff=29207&amp;oldid=prev</id>
		<title>ASA: Новая страница: «{{level-i}}  Основные авторы описания: [https://algowiki-project.org/ru/Участник:VladimirDobrovolsky611&lt;b&gt;В.М.Добровольс...»</title>
		<link rel="alternate" type="text/html" href="https://xn--80aecvaldz.xn--80ahdrnmvk.xn--p1ai/w/ru/index.php?title=SDDP,_scalability&amp;diff=29207&amp;oldid=prev"/>
		<updated>2022-07-20T13:34:24Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «{{level-i}}  Основные авторы описания: [https://algowiki-project.org/ru/Участник:VladimirDobrovolsky611&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/Участник:VladimirDobrovolsky611&amp;lt;b&amp;gt;В.М.Добровольский&amp;lt;/b&amp;gt;].&lt;br /&gt;
&lt;br /&gt;
= Ссылки =&lt;br /&gt;
&lt;br /&gt;
= Локальность данных и вычислений =&lt;br /&gt;
&lt;br /&gt;
На практике алгоритм SDDP необходим для решения задачи с количеством этапов порядка 100, количеством состояний порядка 20 и размерностью решения и ограничений порядка 50 на 50. Таким образом, в памяти на протяжении всей программы должно храниться 100\cdot 20\cdot (2\cdot 50+2\cdot 50\cdot 50) = 1 000 000 000 чисел типа double, т.е. около 8 ГБ. Также, каждому состоянию в ходе программы привязывается набор коэффициентов гиперплоскости, с каждой итерацией добавляются новые наборы. Так, на 100 - итерации, в памяти должно храниться около 100\cdot 20\cdot 51\cdot 100 = 10 200 000 т.е. около 80мб. Обращение к входным данным имеет временную неравномерность. Если количество пробных сценариев = k, то один раз за итерацию к каждой матрице каждого этапа алгоритм обратится k раз, причем почти одновременно. Таким образом, можно ускорить выполнение алгоритма в условиях недостаточной быстрой памяти с помощью загрузки данных нескольких этапов в кэш. При параллельной реализации можно предоставить памяти, выделенной под исходные данные, общий доступ, так как запись в эту область не предусматривается.&lt;br /&gt;
&lt;br /&gt;
Другая область памяти, необходимая алгоритму - пространство коэффициентов гиперплоскости. В отличие от области входных данных, данная область растет с увеличением количества итераций алгоритма пропорционально корню номера итерации. Обращение к данному участку памяти происходит также неравномерно, т.е. k почти одновременных обращений раз в итерацию. Также нельзя без дополнительных условий организовать общий доступ к данной области памяти, т.к. в ней предусмотрены как запись новых значений, так и удаление старых.&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;
Ввиду того, что существуют реализации алгоритма только на языке R и Matlab, которые не установлены ни на Blue gene (установить невозможно), ни на Lomonosov(в процессе установки) Результаты расчетов были проведены лишь для количества задействованных ядер многоядерного домашнего компьютера.&lt;br /&gt;
Параметры запуска:&lt;br /&gt;
&lt;br /&gt;
Процессор Intel Core i5 (4 ядра)&lt;br /&gt;
&lt;br /&gt;
Программа написана на языке R, программа запуска - R.exe (R - не компилируемый, а интерпритируемый язык, изначально приложение R.exe написано на С и было откомпилировано для операционной системы Windows до установки на ПК).&lt;br /&gt;
&lt;br /&gt;
Версия исполняемого скрипта - собственный автора, написанный в рамках магистерской диссертации.&lt;br /&gt;
&lt;br /&gt;
Используемые библиотеки: lpSolve, Rmpi, snow, Rcluster.&lt;br /&gt;
&lt;br /&gt;
Результаты тестов:&lt;br /&gt;
 &lt;br /&gt;
{|border = &amp;quot;1&amp;quot;&lt;br /&gt;
!Размерность данных (T;S;N;M)&lt;br /&gt;
!1&lt;br /&gt;
!2&lt;br /&gt;
!4&lt;br /&gt;
|-&lt;br /&gt;
!(5;5;10;10)&lt;br /&gt;
|279&lt;br /&gt;
|159,064&lt;br /&gt;
|86,24&lt;br /&gt;
|-&lt;br /&gt;
!(10;10;10;10)&lt;br /&gt;
|1120,8&lt;br /&gt;
|608,402&lt;br /&gt;
|323,239&lt;br /&gt;
|-&lt;br /&gt;
!(28;59;6;6)&lt;br /&gt;
|62344363,245&lt;br /&gt;
|Na&lt;br /&gt;
|Na&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Выводы о масштабируемости:&lt;br /&gt;
&lt;br /&gt;
Данный алгоритм хорошо масштабируется по измерению T, т.е. в случае, когда количество этапов T - достаточно велико, использование дополнительных процессоров заметно ускоряет решение задачи.&lt;br /&gt;
&lt;br /&gt;
= Динамические характеристики и эффективность реализации алгоритма =&lt;br /&gt;
&lt;br /&gt;
Те немногие данные, которые удалось получить посредством экспериментов запуска алгоритмов на  многоядерном процессоре домашнего компьютера не позволяют сделать глубоких и исчерпывающих выводов. Однако, судя по таблице, указанной в разделе 2.6 данной статьи можно сделать вывод, что при бОльшем количестве вычислительных узлов, время выполнения алгоритма алгоритма растет медленнее при росте числа этапов.&lt;br /&gt;
&lt;br /&gt;
= Результаты прогонов =&lt;br /&gt;
&lt;br /&gt;
[[Категория:Статьи в работе]]&lt;br /&gt;
&lt;br /&gt;
[[En:SDDP, scalability]]&lt;/div&gt;</summary>
		<author><name>ASA</name></author>
	</entry>
</feed>