Научная статья на тему 'МЕТОД И АЛГОРИТМ РАСПАРАЛЛЕЛИВАНИЯ ЦИКЛОВ С НЕИЗВЕСТНЫМ КОЛИЧЕСТВОМ ИТЕРАЦИЙ'

МЕТОД И АЛГОРИТМ РАСПАРАЛЛЕЛИВАНИЯ ЦИКЛОВ С НЕИЗВЕСТНЫМ КОЛИЧЕСТВОМ ИТЕРАЦИЙ Текст научной статьи по специальности «Математика»

CC BY
37
6
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МЕТОД / РАСПАРАЛЛЕЛИВАНИЕ / ЦИКЛ / ПРОГРАММА / МНОГОПРОЦЕССОРНАЯ СИСТЕМА / ОПЕРАТОР

Аннотация научной статьи по математике, автор научной работы — Ткачев Павел Юрьевич

В статье описан метод распараллеливания циклических участков последовательных программ с заранее неизвестным количеством итераций. Распараллеливание достигается за счет поиска операторов, которые могут быть выполнены одновременно на разных процессорах.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

METHOD AND ALGORITHM OF LOOPS PARALLELIZATION WITH UNKNOWN ITERATIONS QUANTITY

In this article proposed method for parallelization of sequential programs cyclical areas with an unknown iterations quantity. Parallelization achieved by searching operators that can be executed simultaneously on different processors.

Текст научной работы на тему «МЕТОД И АЛГОРИТМ РАСПАРАЛЛЕЛИВАНИЯ ЦИКЛОВ С НЕИЗВЕСТНЫМ КОЛИЧЕСТВОМ ИТЕРАЦИЙ»

1 - кожух из немагнитного материала, 2 - ось крепления пружины, 3 - пружинный транспортер, 4 - труба из ферромагнитного материала, 5 - нагревательный элемент, 6 - соленоид, 7 - бункер загрузочный, 8 - выгрузное окно, 9 - муфта, 10 - электродвигатель Рис. 1 - устройство для магнитной и тепловой обработки посевного материала

1-пустотелый цилиндрический индуктор, 2,3- токопроводящие обмотки,4,6,11,13- электронные симметричные ключи, 5,12-накопительные конденсаторы, 7,14-автономные источники питания,8-тактовый генератор, 9- одновибратор,

10- схема задержки, 15-посевной материал. Рис. 2 - установка для предпосевной индукционной обработки семенного материала

Интенсивность воздействия электромагнитных колебаний на обрабатываемую биомассу 15 при неизменной конструкции индуктора 1 и установочных параметрах принципиальной схемы определяется значениями напряжений источников питания 7 и 14. Применение асинхронного двухступенчатого режима заряда - разряда конденсаторов 5, 12 посредством электронных ключей 4, 6, 11, 13 обеспечивает надежную защиту источников питания 7, 14 от перегрузок и коротких замыканий в индукторе 1. Использование воздействия низкочастотного магнитного поля является перспективным способом повышения всхожести клубней картофеля в сегодняшних условиях необходимости качественной и экологичной продукции российских сельхозпроизводителей.

Литература

1. Важенин, Е.И. Перспективы использования в пищевой индустрии технологий с применением электромагнитных полей крайне низкой частоты /Е.И. Важенин //Научный журнал КубГАУ№85(01) - 2013 -№1.

2. Жолобова, М.В. Анализ установок для предпосевной обработки семян /М.В. Жолобова //Научный журнал КубГАУ№83(09) - 2012 - №9;

3. Кошкина, А.О. Исследования комплексного воздействия электромагнитного и теплового полей на качество посевного материала яровой пшеницы /А.О. Кошкина // Современная техника и технологии -2011. №3.

4. Кошкин, Е.И., Гатаулина, Г.Г., Дьяков, А.Б. и др. Частная физиология полевых культур /под ред. Е. И. Кошкина. - М.:КолосС, 2005. - 299 с.;

МЕТОД И АЛГОРИТМ РАСПАРАЛЛЕЛИВАНИЯ ЦИКЛОВ С НЕИЗВЕСТНЫМ

КОЛИЧЕСТВОМ ИТЕРАЦИЙ

Ткачев Павел Юрьевич

Аспирант, Юго-Западный Государственный Университет, Курск

METHOD AND ALGORITHM OF LOOPS PARALLELIZATION WITH UNKNOWN ITERATIONS QUANTITY Tkachev Pavel, Post-Graduate student, South-West State University, Kursk

АННОТАЦИЯ

В статье описан метод распараллеливания циклических участков последовательных программ с заранее неизвестным количеством итераций. Распараллеливание достигается за счет поиска операторов, которые могут быть выполнены одновременно на разных процессорах.

ABSTRACT

In this article proposed method for parallelization of sequential programs cyclical areas with an unknown iterations quantity. Parallelization achieved by searching operators that can be executed simultaneously on different processors.

Ключевые слова: метод, распараллеливание, цикл, программа, многопроцессорная система, оператор.

Keywords: method, parallelization, cycle, program, multi-processor system, operator.

Распараллеливание программ — это процесс адаптации алгоритмов, записанных в виде программ, для их эффективного исполнения на вычислительной системе параллельной архитектуры (в последнее время, как правило, на многопроцессорной вычислительной системе). В настоящее время, в связи с развитием многопроцессорных параллельных вычислительных систем, становится необходимым преобразование последовательных наследуемых участков программ в параллельные [1,2].

Любую программу можно представить в виде последовательности операторов. Основной задачей при выявлении параллелизма между операторами (то есть могут ли два последовательно идущих оператора выполниться параллельно) является выявление информационной независимости, т.е. не должно одновременно происходить инициирование более чем одной операции записи в ячейку памяти, а также операции чтения и записи в одну ячейку [3].

Математически это можно проверить, вычислив функцию:

F(i, k) = (Ii a Ok ) v (Ik a Oi ) v (o a Ok ), (1)

где 1, Ok - строки матриц входных/выходных переменных соответственно. В ячейках этих матриц ставится 1, если переменная является входной/выходной для оператора i. F - результат проверки на возможность распараллеливания. Если F=0, то операторы могут выполняться параллельно, т.к. обрабатывают разные данные.

Известен метод поиска и определения информационно независимых циклов, основанный на этой методике. В этом методе находились циклы, которые можно выполнить параллельно на разных процессорах, так как они обрабатывают разные данные. Однако вопрос распараллеливания линейных участков внутри циклов в этом методе не рассматривался.

Данная работа является продолжением исследований начатых в [4]. Наибольший интерес при распараллеливании тела цикла представляют циклы с заранее неизвестным количеством итераций, т. е. циклы типа «While».

While (K<N) do

{

N = N-1;

A = A*2;

B = F+2;

C = B+5;

K = K+A;

D = 3-E; }

Для распараллеливания таких циклов предлагается следующая методика:

В первую очередь следует найти операторы, влияющие на условие цикла, и определить операнды, прямо или косвенно влияющие на количество итераций цикла. В условии цикла присутствуют 2 операнда: К и N кроме того в теле цикла присутствует оператор К = К+А, то есть на значение операнда К влияет операнд А. Эти операнды назовем «ключевыми». Далее, в теле цикла находим операторы, в которых используются эти операнды, причем не важно в качестве входных, или в качестве выходных (Входными называют операторы, стоящие справа от знака «=», выходными называют операторы, стоящие слева от знака «=»). Такие операторы назовем «ключевыми». Ключевые операторы в любом случае должны выполняться последовательно на одном процессоре, так как влияют на количество итераций в цикле. Остальные операторы тела цикла, т.е. которые находятся между ключевыми можно вынести на отдельные процессоры. Для приведенного выше примера цикла ключевыми операторами являются:

N=N-1;

A = A*2;

K =

Далее, разбиваем тело цикла на блоки, находящиеся между ключевыми операторами. То есть, блок должен начинаться с ключевого оператора, а заканчиваться оператором, предшествующим следующему ключевому.

В нашем случае, таких блоков 3: 1.

N = N-1; 2.

A = A*2;

B = F+2;

C = B+5; 3.

K =

D = 3^;

Такие блоки назовем «условно-разделимыми». Далее, полученные блоки распараллеливаем как обычный линейный участок по методу, описанному в начале статьи.

Первый блок состоит из одного оператора, поэтому распараллеливать его нет смысла. Для второго блока составим матрицы входных и выходных переменных: АБСЕ АБСЕ

J_ 1 000 O_ 1000

1 0 0 0 1' O 0 10 0 0 1 0 0 0 0 1 0

Далее, по формуле (1) получаем:

(2)

F(1,2) = (I1 a O2 ) v (I2 a O1) v (O1 a O2 ) = (0000) v (0000) v (0000) = 0,

F(2,3) = (I2 a O3 ) v (I3 a O2 ) v (O2 a O3 ) = (0000) v (0100) v (0000) = 1

(3)

Так как ( ' ) _ , операторы «А = А*2» и «В = F+2» могут быть выполнены параллельно, так как обрабатывают разные данные, в свою очередь операторы «В = F+2» и «С = В+5» не могут выполняться параллельно, так как используют переменную «В», об этом говорит

F(2,3) _ 1 из формулы (3).

Для третьего блока матрицы входных и выходных переменных имеют следующий вид:

A D E K A D E K I = 100 1, O= 000 1

0 0 1 0 0 1 0 0 (4)

Далее, по формуле (1) получаем:

F(1,2) = (Ij Л 02) V (I2 Л O) V (O A 02) = (0000) V (0000) V (0000) = 0 ^

Так как F(1'2) _ 0, операторы «К = K+А» и «D = 3E» могут быть выполнены параллельно, так как обрабатывают разные данные.

В итоге, модифицированный цикл имеет следующий вид:

While (K<N) do {

N = N-1;

A = A*2; B = F+2;

C = B+5;

K = K+A; D = 3-E;

}

Операторы, находящиеся в первом столбце выполняются на первом процессоре, операторы во втором столбце выполняются на втором процессоре.

Таким образом, алгоритм распараллеливания циклов по предложенному методу можно представить в следующем виде:

1. Выделить тело цикла;

2. Найти ключевые операнды;

3. Найти ключевые операторы;

4. Разбить тело цикла на несколько условно-разделимых блоков, в зависимости от количества ключевых операторов;

5. Для каждого условно-разделимого блока составить матрицы входных и выходных переменных;

6. Определить по формуле (1) возможность параллельного выполнения операторов внутри каждого из условно-разделимых блоков;

7. Модифицировать цикл с учетом данных, полученных на предыдущем шаге;

8. Выполнить полученный цикл.

В том случае, когда в исходной части программы есть несколько вложенных циклов, приведенный выше алгоритм применяется для каждого из циклов по убыванию уровня вложенности.

Учитывая сложность программной реализации данного алгоритма и объемы необходимых вычислений, он может быть взять за основу при построении специализированного вычислительного устройства, обеспечивающего распараллеливание циклических участков в то время, когда основные процессоры заняты выполнением своих непосредственных задач. Таким образом, получим выигрыш по времени выполнения циклов.

Список литературы

1. Воеводин, В.В. Параллельные вычисления [Текст] / Вл.В. Воеводин - СПб.: БХВ - Петербург, 2002.608 с.

2. Цилькер, Б.Я. Организация ЭВМ и систем [Текст]: учебник для вузов / Б.Я. Цилькер, С.А. Орлов. СПб.: Питер, 2004. 668 с.

3. Трахтенгерц, Э.А. Введение в теорию анализа и распараллеливания программ ЭВМ в процессе трансляции [Текст]. - М.:Наука,1981.-254с.

4. Ткачев, П.Ю. Проблема распараллеливания циклов с известным количеством итераций [Текст] // «Ин-новация-2014»: Сборник материалов II регионального научно-технического семинара. Курск: ЮЗГУ,2014.

ОЦЕНКА АДЕКВАТНОСТИ ТЕОРЕТИЧЕСКИХ ЗАВИСИМОСТЕЙ ЭКСПЕРИМЕНТАЛЬНЫМ ДАННЫМ ПО ВПИТЫВАНИЮ ЖИДКОСТИ НЕТКАНЫМИ ПОЛОТНАМИ

Трещалин Юрий Михайлович

кандидат технических наук, Московский государственный университет, имени М.В. Ломоносова

г. Москва

ASSESSING THE ADEQUACY OF THE THEORETICAL CURVES TO THE EXPERIMENTAL DATA FOR THE ABSORPTION OF LIQUIDS NON-WOVEN CLOTHS

Treschalin Yuri, candidate of technical sciences Moscow state University, Moscow АННОТАЦИЯ

В статье производится сопоставление результатов теоретических исследований самопроизвольного подъема жидкости с экспериментальными данными, полученных при испытаниях нетканых полотен. Установлено, что математические зависимости адекватно отражают физику протекающего процесса, и в большинстве своем, имеет место достаточно близкое совпадение экспериментальных и расчетных значений высоты подъема воды в зависимости от пористости нетканых полотен. ABSTRACT

The article compares the results of theoretical studies of spontaneous lifting of the liquid with the experimental data obtained from testing of nonwoven fabrics. It is established that the mathematical adequately reflect the physics processes,

i Надоели баннеры? Вы всегда можете отключить рекламу.