Студенческий сайт КФУ - ex ТНУ » Учебный раздел » Учебные файлы »ПРОГРАММИРОВАНИЕ

Вычисление определенных интегралов методом прямоугольников с помощью MPI

Тип: курсовая работа
Категория: ПРОГРАММИРОВАНИЕ
Скачать
Купить
MPI - библиотека передачи сообщений на языке программирования C/C++, ее переносимость, стандартизация, эффективная работа, функциональность. Форматы фактических вызовов MPI. Метод прямоугольников для приближенного вычисления определенного интеграла.
Краткое сожержание материала:

Размещено на

Министерство образования Российской Федерации

Государственное образовательное учреждение

высшего профессионального образования

"Ижевский государственный технический университет имени М.Т. Калашникова"

Отчет по курсовой работе по дисциплине "Вычислительные системы"

На тему: "Вычисление определенных интегралов методом прямоугольников с помощью MPI"

Выполнил: магистрант гр. МО2-781-1

Иванов А.А.

Проверил: к. т. н., доцент кафедры ВТ

Петухов К.Ю.

Ижевск, 2012

Содержание

  • 1. Программирование в Message Passing Interface (MPI)
  • 2. Как использовать MPI
  • 3. Программы MPI
  • 4. Запуск MPI программ
  • 5. Метод прямоугольников
  • Литература

1. Программирование в Message Passing Interface (MPI)

MPI - это библиотека передачи сообщений, собрание функций на C/C++ (или подпрограмм в Фортране, которые, зная MPI для C/C++, легко изучить самостоятельно), облегчающих коммуникацию (обмен данными и синхронизацию задач) между процессами параллельной программы с распределенной памятью. Разделенная память - память, которая разделена на сегменты, каждый из которых может быть напрямую доступен только одному узлу из параллельных процессоров. Акроним (сокращение по первым буквам) установлен для Message Passing Interface (интерфейс передачи сообщений).

MPI является на данный момент фактическим стандартом и самой развитой переносимой библиотекой параллельного программирования с передачей сообщений.

MPI предлагает переносимость, стандартизацию, эффективную работу, функциональность.

Стандартизация

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

Переносимость

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

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

2. Как использовать MPI

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

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

Отлаживая параллельную версию удостоверьтесь сначала, что запуски вашей программы успешны на нескольких узлах. Затем постепенно увеличивайте число узлов, например, от 2 до 4, затем 8, и т.д. Таким путем вы не будете тратить впустую много машинного времени на дополнительные ошибки.

3. Программы MPI

Во-первых, рассмотрим форматы фактических вызовов, используемых MPI.

Привязка к языку C

Для C, общий формат имеет вид

rc = MPI_Xxxxx (parameter,.)

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

Программа на C должна включать файл "mpi. h". Он содержит определения для констант и функций MPI.

Функции MPI

Основная схема программы MPI подчиняется следующим общим шагам:

- Инициализация для коммуникаций

- Коммуникации распределения данных по процессам

- Выход "чистым" способом из системы передачи сообщений по завершении коммуникаций

MPI имеет свыше 125 функций. Тем не менее, начинающий программист обычно может иметь дело только с шестью функциями, которые иллюстрируют нашу простейшую программу и обсуждаются ниже:

- Инициализация для коммуникаций

MPI_Init инициализирует окружение MPI

MPI_Comm_size возвращает число процессов

MPI_Comm_rank возвращает номер текущего процесса (ранг = номер по-порядку)

- Коммуникации распределения данных по процессами

MPI_Send отправляет сообщение

MPI_Recv получает сообщение

- Выход из системы передачи сообщений

MPI_Finalize

Сообщения MPI

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

Сообщение = данные (3 параметра) + оболочка (3 параметра)

старт буфера, число, тип данных

цель, тег, коммуникатор

ДАННЫЕ

ОБОЛОЧКА

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

Данные

Буфер в вызовах MPI есть место в компьютерной памяти, из которого сообщения должны быть посланы или где они накапливаются. В этом смысле буфер - это просто память, которую компилятор выделил для переменной (часто массива) в вашей программе. Следующие три параметра вызова MPI необходимы, чтобы определить буфер:

Старт буфера

Адрес, где данные начинаются. Например, начало массива в вашей программе.

Число

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

Тип данных

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

Другие файлы:

Численные методы
Понятие определенного интеграла, его геометрический смысл. Численные методы вычисления определенных интегралов. Формулы прямоугольников и трапеций. Пр...

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

Разработка в Visual Basic приложения "Исследование методов вычисления определённых интегралов"
Рассмотрение методов прямоугольников и трапеций как способов вычисления определенных интегралов. Характеристика графика зависимости погрешности от чис...

Сущность метода Монте-Карло и моделирование случайных величин
Исследование способа вычисления кратных интегралов методом Монте-Карло. Общая схема метода Монте-Карло, вычисление определенных и кратных интегралов....

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