Главная » Просмотр файлов » А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий

А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947), страница 205

Файл №1114947 А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (А.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий) 205 страницаА.В. Ахо, М.С. Лам, Р. Сети, Дж. Д. Ульман - Компиляторы - принципы, технологии и инструментарий (1114947) страница 2052019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

! 1.28 Рис. 1!.34. Код к примеру 11.48 ) 1Г (р < -1) Х[101+р, 100]=Х[101+р, 100]+у[101+р-1, 100]; /* (В1) */ ) 1ООО Глава 11. Оптимизация параллелизма и локальности Семь примитивных аффиипых преобразований Каждое аффинное преобразование может быть выражено в виде ряда примитивных аффинных преобразований, каждое из юторых соответствует простому изменению на уровне исходного текста.

Существует семь типов примитивных преобразований. Первые четыре из них проиллюстрированы на рис. 11.35, а последние три, известные как унимодулярные преобразования, показаны на рис. 11.36. На рисунках показано по одному примеру для каждого примитива: исходный код, аффинное разбиение и код, получившийся в результате преобразования. Изображены также зависимости данных для кода до и после преобразования. Из диаграмм зависимостей данных видно, что каждый примитив соответствует простому геометрическому преобразованию и порождает относительно простое преобразование кода.

Вот эти семь примитивов. 1. Слияние. Преобразование слияния характеризуется отображением нескольких индексов циклов исходной программы на один и тот же индекс цикла. Новый цикл объединяет инструкции из разных циклов. 2. Расщепление. Расщепление представляет собой преобразование, обратное слиянию.

Оно отображает один н тот же индекс цикла для разных инструкций на различные индексы циклов в преобразованном коде. Таким образом, исходный цикл разбивается на несколько циклов. 3. Реиндексирование. Реиндексирование сдвигает динамические выполнения инструкции на постоянное количество итераций. Аффинное преобразование при этом содержит константный член. 4. Масштабирование. Последовательные итерации в исходной программе разносятся с использованием постоянного множителя. Соответствующее аффинное преобразование имеет положительный коэффициент, не равный 1. 5. Реверс. Выполнение итераций в цикле в обратном порядке.

Реверс характеризуется наличием юэффициента — 1 в аффинном преобразовании. 6. Перестановка. Перестановка внешнего и внутреннего циклов. Аффинное преобразование состоит из переставленных строк тождественной матрицы. 7. Сдвиг. Обход пространства итераций "под углом". Аффинное преобразование представляет собой унимодулярную матрицу с единицами на главной диагонали. Геометрическая интерпретация распараллеливания Приведенные аффинные преобразования, кроме слияния, порождаются путем применения алгоритма аффинного разбиения, не требующего синхронизации, 1001 11.7. Поиск параллельности, не требующей синхронизации ПРЕОБРАЗОВАННЫЙ КОД ИОХОДНЫЙ КОД РАЗБИЕНИЕ Слияние (бзяоп) Рог (р=1; р<=м; р++)( х[р] = е[р]; х[р] = х[р]; в| ..Р=( зз ° Р =.7 Расщепление (бвв]оп) Рог (р=1; р<=М; р++)( х1р1 = е[р]; х[р1 - х(р]; в| .. (=р в2 Э=Р Реиндек- сирование (те(пс]ех(пи) в|.

Р=( вз: р = ( — 1 Масштабирование (вса![пЕ) в|.р= 2*1 (вз: Р = .7) Рис. 11.35. Примитивные аффинные преобразования (часть 1) Еог (1=1; 1<=М; 1++) Х[1] = Е[1]; /*в1*/ Еог (1=1; 1<=м; 1++) Х[1] = Х[1]; /*в2*/ Рог (1=1; 1<=м; 1++) ( Х[1] = 2[11; /*в1*/ Х[11 = Х[1-1]; /*в2*/ Рог (1=1; 1<=м; 1++) Х[2*11 = Е[2*11; /*в1*/ е (1=1; 1<=гм; 1++) Х[1]=Х[11; /*в2*/ Еог (1 1| 1<=М) 1++) Х[11 = Е[1]' /*в1в/ Еог (1=1' 1<=м) 1++) Х[1] = Х[1]; /*в2*/ ЕЕ (М>=1) Х[1]-Х[01; Еог (р=1; р<=М-1; р++)( х1р1=е[р]| х[р+1]=х[р]; ) Ег (М>=1) Х[М]=Е[м]; Е (р=1| р<=г*М; р++)( ЕЕ (р вес( 2 == О) х[р1 = е[р]; х[р] = х[р]; ) 1002 Глава 11. Оптимизация параллелизма и локальности ПРЕОБРАЗОВАННЫЙ КОД ИОКОДный кОД РАЗБИЕНИЕ Реверс (гечегза]) а! .

р = ]'т' — ( (аз Р .)) Ш й1:. Перестановка (репин(ай оп) Ш1 Рис. 11.36. Примитивные аффинные преобразования (часть 2) к соответствующим исходным кодам. (Как слияние может распараллеливать код с синхронизацией, мы рассмотрим в следующем разделе.) В каждом из примеров генерируемый код содержит (внешний) распараллеливаемый цикл, итерации которого могут быть назначены различным процессорам, причем синхронизация при этом не требуется. Еог (1=0; 1<=И~ 1++) у[Н-1] = Е[1]; /*31*/ гог (3=0! З<=Н~ З++) Х[З] У[1]~ /*в2*/ Еог (1=1; 1<=И; 1++) Еог (З=О; З<=М! З++) Е[1,2] Е[1-1,З]; гог (1=1' 1<=Н+М 1' 1++) Еог (З свах(1,1+И); З<=ксап(Е,М)! 2++) Е[Е,З] Е[1-1,1-1]! ~:Н"И Сдвиг (з]сеъчпй) [:]=[' 'И Еог (р=О; р<=Н! р++)( т[р] = е[н-р]; х[р] = т[р]; Еог (р=О; р<=М; р++) Еог (с[=1! сз<=ир 1++) Е[о,р] = Е[с)-1,р]; Еог (р=1; р<=Н! р++) Еог (с(=1; с(<=М; с(++) Е[р Ч-р] Е[р-1,о-р-1]; 1ООЗ 1! .7.

Поиск параллельности, не требующей синхронизации Унимодулярные преобразования Унимодулярное преобразование представлено только унимодулярной матрицей коэффициентов, без константного вектора. Унимодулярная маглрица— это квадратная матрица, детерминант которой равен ~1.

Важность унимодулярных матриц заключается в том, что они взаимно однозначно отображают п-мерное пространство итераций на другой п-мерный многогранник. В приведенных примерах иллюстрируется наличие простой геометрической интерпретации распараллеливания. Ребра зависимостей всегда идут от более раннего экземпляра к более позднему. Так, зависимости между различными инструкциями, не вложенными ни в один общий цикл, следуют лексическому порядку; зависимости между инструкциями, вложенными в один и тот же цикл, следуют лексикографическому порядку. Геометрически зависимости двумерной вложенности циклов всегда направлены в диапазоне [0,180 ), что означает, что угол зависимости должен быть меньше 180', но не меньше 0'.

Аффинные преобразования изменяют порядок итераций таким образом, что все зависимости являются зависимостями между операциями, находящимися в одной н той же итерации охватывающего цикла. Распараллелить простой исходный текст можно путем изображения зависимостей и геометрического поиска соответствующего преобразования. 11.7.9 Упражнения к разделу 11.7 Упражнение 11.7.1. Дан цикл аког (1 = 2; 1 < 100; з++) А[1) = А!1-2)! а) Чему равно наибольшее количество процессоров, которые могут быть эффективно использованы для выполнения этого цикла? б) Перепишите код с использованием процессора р в качестве параметра.

в) Запишите ограничения разбиения пространства для данного цикла и найдите одно их решение. г) Что собой представляет аффинное разбиение данного цикла с наивысшим рангом? Упражнение 11.7.2. Повторите упражнение 11.7.1 для вложенностей циклов, представленных на рнс. !!.37. 1004 Глава 11. Оптимизация параллелизма и локальности аког (1 = Ор 1 <= 97з 1++) А[1] = А('+2]; а) аког (1 = 1; 1 <= 100; 1++) аког (7 = 11 5 <= 1001 З++) аког ()с = 1' )с <= 100; )с++) ( А(1, 7, 1с] = А[1, 7, 1с] + В(1-1, 7, 1с]; В[1,7,)с] = В(1,7,)с] + С(1,7-1,)с]; С ( 3., 7, )с] = С [1, 7, )с] + А( э., 7, )с-1]; !6) аког (1 = 11 1 <= 100; 1++) аког (> = 1; Э <= 100; 7++) аког ()с = 1; )с <= 100; )с++) ( А[1,7,)с] = А[1,7,)с] + В(1-1,7,)с]; В[1г7~)с] — В[1 Эг)с] + А[1г3 1г)с] С[1,7,)с] = С[1,7,)с] + А[1,7,)с-1] + В[1,7,)с]; !в) Рис.

11.37. Исходные тексты к упражнению 11.7.2 Упражнение 11.7.3. Перепишите код аког (1 = 0; 1 < 100з 1++) А[1] = 2*А[1]; аког (7 = Ор 7 < 100; 7++) А[7] = А(7] + 11 так, чтобы он состоял из одного цикла. Перепишите этот код с использованием номера процессора р так, чтобы этот код мог быть разделен между 100 процессорами, причем итерация р выполнялась бы процессором р.

Упражнение 11.7.4. В коде аког (1 = 11 1 < 100; 1++) ~ог (7 = 1: 7 < 100; 1++) А[з. З ] (А[1-1,3]+А[1+1,Э]+А(1,З-1]+А(1,7+1])/4з /* (в) */ 1005 ! !.8. Синхронизация между параллельными циклами единственные ограничения заключаются в том, что инструкция я, образующая тело вложенности циклов, должна выполнять итерации я (1 — 1, ) ) н я (г, ) — 1) до итерации а (1, )). Убедитесь в том, что это единственные необходимые ограничения. Затем перепишите код так, чтобы внешний цикл имел индексную переменную р и на р-й итерации внешнего цикла выполнялись все экземпляры а (г, )), такие, что 1+,) = Р.

Упражнение 11.7.5. Повторите упражнение 11.7.4, но так, чтобы на р-й итерации внешнего цикла выполнялись те экземпляры а, для которых 1 — ) = р. ! Упражнение 11.7.6. Объедините циклы Хог (1 = Ор 1 < 100р х++) А[1] = В[1]; аког (з = 98; з >= 0; з = з-2) В[х] = 1; в один цикл с сохранением всех имеющихся зависимостей. Упражнение 11.7.7. Покажите, что матрица [' '1 унимодулярна. Опишите преобразование над двумерной вложенностью циклов, выполняемое ею. Упражнение 11.7.8. Повторите упражнение 11.7.7 для матрицы ["] 11.8 Синхронизация между параллельными циклами Если не разрешать процессорам синхронизироваться, то большинство программ не смогут быть распараллелены.

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

Список файлов книги

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