Сравнительный анализ эффективности инструментария MPI и NET для задачи суммирования
Рассмотрение технологии создания программ для параллельных компьютеров с использованием стандарта MPI и определение их эффективности. Изучение проблемы распараллеливания, способов взаимодействия параллельных процессов и этапов работы анализатора.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 25.12.2013 |
Размер файла | 139,4 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Общая схема выполнения операции сбора и обработки данных на одном процессоре показана на рис. 4.2. Элементы получаемого сообщения на процессе root представляют собой результаты обработки соответствующих элементов передаваемых процессами сообщений, т.е.
njxуijnij<??=?=0,10,
где ? есть операция, задаваемая при вызове функции MPI_Reduce (для пояснения на рис. 4.3. показан пример выполнения операции редукции данных).
root y0 y1 y2 * * * yn-1 1 0 p-1 * * * * * * процессы а) после завершения операции i10p-1 * * * * * * процессы б) до начала операции ******x00 x01 * * * x0,n-1 x02 x10 x11 * * * x1,n-1 x12 xi0 xi1 * * * xi,n-1 xi2 xn-1,0 xn-1,1 * * * xn-1,n-1
Следует отметить:
1. Функция MPI_Reduce определяет коллективную операцию и, тем самым, вызов функции должен быть выполнен всеми процессами указываемого коммуникатора, все вызовы функции должны содержать одинаковые значения параметров count, type, op, root, comm,
2. Передача сообщений должна быть выполнена всеми процессами, результат операции будет получен только процессом с рангом root,
3. Выполнение операции редукции осуществляется над отдельными элементами передаваемых сообщений. Так, например, если сообщения содержат по два элемента данных и выполняется операция суммирования MPI_SUM, то результат также будет состоять из двух значений, первое из которых будет содержать сумму первых элементов всех отправленных сообщений, а второе значение будет равно сумме вторых элементов сообщений соответственно.
root 1 0 процессы а) после завершения операции 210процессы б) до начала операции -1 3 2 -2 2 -1 3 1 4 -2 1 -1 5 0 6 -2
Применим полученные знания для переработки ранее рассмотренной программы суммирования - как можно увидеть, весть программный код, выделенный двойной рамкой, может быть теперь заменен на вызов одной лишь функции MPI_Reduce:
// сборка частичных сумм на процессе с рангом 0
MPI_Reduce(&ProcSum,&TotalSum, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
Синхронизация вычислений
В ряде ситуаций независимо выполняемые в процессах вычисления необходимо синхронизировать. Так, например, для измерения времени начала работы параллельной программы необходимо, чтобы для всех процессов одновременно были завершены все подготовительные действия, перед окончанием работы программы все процессы должны завершить свои вычисления и т.п.
Синхронизация процессов, т.е. одновременное достижение процессами тех или иных точек процесса вычислений, обеспечивается при помощи функции MPI:
int MPI_Barrier(MPI_Comm comm);
Функция MPI_Barrier определяет коллективную операции и, тем самым, при использовании должна вызываться всеми процессами используемого коммуникатора. При вызове функции MPI_Barrier выполнение процесса блокируется, продолжение вычислений процесса произойдет только после вызова функции MPI_Barrier всеми процессами коммуникатора.
Заключение
В мире функционального программирования наиболее распространенной технологией создания программ для параллельных компьютеров такого типа является MPI. Основным способом взаимодействия параллельных процессов в данном случае выступает передача сообщений от одного узла другому. Стандарт MPI фиксирует интерфейс, который должен соблюдаться как системой программирования на каждой вычислительной платформе, так и пользователем при создании своих программ.
MPI поддерживает работу с языками Fortran и C. MPI-программа -- это множество параллельных взаимодействующих процессов. Все процессы порождаются один раз, образуя параллельную часть программы. Каждый процесс работает в своем адресном пространстве, никаких общих переменных или данных в MPI нет. Основным способом взаимодействия между процессами является явная посылка сообщений от одного процесса другому. [4]
Несмотря на то, что MPI-программы показывают высокий уровень производительности, сама технология имеет ряд недостатков:
низкий уровень (программирование на MPI часто сравнивают с программированием на ассемблере), необходимость детального управления распределением массивов и витков циклов между процессами, а также обменом сообщениями между процессами - все это приводит к высокой трудоемкости разработки программ;
необходимость избыточной спецификации типов данных в передаваемых сообщениях, а так же наличие жестких ограничений на типы передаваемых данных;
сложность написания программ, способных выполняться при произвольных размерах массивов и произвольном количестве процессов - делает практически невозможным повторное использование имеющихся MPI-программ;
отсутствие поддержки объектно-ориентированного подхода.
Возможно, некоторые из перечисленных недостатков и послужили причиной отсутствия поддержки интерфейса MPI в такой современной платформе разработки, как .NET Framework, что может существенно ограничивать её применимость для решения больших вычислительных задач.
Тем не менее, начиная с третьей версии, .NET Framework включает в себя Windows Communication Foundation (WCF) -- унифицированную технологию создания всех видов распределенных приложений на платформе Microsoft [5]. К сожалению, данная технология зачастую понимается только как каркас для работы с Web-службами на основе XML, что напрасно мешает рассматривать WCF как эффективное средство для организации параллельных вычислений.
Размещено на Allbest.ru
...Подобные документы
Основы методологии мониторов и устройства жесткого диска. Планирование работы дисков с использованием мониторов. Теоретические основы параллельного программирования. Микропроцессорная реализация параллельных процессов на основе технологии мониторов.
дипломная работа [3,5 M], добавлен 08.07.2012Области применения быстрых вычислений. Проблемы эффективности последовательных и параллельных программ. Отображение циклов с условными операторами на асинхронные архитектуры. Рассмотрение исследовательских университетских распараллеливающих систем.
презентация [833,3 K], добавлен 07.08.2015Пакетный метод как основной способ выполнения коммуникационных операций, его содержание и предъявляемые требования. Оценка трудоемкости операции передачи данных между двумя узлами кластера. Этапы разработки параллельных алгоритмов (распараллеливания).
презентация [318,1 K], добавлен 10.02.2014Особенности построения программ реального времени на основе параллельных процессов. Реализация простой программы, которая выводит на экран текст приветствия и завершается. Создание массива из трехсот параллельных процессов, получающих уникальный индекс.
статья [19,8 K], добавлен 08.12.2016Обзор существующих моделей параллельного программирования, основные средства отладки эффективности MPI-программ, общие проблемы всех средств трассировки. Создание экспериментальной системы отладки эффективности MPI-программ, этапы работы анализатора.
дипломная работа [767,2 K], добавлен 14.10.2010Понятие и сущность параллельного программирования. Задачи и схема работы динамического анализатора. Оценка достоинств и недостатков динамического анализа, оценка возможности его применения для поиска зависимостей в программах, требующих распараллеливания.
курсовая работа [73,7 K], добавлен 15.10.2010Анализ работы параллельных вычислений на видеокарте GeForce GT 540M с использованием текстурной памяти. Рассмотрение специфических особенностей по адресации текстурной памяти. Изучение основ чтения и записи данных. Описание примеров данных программ.
лабораторная работа [3,1 M], добавлен 04.12.2014Знакомство с историей развития многопроцессорных комплексов и параллельных вычислений. Персональные компьютеры как распространенные однопроцессорные системы на платформе Intel или AMD, работающие под управлением однопользовательских операционных систем.
презентация [1,1 M], добавлен 22.02.2016Основные модели вычислений. Оценки эффективности параллельных алгоритмов, их коммуникационная трудоемкость. Последовательный алгоритм, каскадная схема и способы ее улучшения. Модифицированная каскадная схема. Передача данных, классификация операций.
презентация [1,3 M], добавлен 10.02.2014Классификация параллельных вычислительных систем. Существенные понятия и компоненты параллельных компьютеров, их компоненты. Особенности классификаций Хендера, Хокни, Флинна, Шора. Системы с разделяемой и локальной памятью. Способы разделения памяти.
курсовая работа [331,1 K], добавлен 18.07.2012Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.
курсовая работа [1,1 M], добавлен 15.12.2010Изучение методов создания диалоговой оболочки отладчика MPI-программ, который войдет в состав системы автоматизации разработки параллельных программ (DVM-системы). Основные подходы к параллельному программированию и созданию пользовательского интерфейса.
курсовая работа [1,5 M], добавлен 14.10.2010Понятие вычислительных систем, их классификация по различным признакам. Модели параллельных вычислений PGAS и APGAS. Разработка программного продукта для анализа информационных обменов в параллельных программах на языке IBM X10. Расчёт его себестоимости.
дипломная работа [1,6 M], добавлен 10.06.2013Теоретические основы программ для работы с электронными таблицами. Сравнительный анализ программ MS Office Excel и Open Office.org Calc: интерфейс, возможности, горячие клавиши и скорость работы. Оценка эффективности работы программ с числовыми данными.
курсовая работа [761,6 K], добавлен 27.07.2010Биография Ады Августы Байрон. Перевод очерка итальянского военного инженера Луи Менабреа. Составление трех первых в мире вычислительных программ. Ada - универсальный язык программирования, включающий в себя средства для создания параллельных программ.
реферат [43,3 K], добавлен 04.05.2009Базовые основы разработки программного обеспечения: его классический жизненный цикл, макетирование, стратегии конструирования, модели качества процессов разработки. Применение параллельных алгоритмов и CASE-системы, критерии оценки их эффективности.
курсовая работа [179,5 K], добавлен 07.04.2015Особенности создания параллельных вычислительных систем. Алгоритм построения нитей для графа и уплотнения загрузки процессоров. Построение матрицы следования. Подсчет времени начала и конца работы нити. Логические функции взаимодействия между дугами.
курсовая работа [1012,4 K], добавлен 11.02.2016Показатели эффективности параллельного алгоритма: ускорение, эффективность использования процессоров, стоимость вычислений. Оценка максимально достижимого параллелизма. Закон Амдала, Закон Густафсона. Анализ масштабируемости параллельного алгоритма.
презентация [493,0 K], добавлен 11.10.2014Технология разработки параллельных программ для многопроцессорных вычислительных систем с общей памятью. Синтаксис, семантика и структура модели OpenMP: директивы, процедуры и переменные окружения. Распараллеливание по данным и операциям, синхронизация.
презентация [1,2 M], добавлен 10.02.2014Модели параллельного программирования; отладка параллельных программ. Реализация экспериментальной версии системы сравнительной отладки Fortran-OpenMP программ: получение, сбор и запись трассы, инструментарий программ, используемый формат файлов трассы.
дипломная работа [92,8 K], добавлен 17.10.2013