Помощь в написании студенческих работ
Антистрессовый сервис

Распараллеливание циклов. 
Параллельное программирование на основе технологий openmp, mpi, cuda

РефератПомощь в написанииУзнать стоимостьмоей работы

Существуют следующие методы разбиения: координат, гиперплоскостей, параллелепипедов, пирамид и более сложные. Итерации этого цикла могут быть выполнены в любом порядке, в том числе, одновременно друг с другом. Пусть в программе есть цикл, между итерациями которого нет информационной зависимости, например: Для параллельной системы из п вычислительных элементов (процессоров) может быть реализовано… Читать ещё >

Распараллеливание циклов. Параллельное программирование на основе технологий openmp, mpi, cuda (реферат, курсовая, диплом, контрольная)

Известно, что более 90% (как правило, значительно более, т. е. 99.999…%) из времени решения задачи выполняется всего 10% (и меньше) текста программы (так называемое соотношение 90:10). Эти 10 % текста — циклы. Именно этими участками текста программы и следует заниматься при ее распараллеливании.

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

Пусть в программе есть цикл, между итерациями которого нет информационной зависимости, например:

Распараллеливание циклов. Параллельное программирование на основе технологий openmp, mpi, cuda.

Итерации этого цикла могут быть выполнены в любом порядке, в том числе, одновременно друг с другом.

Для параллельной системы из п вычислительных элементов (процессоров) может быть реализовано:

Блочное распределение по N / п итераций (если N не делится нацело на я, то загрузка процессоров будет неодинаковой). При этом разные вычислительные узлы будут выполнять следующие фрагменты программы (в этих фрагментах через N0, N1, … Nk обозначены соответствующие количества итераций):

//доля процессора 0, N0 = N / п //доля процессора 1, N0 = 2*N/n.

//доля процессора 0, N0 = N / п //доля процессора 1, N0 = 2*N/n.

//доля процессора п-1 = к,

Циклическое распределение тоже по N/п итераций:

//доля процессора 0.

//доля процессора 0.

//доля процессора 1

//доля процессора п-1

Блочно-циклическое распределение:

//доля процессора 0 //доля процессора 1.

//доля процессора 0 //доля процессора 1.

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

Распараллеливание циклов. Параллельное программирование на основе технологий openmp, mpi, cuda.

Пространством итераций гнезда тесно вложенных циклов называют множество целочисленных векторов { [О, О, U-1, …], [О, О, U-2], … }, координаты которых задаются значениями индексных переменных всех циклов данного гнезда.

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

Существуют следующие методы разбиения: координат, гиперплоскостей, параллелепипедов, пирамид и более сложные.

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

Пусть, например, есть гнездо циклов:

Распараллеливание циклов. Параллельное программирование на основе технологий openmp, mpi, cuda.

Разбиение пространства итераций по измерению / (гиперплоскоскостями, перпендикулярными оси /) приводит к разрыву информационных зависимостей. Следовательно, такое распараллеливание неприемлемо. Однако возможно применение метода координат с разбиением пространства итераций гиперплоскостями, перпендикулярными осиу.

Все такие операции назначаются для выполнения на одном процессоре.

При использовании метода гиперплоскостей пространство итераций размерности п разбивается на подпространства размерности от 1 до п — 1 таким образом, чтобы все операции, соответствующие точкам одного подпространства, могли выполняться параллельно. Каждое такое подпространство есть гиперплоскость, не обязательно перпендикулярная какой-либо оси координат.

Например, для такого гнезда: Распараллеливание циклов. Параллельное программирование на основе технологий openmp, mpi, cuda. метод координат нс годится.

Однако существуют удовлетворяющие условию / + j = const гиперплоскости, проходящие через нс содержащие информационных зависимостей вершины. При этом параллельно работающим процессорам следует назначить вычисления тела цикла для каждой из гиперплоскостей, для которых i + j = const.

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

Возможны и другие более сложные методы распределения пространства итераций при соблюдении основного принципа: параллельно выполняемые итерации не должны информационно зависеть друг от друга.

Показать весь текст
Заполнить форму текущей работой