- •Методические указания к лабораторной работе № 1
- •Системное и прикладное программное обеспечение
- •Сообщение видеоадаптера
- •Сообщения post
- •Сообщение об ошибке post
- •Завершающий экран сообщений bios
- •Методические указания к лабораторной работе № 2
- •Системное и прикладное программное обеспечение
- •1 2 Сентября 11
- •1. Цель и задачи работы
- •2. Общие положения (теоретические сведения)
- •Методические указания к лабораторной работе № 3
- •Системное и прикладное программное обеспечение
- •1 2 Сентября 11
- •1. Цель и задачи работы
- •2. Общие положения (теоретические сведения)
- •Три простейшие модели организации памяти при наличии операционной системы и одного пользовательского процесса
- •Фиксированные разделы памяти с отдельными входными очередями для каждого раздела (а); фиксированные разделы памяти с одной очередью на вход (б)
- •Распределение памяти изменяется по мере того, как процессы поступают в память и покидают ее (заштрихованы неиспользуемые области памяти)
- •Методические указания к лабораторной работе № 4
- •Системное и прикладное программное обеспечение
- •1 2 Сентября 11
- •1. Цель и задачи работы
- •2. Общие положения (теоретические сведения)
- •Методические указания к лабораторной работе № 5
- •Системное и прикладное программное обеспечение
- •1 2 Сентября 11
- •1. Цель и задачи работы
- •2. Общие положения (теоретические сведения)
- •Три типа файлов: последовательность байтов (а); последовательность записей (б); дерево (в)
- •Однокаталоговая система, содержащая четыре файла
- •Двухуровневая каталоговая система
- •Иерархическая каталоговая система
- •Возможная структура файловой системы
- •Методические указания к лабораторной работе № 6
- •Системное и прикладное программное обеспечение
- •1 2 Сентября 11
- •1. Цель и задачи работы
- •2. Общие положения (теоретические сведения)
- •Методические указания к лабораторной работе № 7
- •Системное и прикладное программное обеспечение
- •1 2 Сентября 11
- •1. Цель и задачи работы
- •2. Общие положения (теоретические сведения)
- •Методические указания к лабораторной работе № 8
- •Системное и прикладное программное обеспечение
- •1 2 Сентября 11
- •1. Цель и задачи работы
- •2. Общие положения (теоретические сведения)
- •Методические указания к лабораторной работе № 9
- •Системное и прикладное программное обеспечение
- •1 2 Сентября 11
- •1. Цель и задачи работы
- •2. Общие положения (теоретические сведения)
Методические указания к лабораторной работе № 6
"Разработка программ MPI, иллюстрирующих использование многопроцессорных вычислений в одной программе"
по дисциплине
Системное и прикладное программное обеспечение
Направление подготовки: 010400 «Прикладная математика и информатика»
Профиль подготовки: 010400 «Прикладная математика и информатика»
Квалификация выпускника: бакалавр прикладной математики и информатики
Форма обучения: очная
Тула 2011 г.
М1 2 Сентября 11
етодические указания к лабораторной
работе составлены доц. С.А. Скобельцыным
и обсуждены на заседании кафедры
прикладной математики и информатики
механико-математического факультета
протокол №___ от "___"____________ 20___ г.
Зав. кафедрой ________________ В.И. Иванов
Методические указания к лабораторной работе пересмотрены и утверждены на заседании кафедры прикладной математики и информатики механико-математического факультета
протокол №___ от "___"____________ 20___ г.
Зав. кафедрой ________________ В.И. Иванов
1. Цель и задачи работы
Освоить средства и приемы разработки программ MPI, иллюстрирующих использование многопроцессорных вычислений в одной программе
2. Общие положения (теоретические сведения)
Message Passing Interface (MPI, интерфейс передачи сообщений) - программный интерфейс (API) для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. Разработан Уильямом Гроуппом, Эвином Ласком (англ.) и другими.
MPI является наиболее распространённым стандартом интерфейса обмена данными в параллельном программировании, существуют его реализации для большого числа компьютерных платформ. Используется при разработке программ для кластеров и суперкомпьютеров. Основным средством коммуникации между процессами в MPI является передача сообщений друг другу. Стандартизацией MPI занимается MPI Forum. В стандарте MPI описан интерфейс передачи сообщений, который должен поддерживаться как на платформе, так и в приложениях пользователя. В настоящее время существует большое количество бесплатных и коммерческих реализаций MPI. Существуют реализации для языков Фортран 77/90, Си и Си++.
В первую очередь MPI ориентирован на системы с распределенной памятью, то есть когда затраты на передачу данных велики, в то время как OpenMP ориентирован на системы с общей памятью (многоядерные с общим кэшем). Обе технологии могут использоваться совместно, дабы оптимально использовать в кластере многоядерные системы.
Стандарты MPI
Первая версия MPI разрабатывалась в 1993-1994 году, и MPI 1 вышла в 1994.
Большинство современных реализаций MPI поддерживают версию 1.1. Стандарт MPI версии 2.0 поддерживается большинством современных реализаций, однако некоторые функции могут быть реализованы не до конца.
В MPI 1.1 (опубликован 12 июня 1995 года, первая реализация появилась в 2002 году) поддерживаются следующие функции:
передача и получение сообщений между отдельными процессами;
коллективные взаимодействия процессов;
взаимодействия в группах процессов;
реализация топологий процессов;
В MPI 2.0 (опубликован 18 июля 1997 года) дополнительно поддерживаются следующие функции:
динамическое порождение процессов и управление процессами;
односторонние коммуникации (Get/Put);
параллельный ввод и вывод;
расширенные коллективные операции (процессы могут выполнять коллективные операции не только внутри одного коммуникатора, но и в рамках нескольких коммуникаторов).
Версия MPI 2.1 вышла в начале сентября 2008 года.
Функционирование интерфейса
Базовым механизмом связи между MPI процессами является передача и приём сообщений. Сообщение несёт в себе передаваемые данные и информацию, позволяющую принимающей стороне осуществлять их выборочный приём:
отправитель - ранг (номер в группе) отправителя сообщения;
получатель - ранг получателя;
признак - может использоваться для разделения различных видов сообщений;
коммуникатор - код группы процессов.
Операции приёма и передачи могут быть блокирующимися и не блокирующимися. Для не блокирующихся операций определены функции проверки готовности и ожидания выполнения операции.
Другим способом связи является удалённый доступ к памяти (RMA), позволяющий читать и изменять область памяти удалённого процесса. Локальный процесс может переносить область памяти удалённого процесса (внутри указанного процессами окна) в свою память и обратно, а также комбинировать данные, передаваемые в удалённый процесс с имеющимися в его памяти данными (например, путём суммирования). Все операции удалённого доступа к памяти не блокирующиеся, однако, до и после их выполнения необходимо вызывать блокирующиеся функции синхронизации.
Пример программы
Ниже приведён пример программы вычисления числа Pi на языке C с использованием MPI:
// Подключение необходимых заголовков
#include <stdio.h>
#include <math.h>
// Подключение заголовочного файла MPI
#include "mpi.h"
// Функция для промежуточных вычислений
double f(double a)
{
return (4.0 / (1.0+ a*a));
}
// Главная функция программы
int main(int argc, char **argv)
{
// Объявление переменных
int done = 0, n, myid, numprocs, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
double startwtime = 0.0, endwtime;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
// Инициализация подсистемы MPI
MPI_Init(&argc, &argv);
// Получить размер коммуникатора MPI_COMM_WORLD
// (общее число процессов в рамках задачи)
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
// Получить номер текущего процесса в рамках
// коммуникатора MPI_COMM_WORLD
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
// Вывод номера потока в общем пуле
fprintf(stdout, "Process %d of %d is on %s\n", myid,numprocs,processor_name);
fflush(stdout);
while(!done)
{
// количество интервалов
if(myid==0)
{
fprintf(stdout, "Enter the number of intervals: (0 quits) ");
fflush(stdout);
if(scanf("%d",&n) != 1)
{
fprintf(stdout, "No number entered; quitting\n");
n = 0;
}
startwtime = MPI_Wtime();
}
// Рассылка количества интервалов всем процессам (в том числе и себе)
MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
if(n==0)
done = 1;
else
{
h = 1.0 / (double) n;
sum = 0.0;
// Обсчитывание точки, закрепленной за процессом
for(i = myid + 1 ; (i <= n) ; i += numprocs)
{
x = h * ((double)i - 0.5);
sum += f(x);
}
mypi = h * sum;
// Сброс результатов со всех процессов и сложение
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);
// Если это главный процесс, вывод полученного результата
if(myid==0)
{
printf("PI is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT));
endwtime = MPI_Wtime();
printf("wall clock time = %f\n", endwtime-startwtime);
fflush(stdout);
}
}
}
// Освобождение подсистемы MPI
MPI_Finalize();
return 0;
}
3. Объекты исследования, оборудование, материалы и наглядные пособия
Объект исследования – технология MPI – наиболее распространённый стандарт интерфейса обмена данными в параллельном программировании.
В качестве оборудования используются персональные компьютеры учебных классов кафедры ПМиИ (ауд. 12-207, 12-209, 12-211).
В качестве операционной системы используется операционная система MS Windows XP SP2.
Среда разработки/выполнения: консольный и графические интерфейсы операционной системы, среда разработки "Microsoft Visual Studio 8", текстовый редактор.
Средства ввода: клавиатура или текстовый файл.
Средства ввода: экран ПК или текстовый файл.
4. Задание на работу (рабочее задание)
Разработать программу с использованием технологии MPI на языке программирования C++ или Fortran, иллюстрирующую использование многопроцессорных вычислений в одной программе.
5. Ход работы (порядок выполнения работы)
В среде операционной системы Windows XP / Mandrake Linux с использованием консольного (графического) интерфейса операционной системы разработать и проверить программу с использованием технологии MPI на языке программирования C++ или Fortran.
Для всех задач и используемых нетривиальных процедур/функций разработать контрольные программы/примеры, результаты выполнения которых очевидны или легко проверяются.
Сохранить результаты работы (протоколы решения основных и контрольных задач) в текстовом файле или в документе Word.
Составить отчет о выполнении работы.
6. Содержание отчета
Отчет должен содержать:
Титульный лист;
Формулировку цели и задач работы;
Индивидуальное задание на работу
Описание использованных программных и аппаратных средств для выполнения работы;
Описание хода работы с указанием этапов и пояснениями используемых решений (методов, программ, процедур, библиотек);
Список использованных источников.
7. Список библиографических источников
Таненбаум, Э. Современные Системное и прикладное программное обеспечение / Э. Таненбаум.– М., СПб.: Питер, 2006.– 1038 с.
Гордеев, А.В. Системное и прикладное программное обеспечение / А.В. Гордеев.– М., СПб.: Питер, 2005.– 416 с.
Пфаффенбергер, Б. Linux: спец. справочник / Б. Пфаффенбергер.– СПб.: Питер, 2001.– 576 с.
Чекмарев, А.Н. Microsoft Windows Server 2003: наиболее полное руководство / А.Н. Чекмарев, А.В. Вишневский, О.И. Кокорева.– СПб.: БХВ-Петербург, 2007.– 1120 с.
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Тульский государственный университет»
Кафедра «Прикладной математики и информатики»