Анализ эффективности MPI-программ. Дипломная (ВКР). Информационное обеспечение, программирование.

Анализ эффективности MPI-программ. Дипломная (ВКР). Информационное обеспечение, программирование.




💣 👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Похожие работы на - Анализ эффективности MPI-программ

Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе

Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

2.
Обзор существующих моделей параллельного программирования.. 5


3.
Обзор средств отладки эффективности MPI-программ. 9


3.1
Общие проблемы всех средств трассировки.. 10


3.2
Обзор основных средств отладки.. 11


3.2.1 AIMS - Automated Instrumentation and
Monitoring System 11


3.2.4 Pablo Performance Analysis Toolkit Software 15


4.
Характеристики и методика отладки DVM-программ.. 20


4.1 Основные характеристики производительности 20


4.2 Методика отладки эффективности 22


5.
Средство анализа эффективности MPI
программ. 27


Сегодня невозможно
представить себе эффективную организацию работы без применения компьютеров в
таких областях, как планирование и управление производством, проектирование и
разработка сложных технических устройств, издательская деятельность,
образование - словом, во всех областях, где возникает необходимость в обработке
больших объемов информации. Однако наиболее важным по-прежнему остается
использование их в том направлении, для которого они собственно и создавались,
а именно, для решения больших задач, требующих выполнения громадных объемов
вычислений. Такие задачи возникли в середине прошлого века в связи с развитием
атомной энергетики, авиастроения, ракетно-космических технологий и ряда других
областей науки и техники.


В наше время круг задач,
требующих для своего решения применения мощных вычислительных ресурсов, еще
более расширился. Это связано с тем, что произошли фундаментальные изменения в
самой организации научных исследований. Вследствие широкого внедрения
вычислительной техники значительно усилилось направление численного моделирования
и численного эксперимента. Численное моделирование, заполняя промежуток между
физическими экспериментами и аналитическими подходами, позволило изучать
явления, которые являются либо слишком сложными для исследования аналитическими
методами, либо слишком дорогостоящими или опасными для экспериментального
изучения. При этом численный эксперимент позволил значительно удешевить процесс
научного и технологического поиска. Стало возможным моделировать в реальном
времени процессы интенсивных физико-химических и ядерных реакций, глобальные
атмосферные процессы, процессы экономического и промышленного развития регионов
и т.д. Очевидно, что решение таких масштабных задач требует значительных
вычислительных ресурсов[12].


Вычислительное направление применения компьютеров всегда
оставалось основным двигателем прогресса в компьютерных технологиях. Не
удивительно поэтому, что в качестве основной характеристики компьютеров
используется такой показатель, как производительность - величина,
показывающая, какое количество арифметических операций он может выполнить за
единицу времени. Именно этот показатель с наибольшей очевидностью демонстрирует
масштабы прогресса, достигнутого в компьютерных технологиях.


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


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


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


Эффективность выполнения параллельных программ на многопроцессорных ЭВМ с
распределенной памятью определяется следующими основными факторами:


·
степенью
распараллеливания программы - долей параллельных вычислений в общем объеме
вычислений;


·
равномерностью
загрузки процессоров во время выполнения параллельных вычислений;


·
временем,
необходимым для выполнения межпроцессорных обменов;


·
степенью совмещения
межпроцессорных обменов с вычислениями;


·
эффективностью
выполнения вычислений на каждом процессоре (а она может варьироваться
значительно в зависимости от степени использования кэша).


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







Для
организации доступа к данным на многопроцессорных ЭВМ требуется взаимодействие
между её процессорами. Это взаимодействие может происходить либо через общую
память, либо через механизм передачи сообщений – две основные модели
параллельного выполнения программы . Однако эти модели являются довольно низкоуровневыми.
Поэтому главным недостатком выбора одной из них в качестве модели
программирования является то, что такая модель непривычна и неудобна для
программистов, разрабатывающих вычислительные программы.


Можно отметить системы автоматического распараллеливания,
которые вполне успешно использовались на мультипроцессорах. А использование
этих систем на распределённых системах существенно затруднено тем, что


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


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


В третьих , распределение вычислений и данных должно быть произведено согласованно.


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


В настоящее
время существуют следующие модели программирования :


В модели передачи сообщений параллельная программа
представляет собой множество процессов, каждый из которых имеет собственное локальное
адресное пространство. Взаимодействие процессов - обмен данными и синхронизация
- осуществляется посредством передачи сообщений. Обобщение и стандартизация
различных библиотек передачи сообщений привели в 1993 году к разработке
стандарта MPI (Message Passing Interface). Его широкое внедрение в последующие
годы обеспечило коренной перелом в решении проблемы переносимости параллельных
программ, разрабатываемых в рамках разных подходов, использующих модель
передачи сообщений в качестве модели выполнения.


 В числе основных достоинств MPI по сравнению с интерфейсами
других коммуникационных библиотек обычно называют следующие его возможности:


· 
 Возможность
использования в языках Фортран, Си, Си++;


· 
 Предоставление
возможностей для совмещения обменов сообщениями и вычислений;


· 
 Предоставление
режимов передачи сообщений, позволяющих избежать излишнего копирования
информации для буферизации;


· 
 Широкий набор
коллективных операций (например, широковещательная рассылка информации, сбор
информации с разных процессоров), допускающих гораздо более эффективную
реализацию, чем использование соответствующей последовательности пересылок
точка-точка;


· 
 Широкий набор
редукционных операций (например, суммирование расположенных на разных
процессорах данных, или нахождение их максимальных или минимальных значений),
не только упрощающих работу программиста, но и допускающих гораздо более
эффективную реализацию, чем это может сделать прикладной программист, не
имеющий информации о характеристиках коммуникационной системы;


· 
 Удобные средства
именования адресатов сообщений, упрощающие разработку стандартных программ или
разделение программы на функциональные блоки;


· 
 Возможность
задания типа передаваемой информации, что позволяет обеспечить ее
автоматическое преобразование в случае различий в представлении данных на
разных узлах системы.


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


Появившийся в 1997 проект стандарта MPI-2 [2] выглядит еще
более громоздким и неподъемным для полной реализации. Он предусматривает
развитие в следующих направлениях:


· 
 Динамическое
создание и уничтожение процессов;


· 
 Односторонние
коммуникации и средства синхронизации для организации взаимодействия процессов
через общую память (для эффективной работы на системах с непосредственным
доступом процессоров к памяти других процессоров);


· 
 Параллельные
операции ввода-вывода (для эффективного использования существующих возможностей
параллельного доступа многих процессоров к различным дисковым устройствам).


Модель
неструктурированных нитей. Программа представляется как совокупность нитей (threads), способных выполняться параллельно и имеющих общее
адресное пространство. Имеющиеся средства синхронизации нитей позволяют
организовывать доступ к общим ресурсам. Многие системы программирования
поддерживают эту модель: Win32 threads, POSIX threads, Java threads.


Модель
параллелизма по данным. Основным её представителем является язык HPF [3]. В этой модели программист самостоятельно
распределяет данные последовательной программы по процессорам. Далее
последовательная программа преобразуется компилятором в параллельную,
выполняющуюся либо в модели передачи сообщений, либо в модели с общей памятью.
При этом каждый процессор производит вычисления только над теми данными,
которые на него распределены.


Модель
параллелизма по управлению. Эта модель возникла в применении к мультипроцессорам. Вместо терминов
нитей предлагалось использовать специальные конструкции – параллельные циклы и
параллельные секции. Создание, уничтожение нитей, распределение на них витков
параллельных циклов или параллельных секций – всё это брал на себя компилятор.
Стандартом для этой модели сейчас является интерфейс OpenMP [4].


Гибридная
модель параллелизма по управлению с передачей сообщений . Программа представляет собой
систему взаимодействующих MPI –
процессов, каждый из которых программируется на OpenMP.


Модель параллелизма по данным и управлению – DVM (Distributed
Virtual Machine, Distributed Virtual Memory) [5]. Эта модель была разработана в
Институте прикладной математики им. М. В. Келдыша РАН.





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


Можно выделить два основных подхода к анализу производительности:


· 
A. "Трассировка +
Визуализация". Данный подход подразумевает два этапа:


o
A1. Во время исполнения программы
собирается "трасса", т.е. журнал о ходе работы программы.


o
A2. Затем полученная трасса
просматривается и анализируется.


· 
B. "Online-анализ". Поведение программы анализируется
непосредственно в ходе ее выполнения.





Рис.1 Схема А.
“Трассировка + Визуализация”.




1. 
Формат трасс не
унифицирован и обычно ориентирован на конкретную библиотеку передачи сообщений.



2. 
Сбор информации -
слабые возможности настройки фильтров событий (какие события и какую информацию
включать в трассы). Нет возможности варьировать объем трассы.


3. 
Не учитывается
эффекта замера - средство трассировки достаточно сильно изменяет поведение
программы.


1. 
Что показывать?
Какая информация интересна и полезна для отладки эффективности MPI программы.


2. 
Как показывать?
Рис.2 . Надо проводить обобщение собираемой информации. Просто вид всех событий
может быть неинформативен.


3. 
Когда показывать?
Важно показывать то, что полезно в данный момент для отладки эффективности,
чтобы не загромождать пользователя излишней информацией.





Ниже будут кратко описаны
некоторые основные средства отладки MPI-программ:


· 
AIMS -инструментарий, библиотека
мониторинга и средства анализа


· 
MPE -библиотека сохранения Log-файлов средство визуализации Nupshot


· 
Pablo - библиотека мониторинга и средства
анализа


· 
Paradyn – динамический инструментарий и ран
тайм библиотека


· 
SvPablo – интегрированный инструментарий,
библиотека мониторинга, средства анализа


· 
VAMPIRtrace - библиотека мониторинга and VAMPIR – средство визуализации





Некоммерческий продукт, разрабатывается в NASA Ames Research Center в рамках программы High Performance Computing and
Communication Program.

Fortran 77, HPF, С. Библиотеки
передачи сообщений: MPI,PVM,NX.

IBM RS/6000 SP, рабочие станции Sun
и SGI, Cray T3D/T3E.

Сбор
трасс .
Автоматизированное изменение исходного кода программы путем вставки специальных
вызовов. Параллельно со сбором трассы создается файл со статической
информацией.

Уровни
детализации .
Подпрограммы, вызовы процедур, процедуры различного типа (процедуры
ввода-вывода, MPI процедуры т.п.)

Формат
трасс . Формат
описан в[7]. Ориентирован на передачу сообщений.

Тип
трассировки .
События, статистика (может собираться без полной трассы).

Процессы - параллельные линии.
События изображаются точками на этих линиях. Особым образом изображаются
накладные расходы: времена ожидания, блокировка. Есть возможность
"проигрывания" трасс.

Связь линий процессов линиями,
обозначающими взаимодействия (передача сообщений, глобальные операции).

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

Поддерживается связь с исходным
кодом.

Суммарное время по замеряемым
инструкциям или типам инструкций и количество срабатываний.

Рис.3 AIMS. Результат подробного анализа
запуска.





#"_Toc72157081"> Pablo Performance Analysis Toolkit Software




·
SvPablo -
визуализатор статистической информации (X Window).


·
SDDF - библиотека
для записи трасс и набор средств для работы с SDDF файлами


·
Trace
Library and Extensions - библиотека для трассировки


·
I/O Analysis -
статистика операций ввода-вывода


·
MPI
I/O Analysis - статистика MPI I/O


·
HDF
(Hierarchical Data Format) Analysis - анализ
использования HDF операций


·
Analysis GUI -
библиотека средств для просмотра SDDF трасс


·
IO Benchmarks -
cбор трасс операций ввода-вывода


HP Performance Analysis
Tools - #"#">HP Pak - набор средств от Hewlett-Packard
для анализа поведения многопоточных программ.


· 
TAU (Tuning and Analysis Utilities) -
некоммерческий набор утилит анализа производительности программ, написанных на
языке C++ и его параллельных вариантах. Включает пакет профилировки TAU Portable Profiling.
· 
Chiron - средство для оценки производительности
многопроцессорных систем с общей памятью.


· 
GUARD - параллельный отладчик.


· 
MPP-Apprentice - средство в составе Message-Passing Toolkit от SGI.


· 
XPVM - графическое средство мониторинга PVM-программ.


Возможность различать последовательные и параллельные участки
программы позволяет при ее выполнении на многопроцессорной ЭВМ спрогнозировать
время, которое потребуется для выполнения этой программы на однопроцессорной
ЭВМ. Это время называется полезным временем . Тем самым появляется
возможность вычислить главную характеристику эффективности параллельного
выполнения - коэффициент эффективности , равный отношению полезного
времени к общему времени использования процессоров, которое в свою
очередь равно произведению времени выполнения программы на
многопроцессорной ЭВМ (максимальное значение среди времен выполнения программы
на всех используемых ею процессорах) на число используемых процессоров . Разница
между общим временем использования процессоров и полезным временем
представляет собой потерянное время . Если программист не удовлетворен
коэффициентом эффективности выполнения своей программы, то он должен
проанализировать составляющие части потерянного времени и причины их
возникновения.


Существуют следующие составляющие потерянного времени:


· 
потери из-за
недостатка параллелизма, приводящего к дублированию вычислений на нескольких
процессорах ( недостаточный параллелизм ). Дублирование вычислений
осуществляется в двух случаях. Во-первых, последовательные участки программы
выполняются всеми процессорами. Во-вторых, витки некоторых параллельных циклов
могут быть по указанию программиста полностью или частично размножены.


· 
потери из-за
выполнения межпроцессорных обменов ( коммуникации ).


· 
потери из-за
простоев тех процессоров, на которых выполнение программы завершилось раньше,
чем на остальных ( простои ).


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


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


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


Для оценки суммарных потенциальных потерь, которые могут
возникнуть из-за неодновременного запуска коллективных операций на разных
процессорах, служит специальная характеристика – синхронизация.


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


Если бы при входе в каждый параллельный цикл и при выходе из
него производилась бы синхронизация процессоров (межпроцессорный обмен), то
разбалансировка загрузки процессоров обязательно приводила бы к потерям из-за
рассинхронизации. Однако, поскольку такая синхронизация осуществляется не для
всех циклов, то разбалансировка на разных участках программы может
компенсироваться и реальные потери могут быть незначительными или вообще
отсутствовать. Для оценки возможных потерь из-за разбалансировки программисту
может выдаваться некоторая обобщенная характеристика - разбалансировка. С
целью снижения накладных расходов при вычислении этой характеристики
делается предположение, что синхронизация процессоров будет производиться только
один раз - при завершении выполнении программы. Поэтому сначала для каждого
процессора определяется его суммарная вычислительная загрузка, а затем
прогнозируется вызываемая разбалансировкой величина потерь из-за
рассинхронизации. Однако, поскольку в реальной программе синхронизация
процессоров осуществляется не только при завершении программы, а гораздо чаще,
то реальные потери будут превосходить эту величину. Реальные потери из-за
рассинхронизации будут еще более превосходить величину разбалансировки в том
случае, когда вычислительная загрузка процессоров сильно изменяется при
многократном выполнении одного и того же параллельного цикла.


Рассинхронизация может возникать не только из-за
разбалансировки, но также из-за различий во временах завершения выполнения на
разных процессорах одной и той же коллективной операции, вызванных
особенностями ее реализации на конкретной параллельной ЭВМ. Для оценки величины
такой потенциальной рассинхронизации программисту может выдаваться специальная
характеристика – разброс времен завершения коллективных операций. Как и
время разбалансировки, эта характеристика является интегральной. Она достаточно
точно отражает возможные потери из-за рассинхронизации в том случае, когда
различия времен выполнения коллективных операций не являются случайными, а
определяются, например, топологией коммуникационной сети или функциональной
специализацией процессоров (процессор ввода-вывода, процессор-исполнитель
редукционных операций, и т.п.).


Важной характеристикой, отражающей степень совмещения
межпроцессорных обменов с вычислениями, является время перекрытия
обменов вычислениями.


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




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


В системе DVM
были реализованы соответствующие средства, которые позволяют представить
выполнение программы в виде иерархии интервалов [подробнее - 6].


Выполнение всей программы целиком рассматривается как
интервал самого высокого (нулевого) уровня. Этот интервал может включать в себя
несколько интервалов следующего (первого) уровня. Такими интервалами могут быть
параллельные циклы, последовательные циклы, а также любые отмеченные
программистом последовательности операторов, выполнение которых всегда
начинается с выполнения первого оператора, а заканчивается выполнением
последнего. Все описанные выше характеристики вычисляются не только для всей
программы, но и для каждого ее интервала. При этом многократное выполнение
интервала может рассматриваться (с некоторой долей условности) как выполнение
на тех же процессорах отдельной программы, состоящей из развернутой
последовательности тех операторов интервала, которые были выполнены при
реальном прохождении параллельной программы. Фактически же, характеристики
таких многократно выполняемых интервалов накапливаются при каждом их
выполнении. При этом интервалы, входящие в состав одного и того же интервала
более высокого уровня, идентифицируются именем файла с исходным текстом
программы и номером строки в нем, соответствующим началу интервала, а также,
возможно, некоторым приписанным ему программистом целочисленным номером.


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




При разработке
параллельной программы пользователь, как правило, преследует одну из двух
возможных целей – обеспечить решение задачи в приемлемые сроки, либо создать
программу, способную эффективно решать на различных параллельных ЭВМ задачи
определенного класса.


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


Важно помнить, что: во-первых,
потерянное время (как и коэффициент эффективности распараллеливания)
вычисляется, опираясь не на реальное время выполнения программы на одном
процессоре, а на прогнозируемое время. Этот прогноз может отличаться от
реального времени и в ту, и в другую сторону.


Реальное время может быть
больше прогнозируемого из-за того, что при выполнении программы на одном
процессоре одни и те же вычисления могут осуществляться медленнее, чем при
выполнении на нескольких процессорах. Это объясняется тем, что при изменении
объема используемых при вычислениях данных меняется скорость доступа к ним
через кэш-память. Поскольку производительность современных процессоров сильно
зависит от эффективности использования кэш-памяти, то реальное время может
заметно превысить прогнозируемое.


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


В результате влияния
эффективности использования кэш-памяти и системных накладных расходов при
выполнении программы на разных конфигурациях параллельной ЭВМ будут выдаваться
различные значения полезного времени. Поэтому, если есть возможность выполнить
программу на одном процессоре (а она может требовать гораздо больше оперативной
памяти, чем имеется на одном процессоре), то желательно это сделать для
получения представления об отличиях прогнозируемых времен от реального времени.


Во-вторых, время
выполнения параллельной DVM-программы на одном процессоре может значительно
отличаться от времени ее выполнения как последовательной программы. Это может
быть следствием следующих причин:


·
Доступ к
распределенным данным в параллельной программе отличается от доступа к ним в
последовательной программе. Дополнительные накладные расходы, появляющиеся в
параллельной программе, могут увеличить время ее выполнения на 10-30 процентов.
Однако в параллельной программе может быть проведена такая оптимизация доступа
к данным, которая для некоторых программ приведет к ускорению их выполнения по
сравнению с последовательным случаем.


·
Трансформация
программы в программу на стандартных языках Фортран 77 или Си может привести к
различиям в оптимизации программ стандартными компиляторами. В результате,
параллельная программа может выполняться либо медленнее, либо быстрее.
Особенности оптимизации программ современными компиляторами существенно
(десятки и сотни процентов) определяют эффективность их выполнения.


·
Некоторые
накладные расходы на поддержку выполнения параллельной программы могут
значительно замедлить ее выполнение (например, операции запроса и освобождения
памяти в последовательной программе могут превратиться в параллельной программе
в гораздо более сложные операции создания и уничтожения распределенного
массива).


Поэтому, если есть
возможность выполнить программу как обычную последовательную программу на одном
процессоре (если это нельзя сделать на параллельной ЭВМ, то может быть это
окажется возможным на рабочей станции), то желательно это сделать.


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


Сначала следует оценить
три компоненты потерянного времени для интервала нулевого уровня (всей
программы). Наиболее вероятно, что основная доля потерянного времени приходится
на одну из первых двух компонент (недостаточный параллелизм или коммуникации).


В случае если причиной
оказался недостаточный параллелизм , необходимо уточнить, на каких
участках он обнаружен – последовательных или параллельных. В последнем случае
причина может быть очень простой – неверное задание матрицы процессоров при
запуске программы или неверное распределение данных и вычислений. Если же
недостаточный параллелизм обнаружен на последовательных участках, то причиной
этого, скорее всего, является наличие последовательного цикла, выполняющего
большой объем вычислений. Устранение этой причи
1.Введение Дипломная (ВКР). Информационное обеспечение, программирование.
Реферат: Бартенштейнская конвенция
Реферат по теме Социальный статус женщины в России
Реферат по теме Жизненный путь В. В. Вересаева
Контрольная Работа На Тему Теории Мотивации
Доклад по теме Ритуальное целомудрие
Реферат Следы Рук Человека
Курсовая работа по теме Навигационный проект перехода судна типа "Волго-Балт" по маршруту порт Анапа – порт Триполи (Ливия)
Реферат по теме Special fields of psychology
Контрольная работа: Акустический мониторинг. Скачать бесплатно и без регистрации
Эссе На Тему Традиции
Учебное пособие: Методические указания по курсовому проектированию для студентов, обучающихся по специальности 230102 и 230201
Физика 7 Класс Контрольная Работа Онлайн
Реферат по теме Вегето-сосудистая дистония
Образование Как Институт Социализации Реферат
Государственные Символы Рф Реферат
Контрольная Работа На Тему Історія Спортивних Споруд. Сучасні Спортивні Споруди Для Легкої Атлетики
Эссе На Тему Профессия Учителя Логопеда
Рефераты По Физике 8 Класс
Реферат: Развитее судоходства на реке Каме. Скачать бесплатно и без регистрации
Реферат: Организация и проведение пресс-конференции
Оглавление
Реферат: Иранская революция 1905-1907 гг
Реферат: Стратегическое управление в социальной работе

Report Page