<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="ru">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Использование последовательно-параллельного метода для распараллеливания алгоритмов с ассоциативными операциями *</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">А</forename><forename type="middle">В</forename><surname>Фролов</surname></persName>
						</author>
						<title level="a" type="main">Использование последовательно-параллельного метода для распараллеливания алгоритмов с ассоциативными операциями *</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">062EA476EF4006F0A6EB6B1E52EB0C6F</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T04:05+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Автором исследуются возможности использования последовательно-параллельного метода конструирования новых параллельных версий известных численных методов, а также вопросы сбалансированности получаемых методовкак по части распределения вычислений, так и по их устойчивости.</p><p>* Исследование выполнено при частичной финансовой поддержке гранта Российского научного фонда (проект N14-11-00190). 1 Полноценным блочным методом можно, на взгляд автора, считать только такой, где количество арифметических операций, используемых одной блочной операцией, существенно больше, чем количество входных и выходных данных. В последовательно-параллельном методе это не так, отсюда и использование слова "эрзац".</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="ru">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Введение</head><p>Последовательно-параллельный алгоритм известен давно и используется, главным образом, как эрзац блочного метода 1 , там, где есть возможность использовать свойство ассоциативности операций. К последним, например, можно отнести довольно широкий класс алгоритмов, содержащих последовательные рекуррентные вычисления с линейными и дробно-линейными формулами. В данной статье автор исследует и предлагает использовать свойства последовательно-параллельного метода для раскрытия большего потенциала параллелизма, чем обычно принято видеть в ряде алгоритмов.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Последовательно-параллельный метод для алгоритмов с одним результатом</head><p>Последовательно-параллельный алгоритм изначально придуман для таких подзадач, где из большого поля данных нужно получить всего одно число, характеризующее всё это поле, например, одну из норм -максимальный модуль элемента или сумму модулей всех элементов. Не будем пока конкретизировать операции, а предположим, что нужно вычислить результат (1) где -обозначение некой ассоциативной операции над данными некоторого типа, к которому как раз и принадлежит любой из элементов . Для вычисления этого выражения последовательно-параллельным методом весь диапазон натуральных чисел от 1 до n разбивается на q промежутков -от k 0 =1 до k 1 , от k 1 +1 до k 2 , ..., от k q-1 +1 до k q =n. В каждом из этих промежутков выражение</p><p>(2) вычисляется последовательно, с возрастанием индекса, а потом последовательно же вычисляется (3) При возможности деления n на количество устройств q обычно используют равномерное разделение на промежутки. В этом случае граф получающегося алгоритма имеет вид, показанный на Рис. 1. Нетрудно понять, что длина его критического пути будет равна <ref type="bibr" target="#b8">(4)</ref> то есть при будет достигнут её минимум, равный (5) Естественно, что этот метод значительно уступает по длине критического пути графа (по организации вычислений и передач между устройствами он всё же проще) методу сдваивания, показанному на Рис. 1 и имеющему длину критического пути <ref type="bibr" target="#b10">(6)</ref> Перед тем, как перейти к более сложным задачам, отметим для себя одну важную вещь. В случае вычисления выражения (1) как последовательно-параллельный метод, так и метод сдваивания использовали одно и то же общее количество операций , равное . Избыточных по отношению к исходному последовательному алгоритму вычислений оба они не используют.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Последовательно-параллельный метод для алгоритмов с нужными промежуточными результатами</head><p>Перейдём теперь к рассмотрению задачи более сложного типа. Пусть опять -обозначение некой ассоциативной операции над данными некоторого типа, к которому принадлежит любой из элементов , и пусть нам нужно вычислить все выражения (7) для всех возможных значений m от 1 до n. Для решения такой задачи с помощью последовательно-параллельного метода мы опять весь диапазон натуральных чисел от 1 до n разбиваем на q промежутков -от k 0 =1 до k 1 , от k 1 +1 до k 2 , ..., от k q-1 +1 до k q =n. В каждом из этих промежутков последовательно определяем выражения (8) </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Перераспределение интервалов в последовательно-параллельном методе</head><p>На Рис. 1 нетрудно заметить, что при равномерном разделении интервала на части операции, находящиеся на нижней линии (и на критическом пути графа), начиная с третьей, вынуждены "простаивать" в ожидании результата операции слева от себя. Поэтому последовательнопараллельный метод можно оптимизировать, перераспределив интервалы так, чтобы их длины </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Исследование свойств последовательно-параллельного метода и их приложения</head><p>Рассмотрим теперь свойства последовательно-параллельного метода, которые можно както использовать при конструировании новых алгоритмов. В <ref type="bibr" target="#b10">[6]</ref> автором предложен на основе старого метода Стоуна <ref type="bibr">[7]</ref>, которым на основе приёма сдваивания были распараллелено старое LU-разложение трёхдиагональной матрицы <ref type="bibr" target="#b5">[1,</ref><ref type="bibr" target="#b6">2]</ref>, новый параллельный алгоритм, с помощью которого можно разложить на двухдиагональные множители трёхдиагональную матрицу. При этом характеристики его устойчивости, в отличие от метода сдваивания Стоуна, не хуже, чем у последовательного варианта разложения. Рассмотрим, что именно позволило автору сохранить устойчивость при использовании последовательно-параллельного метода.</p><p>Как видно на Рис. 13, Рис. 15 и Рис. 16, последовательно-параллельный метод содержит в себе набор ветвей последовательных вычислений. Это те участки последовательности операций исходного последовательного алгоритма, которые либо оставили без изменений, либо заменили на последовательности более сложных ассоциативных операций. В эти части и можно вставить типичный для последовательных алгоритмов приём обеспечения устойчивости вычисленийнормировку. Её добавление в обычный последовательный алгоритм можно видеть на примере обратной подстановки с нормировкой, например, в <ref type="bibr" target="#b6">[2]</ref>. Посмотрим, можно ли использовать её, сконструировав с её помощью по последовательно-параллельной схеме вычислений новый параллельный алгоритм. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Пример использования последовательно-параллельного метода</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7.">Заключение</head><p>Использование последовательно-параллельной схемы при конструировании новых параллельных методов позволяет использовать некоторые приёмы работы, которые характерны для традиционных последовательных алгоритмов. Это связано с наличием в схеме достаточно длинных последовательных ветвей, которые имеют вычислительную структуру, во многом заимствованную из последовательного метода.</p><p>Поэтому автор рекомендует читателю обратить внимание на последовательнопараллельную схему вычислений там, где схемы сдваивания не дают возможности построить устойчивые алгоритмы. Не исключено, что подобные замены могут помочь и в других аналогичных случаях, где применяется целочисленная дихотомия диапазонов, а не только для ассоциативных операций. Сам автор предполагает заняться ревизией других алгоритмов, опирающихся на сдваивание <ref type="bibr" target="#b8">[4]</ref>, с целью получения на их основе, возможно, и не столь быстрых, но Рис. 8. Алгоритм последовательно-параллельного метода для вычисления решения СЛАУ (1) при n=30, степень "тяжести" операций показана градациями серого цвета.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Рис. 1 .Рис. 2 .Рис. 4 .</head><label>124</label><figDesc>Последовательно-параллельный метод для вычисления (1) через (2) и (3) при n=30 Метод сдваивания для вычисления (1) при n=16 Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org (8') где l меняется в диапазоне от до . После окончания этого этапа на первом промежутке (9) а на остальных (9') где l также меняется в диапазоне от до . Граф вычислений показан на Рис. 1 Нетрудно видеть, что он, как и в случае с одним нужным результатом, имеет длину критического пути, выведенную в (4) и (5). От внимательного взгляда читателя наверняка не ускользнуло появление в алгоритме 1 «лишних» операций. Для данного метода они необходимы, но по сравнению с исходным -избыточны. При больших n коэффициент избыточности 2 данного метода стремится к 2. С одной стороны, это означает, что последовательно-параллельный метод вряд ли кто-то будет приме-1 по сравнению с последовательной версией 2 Коэффициентом избыточности будем называть отношение количества операций нового алгоритма к количеству операций исходного, который мы как раз и распараллеливаем заменой на новый Рис. 3. Алгоритм последовательно-параллельного метода для вычисления всех частичных результатов при n=25 и равномерном разделении интервала, чёрным обозначены операции, результаты которых нужны на выходе алгоритма. Операции (8) и (9), как пустые, не показаны. Алгоритм сдваивания для вычисления всех частичных результатов при n=8, чёрным обозначены операции, результаты которых нужны на выходе алгоритма нять на однопроцессорном компьютере (в отличие от задачи из части 2, где его применение может быть обусловлено не распараллеливанием, а другими соображениями, типа минимизации промахов кэша), и что для его реализации нужно хотя бы несколько параллельных устройств. Однако сравнение с методом сдваивания для данной задачи показывает, что 2 -не такое уж большое число. У метода сдваивания коэффициент избыточности равен с точностью до главного члена (это несложно показать, если вспомнить, что в методе сдваивания всего операций, а в исходном последовательном -только n-1). Вкупе с более простой организацией распределения и пересылки данных это, несмотря на сравнительно большую длину критического пути, делает последовательно-параллельный метод более предпочтительным, чем метод сдваивания, для задач, где нужны и промежуточные результаты.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Рис. 5 .Рис. 6 .</head><label>56</label><figDesc>Алгоритм последовательно-параллельного метода для вычисления всех частичных результатов при n=23, чёрным обозначены операции, результаты которых нужны на выходе алгоритма, числа рядом с ниминомера вычисляемых частных выражений Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org росли на 1 при возрастании номера. При таком распределении граф алгоритма будет выглядеть как на Рис. 15. Если на первом интервале вычисляется i частных выражений, а всего k интервалов, то а длина критического пути графа алгоритма равна . Если проделать ряд выкладок, то, как и следовало ожидать, окажется, что наименьшим значение q=k будет при i=1. При таком распределении граф алгоритма будет выглядеть как на Рис. 16. При указанной разбивке уравнение, связывающее q с n, в предположении, что такая разбивка существует, можно записать как или Решая его, получаем для положительного корня что даёт экономию в раз по сравнению с равномерным разбиением интервала. Коэффициент избыточности при таком делении интервала остаётся менее 2. Кроме экономии на длине критического пути, при таком разбиении можно выбрать такое распределение операций по ярусам параллельной формы, что ширина всех ярусов окажется одинаковой (это хорошо видно на Рис. 16, где количество вершин с одинаковым номером яруса равно 5), что тоже даёт преимущества при реализации метода. Алгоритм последовательно-параллельного метода для вычисления всех частичных результатов при n=16, чёрным обозначены операции, результаты которых нужны на выходе алгоритма. Числа при вершинах обозначают номер яруса в наискорейшей ярусно-параллельной форме</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="3,100.00,199.78,390.90,203.52" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="3,147.10,449.79,297.47,178.50" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="5,72.40,180.35,448.20,275.90" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="7,87.10,360.00,417.30,217.22" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="8,84.25,331.08,422.94,220.20" type="bitmap" /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>берётся то i j , которое самое близкое к k снизу. Ясно, что все значения и можно вычислить только последовательно парами друг за другом. В результате граф алгоритма, если применять неравномерное дробление интервалов, будет как на Рис. 17. При равномерном дроблении интервалов граф будет выглядеть, как на Рис. 18.</figDesc><table><row><cell></cell><cell></cell><cell></cell><cell>(30)</cell></row><row><cell cols="2">Вводим нормировочные коэффициенты</cell><cell></cell><cell></cell></row><row><cell cols="2">Далее для возрастающих k выполняем</cell><cell></cell><cell></cell></row><row><cell></cell><cell></cell><cell></cell><cell>(32)</cell></row><row><cell></cell><cell></cell><cell></cell><cell>(32')</cell></row><row><cell></cell><cell></cell><cell></cell><cell>(33)</cell></row><row><cell></cell><cell></cell><cell></cell><cell>(33')</cell></row><row><cell></cell><cell></cell><cell></cell><cell>(34)</cell></row><row><cell cols="4">И в конце каждого шага обновляем текущие нормировочные коэффициенты</cell></row><row><cell cols="3">После окончания расчётов на промежутках вычисляем все значения</cell><cell>по формулам</cell></row><row><cell>где в качестве i</cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="4">Пусть нам нужно решить систему линейных алгебраических уравнений (здесь и далее бу-</cell></row><row><cell cols="2">дем использовать сокращение СЛАУ)</cell><cell></cell><cell></cell></row><row><cell></cell><cell></cell><cell></cell><cell>(14)</cell></row><row><cell>где</cell><cell></cell><cell></cell><cell></cell></row><row><cell></cell><cell></cell><cell></cell><cell>(15)</cell></row><row><cell cols="4">-ленточная нижняя треугольная матрица с единичной диагональю и с поддиагональной</cell></row><row><cell>лентой ширины 2, и</cell><cell></cell><cell></cell><cell></cell></row><row><cell></cell><cell></cell><cell></cell><cell>(16)</cell></row><row><cell cols="4">-вектор правой части. Если теперь расписать прямую подстановку, то мы получим</cell></row><row><cell>,</cell><cell>,</cell><cell>,</cell><cell>(17)</cell></row><row><cell>или, вводя вектор</cell><cell></cell><cell></cell><cell></cell></row><row><cell>соотношение</cell><cell></cell><cell></cell><cell></cell></row><row><cell></cell><cell>,</cell><cell></cell><cell>(19)</cell></row><row><cell>где</cell><cell></cell><cell></cell><cell></cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" xml:id="foot_0">Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org</note>
		</body>
		<back>
			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Serial-parallel method using for partial associative operation parallelizing</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Alexey Frolov</head><p>Keywords: Serial-parallel method, associative operations, parallelizing Serial-parallel method using for partial associative operations is discussed in this paper.</p><p>Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days 2015 // RussianSCDays.org</p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Если теперь выполнить в (19) подстановку до некоторого i&lt;k, то получается (21) Введём</title>
	</analytic>
	<monogr>
		<title level="m">обозначение (22) Из вида матрицы видно, что эти матрицы имеют вид</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">где величины элементов первой и второй строк матрицы связаны рекуррентно по формулам</title>
		<imprint/>
	</monogr>
	<note>далее (25</note>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m">показывают, что даже при небольших отличиях коэффициентов или от единицы (в большую или меньшую сторону), у модулей элементов матриц в длинных ветвях вычислений (когда k-i велико) может наблюдаться как рост, так и убывание, что может повредить точности вычислений. В связи с этим целесообразно нормировать вычисления, удерживая хотя бы один из элементов близко к 1. Сделаем это, и теперь можно выполнить вычисления по следующей схеме. Весь диапазон натуральных чисел от 1 до n разбиваем на q промежутков -от i 0 =1 до i 1</title>
				<imprint>
			<date>Формулы. от i 1 +1</date>
		</imprint>
	</monogr>
	<note>В каждом из остальных промежутков последовательно определяем значения коэффициентов матриц (i считаем равным i j-1</note>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title/>
		<author>
			<persName><surname>Рис</surname></persName>
		</author>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m">реальное количество выполняемых арифметических операций. более устойчивых параллельных методов, либо алгоритмов с более регулярными графами. Тут важен ещё тот момент, что даже при равных характеристиках устойчивости алгоритмы, опирающиеся на последовательно-параллельную схему, про мнению автора, будут иметь графы, более</title>
				<imprint/>
	</monogr>
	<note>что может позволить более эффективно отображать их на параллельные архитектуры вычислительных систем. Литература</note>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<author>
			<persName><forename type="first">В</forename><surname>Воеводин</surname></persName>
		</author>
		<title level="m">Вычислительные основы линейной алгебры</title>
				<imprint>
			<publisher>Наука</publisher>
			<date type="published" when="1977">1977</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<author>
			<persName><forename type="first">В</forename><forename type="middle">В</forename><surname>Воеводин</surname></persName>
		</author>
		<title level="m">Кузнецов Ю.А. Матрицы и вычисления</title>
				<imprint>
			<publisher>Наука</publisher>
			<date type="published" when="1984">1984</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<author>
			<persName><forename type="first">В</forename><surname>Воеводин</surname></persName>
		</author>
		<title level="m">Математические основы параллельных вычислений // М</title>
				<imprint>
			<date type="published" when="1991">1991</date>
		</imprint>
	</monogr>
	<note>Изд. Моск. ун-та</note>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<ptr target="http://algowiki-project.org(датаобраще-ния:28.05.2015" />
		<title level="m">Открытая энциклопедия свойств алгоритмов</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<author>
			<persName><forename type="first">А</forename><surname>Фролов</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Принципы построения и описание языка Сигма</title>
				<editor>
			<persName><surname>Овм Ан</surname></persName>
		</editor>
		<imprint>
			<date type="published" when="1989">1989</date>
			<biblScope unit="volume">236</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Ещё один метод распараллеливания прогонки с использованием ассоциативности операций // Представлена в качестве доклада на первую объединенную международную конференцию</title>
		<author>
			<persName><forename type="first">А</forename><surname>Фролов</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Суперкомпьютерные дни в России</title>
				<imprint>
			<publisher>Москва</publisher>
			<date type="published" when="2015">2015</date>
			<biblScope unit="page" from="28" to="29" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">An Efficient Parallel Algorithm for the Solution of a Tridiagonal Linear System of Equations</title>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">S</forename><surname>Stone</surname></persName>
		</author>
		<ptr target="2015//RussianSCDays.org" />
	</analytic>
	<monogr>
		<title level="j">J. ACM</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">1</biblScope>
			<biblScope unit="page" from="27" to="38" />
			<date type="published" when="1973-01">Jan. 1973</date>
		</imprint>
	</monogr>
	<note>Суперкомпьютерные дни в России 2015 // Russian Supercomputing Days</note>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
