Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Топ:
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Эволюция кровеносной системы позвоночных животных: Биологическая эволюция – необратимый процесс исторического развития живой природы...
Интересное:
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
2021-01-31 | 56 |
5.00
из
|
Заказать работу |
|
|
|
– разметка участков программы, допускающих автоматическое распарал- леливание;
– анализ участков и причин, препятствующих распараллеливанию про- граммы;
– выбор участков программы, допускающих их техническое приведение к форме, пригодной для распараллеливания;
– изобретение рецептов полуручного преобразования текста программы с целью расширения возможностей распараллеливания;
–
|
– прогон распараллеленной версии программы для оценки выигрыша от параллелизма;
– частичное перепрограммирование и отладка фрагментов программы для исключения или смягчения эффектов, препятствующих достижению нужных характеристик производительности;
– установление частичной функциональной эквивалентности исходной программы и результирующей ее версии.
Обычно компилятор поддерживает оптимизации, обеспечивающие устра- нение неиспользуемого кода, чистку циклов, слияние общих подвыражений, перенос участков повторяемости для обеспечения однородности распаралле- ливаемых ветвей, раскрутку или разбиение цикла, втягивание константных вычислений, уменьшение силы операций, удаление копий агрегатных кон- струкций и др.
|
При распараллеливании рассматривается зависимость ускорения вычис- лений от числа процессоров и объема общей и распределенной памяти. Вы- полняется систематическая замена рекурсии на циклы. Предпочитается од- нородное пространство процессоров, общая память, быстрые обмены, сосед- ство, гарантирующие улучшение производительности систем для высокопроизводительных вычислений.
Заметно влияние дисциплины работы с памятью на характеристики па- раллельных процессов. Используется защищенная и распределенная память. Различны решения, принятые в разных языках программирования, по работе с многоуровневой и разнородной памятью (доступ, побочный эффект, ре- плики, дубли и копии). Обработка транзакций становится одной из типовых семантик работы с памятью в языках параллельного программирования.
Предлагаются средства и методы типизации управления процессами, удобными для подготовки программ, ориентированных на исполнение с по- мощью Open MP или MPI. Идеи языков программирования по сетевому пред- ставлению типов управления и дисциплины работы с памятью еще не полу- чили удобной системной поддержки. Компонентно-ориентированная разра- ботка ПО может следовать единому сетевому определению семантики языков программирования и процесса разработки программ.
|
|
– помощник по параллельному программированию (Parallel Advisor XE);
– компиляторы-отладчики и библиотеки (Parallel Composer XE2011);
– анализатор потоков и памяти (Parallel Inspector XE);
– профилировщик производительности (Parallel Amplifier XE).
Помощник по параллельному программированию анализирует исходный текст программы на языках Fortran или C до ее компиляции и отмечает узкие места, препятствующие распараллеливанию.
Анализатор потоков и памяти исследует полученный в результате компи- ляции объектный код и выявляет неудачное распределение ресурсов, сни- жающее производительность программы.
|
Технология применения всех этих инструментов предполагает, что про- граммист по ходу дела многократно принимает решения об изменении ис- ходного кода программы и вручную включает в него необходимые прагмы, указывающие компилятору допустимость оптимизирующих преобразова- ний, что делает работу компилятора по распараллеливанию программы проще и надежнее. Возникает проблема автоматизации преобразования про- грамм с целью приведения их к виду, удобному для распараллеливания ком- пилятором и настройки объектного кода на конкретную многопроцессорную
конфигурацию. Часть проблем решает схема подготовки параллельных про- грамм с использованием библиотек преобразований исходного и объектного кода.
|
Так, например, возникает необходимость устранения или преобразования ряда механизмов работы с глобальными переменными, общими блоками дан- ных, глубокой вложенности процедур, перехода от рекурсивных вызовов к итерациям со статическим управлением циклом и другое. Кроме того, возни- кает целый спектр аналитических выкладок по установлению фактических областей видимости имен, выбор между общей памятью и памятью конкрет- ного потока. Выполнение таких работ вручную связано с риском порождения типичных для параллельных программ ошибок, таких как гонки памяти, кон- фликт доступа, взаимоблокировка и т. п.
|
Реорганизация векторов для нужд эффективного распараллеливания мо- жет идти разными путями: разделение на четные-нечетные элементы, разби- ение на половины или четверти, распределение по частям, требующим раз- ной интенсивности вычислений и т. п.
Иногда такие проблемы можно решить на уровне макропреобразований текста программы, выполняемых препроцессорами, – необходимо лишь раз- работать систему подходящих конкретной программе макроопределений. Та- кие системы обычно не обладают универсальностью: они отражают индиви- дуальный стиль программирования, учитывают особенности мнемоники и неявные границы схем управления вычисления. В результате создается мно- гопоточная версия программы, строго говоря, не являющаяся эквивалентом исходной программы, а лишь эквивалентно строящая ее основные резуль- таты.
|
Следует отметить, что использование языков параллельного программи- рования в качестве языка представления исходной программы не гарантирует ее приспособленность к удачному распараллеливанию.
При анализе пригодности программы к распараллеливанию анализируются следующие потенциальные зоны риска:
– объявление и использование глобальных переменных;
– области видимости переменных и констант;
– определения распараллеливаемых процедур, содержащие внутренние вызовы других процедур;
|
– рекурсивные определения;
–
|
– ветвления и переключатели, дающие развилки потоков;
– обработчики исключений;
– реакции на события и сообщения;
– позиции возможного обмена данными между потоками;
– тиражирование данных в общей памяти и в файлах;
– списки параметров функций, возможно преобразуемые в данные в об- щей памяти;
– декомпозиция управления циклом и реорганизация соответствующих структур данных;
– границы участков изменения значений переменных;
– переменные для значений промежуточных вычислений;
– многократно выполняемые идентичные вычисления – избыточные;
– инкрементные переменные, динамику изменения которых желательно сохранять для пост-анализа;
– позиции диагностической аранжировки для пост-анализа;
– фактически не задействованные переменные и константные или не ис- пользуемые вычисления;
– параметризация зависимостей частей многопоточной программы от но- мера потока.
|
Таким образом, техника приведения программ к распараллеливаемой форме меняет стиль применения систем программирования, требует про- граммистской работы на уровне грани между разбором программы и кодоге- нерацией, а также обустройства библиотек преобразований программы и ее оптимизирующих преобразований.
Важно учесть изменение критериев применимости оптимизирующих пре- образований. Если устранение избыточных вычислений в последовательной программе обычно оценивается как улучшение, то в параллельной программе оно может оказаться пессимизацией из-за появления лишних взаимосвязей между потоками и доступа к общей памяти.
|
|
Отладочные средства современных визуальных оболочек систем про- граммирования, как и в ранние времена последовательного программирова- ния, предоставляют для отладки параллельных программ средства выполне- ния в пошаговом режиме, отслеживания значений переменных и установле- ния точек приостановок, для работы с которыми программист должен заранее подготовить комплекты тестов для всех участков программы и кон- троля корректности значений внутренних переменных. Возможно указание условий, при которых отладчик произведет приостановку программы и обес- печит воспроизводимость повторного прогона программы.
Специфику параллельного программирования отражает лишь возмож- ность переключения потоков, обнаружения тупиков и потерянных сигналов, совместно используемых (разделяемых) данных, рентерабельных процедур, вызываемых повторно из другого потока до их завершения, на фоне визуали- зации в стиле асцилографа.
|
|
|
|
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!