Главная » Просмотр файлов » СКИПОДы конспект лекций

СКИПОДы конспект лекций (1127769), страница 20

Файл №1127769 СКИПОДы конспект лекций (СКИПОДы конспект лекций) 20 страницаСКИПОДы конспект лекций (1127769) страница 202019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 20)

Границыизменения переменной цикла T меняются при переходе с одной прямой (гиперплоскости) на другую,поэтому их необходимо перевычислять во внешнем цикле. Число итераций внутреннего цикла, то естьпотенциальная длина векторной операции, меняется с изменением K .

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

Метод параллелепипедов.Идея методазаключаетсяввыявлении зависимых итераций цикла и объединении их впоследовательности - ветви, которые могут быть выполнены независимо друг от друга. П ри этом впространстве итераций определяются области (параллелепипеды), все точки которых принадлежат разнымветвям. Задача максимального распараллеливания заключается в поиске параллелепипеда наибольшегообъема; тогда исходный цикл выполняется наибольшим числом параллельных ветвей, каждая из которыхпредставляет собой исходный цикл, но с другим шагом изменения индекса.Для исходного цикла:DO 7 I = 1,7DO 7 J = 1,37 X(I,J) = X(I-2,J-1)параллельное представление в виде:DO 7 (K,L) = (1,1) (P1,P2)1: PARDO 7 I = K,7,P1DO 7 J = L,3,P27 X(I,J) = X(I-2,J-1)допускается для различных разбиений пространства итераций: пара (P1,P2) может иметь, например,значения (2,1), (2,3) или (7,1).

Таким образом, исходный цикл (7) преобразуется в последовательностьпараллельных ветвей, имеющих циклический вид.В общем виде задача, рассматриваемая методом параллелепипедов, для одномерных циклов состоит вопределении возможности представления цикла:DO L I = 1,rL T(I)(где T(i) - тело цикла) в виде следующей языковой конструкции:DO L K = 1,p1: PARDO L I = K,r,pL T(I)67. Оценить возможность параллельного выполнения цикла: DO i = 2,N A(i) = (B(i) +(i))/A(i+CONST) ENDDOЕсли const = 0, то все итерации цикла независимы и такой цикл может быть выполнен на любоймногопроцессорной ЭВМ, включая Иллиак-4.

(каждый виток цикла выполняется на отдельном процессоре)Если const > 0 (пусть =1) то при параллельное выполнение цикла на ЭВМ класса МКМД бездополнительных мер по синхронизации работы процессоров невозможно. Например, пусть N=3 и двапроцессора вычисляют параллельно эти итерации, тогда, первый процессор вычисляет А2 по В2, С2, А3, авторой, А3 по В2, С2, А4 . При отсутствии синхронизации может случиться ситуация, при которой второйпроцессор завершит свою работу до начала работы первого.

Тогда первый процессор для вычислений будетиспользовать А3, которое обновил второй процессор, что неверно, ибо здесь нужно ―старое‖ значение А3.Однако, этот цикл выполняется параллельно на ЭВМ ОКМД (SIMD) так как там этот цикл может бытьвыполнен такими командами:1. Считать Вi в сумматоры каждого из n АЛУ.2. Сложить Сi со своим содержимом сумматора.483. Разделить содержимое каждого i-сумматора на Аi+1.4. Записать содержимое i- сумматоров в Аi.Из за того, что выборка из памяти и запись в память производится синхронно (одновременно), то работацикла – корректна.Если const < 0 то параллельное выполнение цикла невозможно, ибо для выполнения очередной итерациицикла необходимы результаты работы предыдущей (рекурсия).

Однако известны приемы преобразованиятакого рода циклов к виду, допускающие параллельное выполнение.68. Стандарты OpenMP.Интерфейс OpenMP задуман как стандарт для программирования на масштабируемых SMP-системах(SSMP,ccNUMA, etc.) в модели общей памяти (shared memory model). В стандарт OpenMP входятспецификации набора директив компилятора, процедур и переменных среды.До появления OpenMP не было подходящего стандарта для эффективного программирования на SMPсистемах.Наиболее гибким, переносимым и общепринятым интерфейсом параллельного программирования являетсяMPI (интерфейс передачи сообщений). Однако модель передачи сообщений 1) недостаточно эффективна наSMP-системах; 2) относительно сложна в освоении, так как требует мышления в "невычислительных"терминах.Проект стандарта X3H5 провалился, так как был предложен во время всеобщего интереса к MPP-системам,а также из-за того, что в нем поддерживается только параллелизм на уровне циклов.

OpenMP развиваетмногие идеи X3H5.POSIX-интерфейс для организации нитей (Pthreads) поддерживается широко (практически на всех UNIXсистемах), однако по многим причинам не подходит для практического параллельного программирования: нет поддержки Fortran-а, слишком низкий уровень, нет поддержки параллелизма по данным, механизм нитей изначально разрабатывался не для целей организации параллелизма.OpenMP можно рассматривать как высокоуровневую надстройку над Pthreads (или аналогичнымибиблиотеками нитей).Многие поставщики SMP-архитектур (Sun,HP,SGI) в своих компиляторах поддерживают спецдирективыдля распараллеливания циклов.

Однако эти наборы директив, как правило, 1) весьма ограничены; 2)несовместимы между собой; в результате чего разработчикам приходится распараллеливать приложениеотдельно для каждой платформы. OpenMP является во многом обобщением и расширением упомянутыхнаборов директив.Директивы OpenMP с точки зрения Фортрана являются комментариями и начинаются с комбинациисимволов "!$OMP".

Директивы можно разделить на 3 категории: определение параллельной секции,разделение работы, синхронизация. Каждая директива может иметь несколько дополнительных атрибутов клауз. Отдельно специфицируются клаузы для назначения классов переменных, которые могут бытьатрибутами различных директив.Порождение нитейPARALLEL ... END PARALLELОпределяет параллельную область программы.

При входе в эту область порождаются новые (N-1),образуется "команда" из N нитей, а порождающая нить получает номер 0 и становится основной нитьюкоманды (т.н. "master thread"). При выходе из параллельной области основная нить дожидается завершенияостальных нитей, и продолжает выполнение в одном экземпляре. Предполагается, что в SMP-системе нитибудут распределены по различным процессорам (однако это, как правило, находится в веденииоперационной системы).Каким образом между порожденными нитями распределяется работа - определяется директивамиDO,SECTIONS и SINGLE.

Возможно также явное управление распределением работы (а-ля MPI) спомощью функций, возвращающих номер текущей нити и общее число нитей. По умолчанию (вне этихдиректив), код внутри PARALLEL исполняется всеми нитями одинаково.Вместе с PARALLEL может использоваться клауза IF(условие) - й параллельная работа инициируетсятолько при выполнении указанного в ней условия.49Параллельные области могут динамически вложенными. По умолчанию (если вложенный параллелизм неразрешен явно), внутренняя параллельная область исполняется одной нитью.Разделение работы (work-sharing constructs)Параллельные циклыDO ...

[ENDDO]Определяет параллельный цикл.Клауза SCHEDULE определяет способ распределения итераций по нитям:STATIC,m - статически, блоками по m итерацийDYNAMIC,m - динамически, блоками по m (каждая нить берет на выполнение первый ещеневзятый блок итераций)GUIDED,m - размер блока итераций уменьшается экспоненциально до величины mRUNTIME - выбирается во время выполнения .По умолчанию, в конце цикла происходит неявная синхронизация; эту синхронизацию можно запретить спомощью ENDDO NOWAIT.Параллельные секцииSECTIONS ...

END SECTIONSНе-итеративная параллельная конструкция. Определяет набор независимых секций кода (т.н., "конечный"параллелизм). Секции отделяются друг от друга директивой SECTION.Примечание. Если внутри PARALLEL содержится только одна конструкция DO или только одна конструкияSECTIONS, то можно использовать укороченную запись: PARALLEL DO или PARALLEL SECTIONS.Исполнение одной нитьюSINGLE ... END SINGLEОпределяет блок кода, который будет исполнен только одной нитью (первой, которая дойдет до этогоблока).Явное управление распределением работыС помощью функций OMP_GET_THREAD_NUM() и OMP_GET_NUM_THREADS нить может узнатьсвой номер и общее число нитей, а затем выполнять свою часть работы в зависимости от своего номера(этот подход широко используется в программах на базе интерфейса MPI).Директивы синхронизацииMASTER ... END MASTERОпределяет блок кода, который будет выполнен только master-ом (нулевой нитью).CRITICAL ...

END CRITICALОпределяет критическую секцию, то есть блок кода, который не должен выполняться одновременнодвумя или более нитямиBARRIERОпределяет точку барьерной синхронизации, в которой каждая нить дожидается всех остальных.ATOMICОпределяет переменную в левой части оператора "атомарного" присваивания, которая должнакорректно обновляться несколькими нитями.ORDERED ... END ORDEREDОпределяет блок внутри тела цикла, который должен выполняться в том порядке, в которомитерации идут в последовательном цикле.

Может использоваться для упорядочения вывода отпараллельных нитей.FLUSHЯвно определяет точку, в которой реализация должна обеспечить одинаковый вид памяти для всех50нитей. Неявно FLUSH присутствует в следующих директивах: BARRIER, CRITICAL, ENDCRITICAL, END DO, END PARALLEL, END SECTIONS, END SINGLE, ORDERED, ENDORDERED.В целях синхронизации можно также пользоваться механизмом замков (locks).В OpenMP переменные в параллельных областях программы разделяются на два основных класса: SHARED (общие; под именем A все нити видят одну переменную) и PRIVATE (приватные; под именем A каждая нить видит свою переменную).Отдельные правила определяют поведение переменных при входе и выходе из параллельной области илипараллельного цикла: REDUCTION, FIRSTPRIVATE, LASTPRIVATE, COPYIN.В целях создания переносимой среды запуска параллельных программ, в OpenMP определен рядпеременных среды, контролирующих поведение приложения.В OpenMP предусмотрен также набор библиотечных процедур, которые позволяют: во время исполнения контролировать и запрашивать различные параметры, определяющиеповедение приложения (такие как число нитей и процессоров, возможность вложенногопараллелизма); процедуры назначения параметров имеют приоритет над соответствующимипеременными среды. использовать синхронизацию на базе замков (locks).69.

Характеристики

Тип файла
PDF-файл
Размер
1,14 Mb
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6439
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее