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

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

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

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

1!.22. Поиск целочисленного решения системы неравенств В строках 1 — 3 алгоритм пытается найти рациональное решение неравенств. Если рационального решения не существует, не существует и целочисленного ре- 975 11.6. Анализ зависимости данных в массивах щения. Если же рациональное решение найдено, значит, неравенства определяют непустой многогранник. Относительно редко в таком многограннике нет ни одной целой точки — это означает, что многогранник должен быть очень тонким вдоль одного измерения и располагаться между целыми точками.

Строки 4 — 9 пытаются быстро определить наличие целочисленного решения. Каждый шаг алгоритма исключения Фурье — Моцкина дает многогранник, у которого на одно измерение меньше, чем у предыдущего. Мы рассматриваем многогранники в обратном порядке, начиная с многогранника с одним измерением и назначая этой переменной целочисленное решение, находящееся примерно посредине диапазона допустимых значений.

Затем это значение подставляется во все другие многогранники, уменьшая тем самым количество переменных в них на 1. Этот процесс повторяется до тех пор, пока не будут обработаны все многогранники. При этом либо будет найдено целочисленное решение, либо будет найдена переменная, для которой целочисленного решения не существует. Если мы не в состоянии найти целочисленное значение даже для первой переменной, значит, целочисленного решения задачи не существует (строка 10).

В противном случае все, что мы знаем, — это то, что нет целочисленного решения, включающего данную комбинацию выбранных целых значений; окончательный вывод о существовании целочисленного решения на основании этих данных сделать нельзя. Строки 11 — 13 представляют шаг алгоритма с использованием метода ветвей и границ. Если переменная п; имеет рациональное решение, но ее целое решение не найдено, разбиваем многогранник на два. В первом требуется, чтобы о; была целым числом, меньшим, чем найденное рациональное решение, а во втором — большим. Если ни один из многогранников на дает решения, зависимостей не существует.

11.6.6 Резюме Мы показали, что существенная часть информации, которую компилятор может собрать из обращений к массивам, представляет собой определенные стандартные математические концепции. Пусть дана функция обращения У = (Е,Г,В,Ь). 1. Размерность области данных, к которым выполняется обращение, определяется рангом матрицы Р. Размерность пространства обращений к одному и тому же месту определяется нуль-пространством Р.

Итерации, разности между которыми принадлежат нуль-пространству Р, обращаются к одним и тем же элементам массива. 2. Итерации с собственным временным повторным использованием обращения отделяются векторами в нуль-пространстве Р. Собственное пространственное повторное использование может быть вычислено аналогично, как 976 Глава 11. Оптимизация параллелизма и локальности ответ на вопрос, когда две итерации используют одну и ту же строку (а не один и тот же элемент).

Два обРашениЯ, Р1~ + Е и Нз + 1з, совместно используют локальность вдоль направления и, если д — частное решение уравнения Ед = (1з — 1з). В частности, если 6 — направление, соответствующее наиболее глубоко вложенному циклу, т.е. представляет собой вектор (0,0,..., О, Ц, то в случае построчного хранения массива имеется пространственная локальность. 3. Задача анализа зависимостей данных — могут лн два обращения обращаться к одним и те же данным — эквивалентна задаче целочисленного линейного программирования.

Зависимости данных имеются, если для двух функций обращения существуют такие целочисленные векторы 1 н 1', что В1 > О, В'1' > 0 и И+1= к'1'+ 1'. 11.6.7 Упражнения к разделу 11.6 Упражнение 11.6.1. Найдите НОД для следующих множеств целых чисел: а) (16,24,56)„ б) ( — 45,105,240); 1 в) (84, 105, 180, 315, 350). Упражнение 11.6.2. Для цикла аког(1 = Оз 1 < 10з 1++) н(1) = А[10 1); укажите все а) истинные зависимости (запись, за которой следует чтение из той же ячейки памяти); б) антизависимости (чтение, за которым следует запись той же ячейки памяти); в) зависимости через выход (запись, за которой следует другая запись в ту же ячейку памяти).

! Упражнение 11.6.3. Во врезке об алгоритме Евклида имеется ряд утверждений, приведенных без доказательства. Докажите следующее. а) Алгоритм Евклида всегда работает. В частности, йсс1 (5, с) = 8сб (а, 5), где с — ненулевой остаток от деления а/5. 977 ! 1.6. Анализ зависимости данных в массивах б) ясс1(а, Ь) = ясс1(а, — 6). в) ясй(ам аз,...,а„) = дед (ясс1 (аз,аз),аз,а4,...,а„) при п ) 2. г) НОД является функцией от множества целых чисел, т.е.

их порядок значения не имеет. Покажите выполнимость закона кольиутативности для НОД: ась (а, 6) = ясб (6, а). Затем докажите более сложный закон ассоциативности: ясд (ясс1 (а, 6), с) = бсср (а, ясб (6, с)). Наконец, покажите, что из этих законов вытекает, что НОД множества чисел всегда один и тот же, независимо от порядка вычисления НОД для пар целых чисел из этого множества. д) Если Я и Т вЂ” множества целых чисел, то йсс)(Я(.)Т) = йсб(йсд(Я)(.)ясй(Т)). ! Упражнение 11.6.4. Найдите другое решение второго диофантового уравнения в примере 11.33. Упражнение 11.6.5. Примените проверку независимых переменных в следую- щей ситуации.

Вложенность циклов представляет собой Гог (1=0; 1<100; 1++) Гог (3=0; 3<100; З++) аког ()<=Оз )с<100з )с++) Внутри вложенности имеется присваивание, включающее обращения к массивам. Определите, имеются ли зависимости данных для каждой из следующих инструкций: а) А[1,3,)с] = А[э.+100,>+100,)с+100]; б) А[з.,3,)с] = А[3+100,)с+100,1+100]; в) А [ з., 3, )с ] = А [ 3 -5 О, )с-5 О, з.-5 О ]; г) А[з.,3,)с] = А[з.+99,)с+100,3].

Упражнение 11.6.6. В ограничениях 1 < г < у — 100 3 < г < 2у — 50 устраните г, заменяя ее константной нижней границей у. Упражнение 11.6.7. Примените проверку вычетов циклов к следующему множе- ству ограничений: 0<г<99 у<т,— 50 0<у<99 г<у — 00 0 < г < 99 978 Глава 11, Оптимизация параллелизма и локальности Упражнение 11.6.8.

Примените проверку вычетов циклов к следующему множе- ству ограничений; О < х < 99 у < х — 50 0<у<99 а<у+50 0<а<99 х<я+20 Упражнение 11.6.9. Примените проверку вычетов циклов к следующему множе- ству ограничений: 0<х<99 у<х — 100 0<у<99 з<у+бО 0 < а < 99 х < г+ 50 11.7 Поиск параллельности, не требующей синхронизации Теперь, когда у нас разработана теория аффинного обращения к массивам, повторного использования данных и зависимостей между ними, пора применить ее к распараллеливанию и оптимизации реальных программ. Как говорилось в разделе 11.1.4, при поиске параллелизма важно минимизировать взаимодействия между процессорами. Начнем с рассмотрения задачи распараллеливания приложения, когда между процессорами нет никакого взаимодействия или синхронизации.

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

11.23 приведен фрагмент трансляции на С (с массивами в стиле гогГгап для ясности) 5000-строчного многосеточного алгоритма для решения трехмерных уравнений Эйлера, написанного на гогпап. Большую часть времени программа тратит на выполнение небольшого количества подпрограмм наподобие показанных на рис. 11.23. Это типично для многих численных программ, которые часто состоят из множества циклов 1ог с различными уровнями вложенности, содержащих много обращений к массивам, причем все они представляют собой аффинные выражения от индексов охватывающих циклов.

Чтобы пример был обозримым, мы убрали из исходной программы строки со сходными характеристиками. 11.7. Поиск параллельности, не требующей синхронизации йог (3 = 2; 3 <= 311 3++) йот (1=2, 1 <=11, 1++) ( АР [3, з.) Т = 1.0/(1.0 + АР[3, 1]); 0[2,],з.] = т*АР[3,з.]' пн[1,2,3, 1] = Т*0Х[1,2,3,з.]; йог (К = 3; )с <= )с1-1; )с++) йот (3 = 2; 5 <= 3 1; 3 ++ ) Кот (1 = 21 1 <= 11; 1++) ( Ам[3, 1] = АР[3, 1]; АР [3, з.] т = ...АР[3,'] — Ам[3,1]*0[к-1,3, Р[)с,],з.] = Т*АР[3,1]з 1)и[1,)с,й,з.] = т*(1и[1,)с,3,1] + пи[1,)с-1,3,1])..

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

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

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