Автор работы: Пользователь скрыл имя, 13 Декабря 2013 в 13:33, лабораторная работа
Цель работы: ознакомление с архитектурой, принципами кластерной вычислительной системы и практикой удаленного доступа к вычислительным ресурсам кластера.
Федеральное агентство по образованию
Московский государственный открытый университет
Чебоксарский политехнический институт
Кафедра
Информационных технологий и программирования
(шифр специальности)
Лабораторная работа №1
по дисциплине: параллельное программирование
Дата проверки Выполнили студенты
Сорокин Д.В.
Результат проверки Учебный шифр
609264
609244
Курс 4
Проверил Малов А.А.
Замечания
Чебоксары, 2012 г.
Лабораторная работа №1
Цель работы: ознакомление с архитектурой, принципами кластерной вычислительной системы и практикой удаленного доступа к вычислительным ресурсам кластера.
Выполнение работы:
Листинг программы:
#include "mpi.h"
#include <stdio.h>
#include <math.h>
double f(double);
double f(double a)
{
return(4.0/(1.0+a*a));
}
int main(int argc, char *argv[])
{
int n,myid, numprocs, i;
double PI25DT=3.
double mypi,pi,h,sum,x;
double startwtime=0.0,
endwtime;
int namelen;
char processor_name[MPI_MAX_
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD,&
MPI_Comm_rank(MPI_COMM_WORLD,&
MPI_Get_processor_name(
fprintf(stdout, "Process %d of %d is on %s\n",
myid, numprocs, processor_name);
fflush(stdout);
n=10000;
if(myid==0)
startwtime=MPI_Wtime();
MPI_Bcast(&n, 1,MPI_INT,0,MPI_COMM_WORLD);
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_
if (myid==0)
{
endwtime=MPI_Wtime();
printf("pi is approximately %.16f, error is %.16f\n",
pi, fabs(pi-PI25DT));
printf("wall clock time=%f\n",
endwtime-startwtime);
}
MPI_Finalize();
return 0;
}
Результат программы:
Контрольные вопросы:
1. Чем отличаются архитектуры
MPP и SMP? Каковы их преимущества и не
достатки? Что такое NUMA-архитектура и каковы
ее достоинства и недостатки?
SMP (symmetric multiprocessing) – симметричная
многопроцессорная архитектура.
MPP (massive parallel processing) – массивно-параллельная архитектура. Главная особенность такой архитектуры состоит в том, что память физически разделена.
Сравнительный анализ данных архитектур рассмотрен в таблице 1.
Таблица 1
Общая память |
Использование памяти |
Стоимостные характеристики |
Масштабируемость | |
MPP |
- |
- |
- |
+ |
SMP |
+ |
+ |
+ |
- |
Отсутствие общей памяти в MPP архитектуре значительно снижает скорость межпроцессорного обмена, в отличие от SMP архитектуры, в которой общая память присутствует.
Каждый процессор в MPP архитектуре может использовать только ограниченный объем банка памяти, в то время, как процессор в SMP архитектуре охватывает полный объем.
Вследствие недостатков MPP архитектура трудно реализуема, что приводит к значительным затратам, реализация SMP архитектуры, напротив, больших затрат не требует.
Главным преимуществом систем с раздельной памятью является хорошая масштабируемость: в отличие от SMP-систем, в машинах с раздельной памятью каждый процессор имеет доступ только к своей локальной памяти, в связи с чем не возникает необходимости в потактовой синхронизации процессоров.
Основным параметром классификации параллельных компьютеров является наличие общей (SMP) или распределенной памяти (MPP). Нечто среднее между SMP и MPP представляют собой NUMA-архитектуры, где память физически распределена, но логически общедоступна. Кластерные системы являются более дешевым вариантом MPP. При поддержке команд обработки векторных данных говорят о векторно-конвейерных процессорах, которые, в свою очередь могут объединяться в PVP-системы с использованием общей или распределенной памяти. Все большую популярность приобретают идеи комбинирования различных архитектур в одной системе и построения неоднородных систем.
2. Какие категории задач пользователей известны? Что такое “режим планирования” очередей?
Все задачи пользователей делятся на три категории – отладочные, пакетные и фоновые.
Отладочные задачи – это короткие по времени задачи, которые запускаются исключительно в целях отладки.
Пакетные задачи – это средние по времени задачи, которые производят реальные расчеты и выполняются, не прерываясь.
Фоновые задачи – задачи с большим временем счета, которые могут прерываться системой. Для фоновой задачи пользователь должен явно указать квант – минимальное время счета фоновой задачи, в течение которого задачу прерывать нельзя.
Планирование очередей в каждый момент времени производится в соответствии с параметрами текущего режима планирования. Режим планирования определяется следующими параметрами:
- дата и время включения режима;
- максимальное время, отведенное для отладочных задач;
- максимальное время,
- число процессоров, которые
«резервируются» для
- шкала приоритетов
3. Каким образом
реализуется ограничение
При истечении заказанного времени счета sleeper завершается (в случае завершения задачи ‘естественным’ путем менеджер завершает sleeper и выполняет вышеперечисленные действия). В случае истечения заданного времени выполнения задания менеджер, получив сигнал о завершении sleeper, завершает процесс и также выполняет перечисленные действия.
Запуск на исполнение MPI-программы производится с помощью команды:
mpirun [параметры_mpirun...] <имя_программы> [параметры_программы...] [-host <host>]
-maxtime <максимальное_время> - максимальное время счета. От этого времени зависит положение задачи в очереди. После истечения этого времени задача принудительно заканчивается;
4. Что такое “сетевой интерфейс”? Какие параметры определяют его?
В компьютерных сетях сетевым интерфейсом называют:
- точку соединения между компьют
- сетевую карту компьютера (наиболее частое использование термина);
- точку соединения двух сетей между собой.
Сетевой интерфейс формирует передачи перед посылкой через коммуникационную сеть другим вычислительным узлам или узлам ввода/вывода, а также принимает приходящие сообщения и распределяет их между двумя процессорными элементами узла.
Параметры определяющие сетевой интерфейс:
- используемая технология среды передачи данных;
- скорость передачи;
- среда передачи;
- протокол соединения.
5. Какие сети
необходимы при создании
них могут являться виртуальными?
Какие из них критичны для времени
выполнения параллельных
программ?
Важно отметить наличие двух (логически разделенных) компьютерных сетей – сеть управления (служит для управления ВУ со стороны управляющей ЭВМ посредством инструкций типа rsh, данная сеть особенно нагружена в период старта и окончания задания) и сеть обмена данными (она же коммуникационная, служит для обмена данными между ВУ посредством MPI, нагружена в период выполнения задания). Для реализации особо мощных МВС применяют третью сеть для поддержки NFS (Network File System); при двух сетях NFS обычно использует сеть управления.
На рисунке 1 показана схема сети простого вычислительного кластера. В такой топологии Ethernet-соединения используются для административных целей, а соединения типа InfiniBand предназначены для вычислительного трафика. Если у вас нет оборудования InfiniBand, то просто проигнорируйте нижнюю часть схемы. Все-таки Ethernet-кабель может нести как административную, так и вычислительную нагрузку.
Рисунок 1. Топология сети вычислительного
кластера
Данные Linux-кластеры могут быть реализованы на основе сети Windows-ПЭВМ, которые критичны для времени выполнения параллельных программ.
Под виртуализацией сети понимается использование единой физической сети.
6. В чем
отличия администрирования
обычной последовательной
ЭВМ?
Основное отличие администрирования вычислительного
кластера от
обычной последовательной ЭВМ в отсутствие
возможности стандартных способов
администрирования: клавиатура, мышь и
т.д.
Федеральное агентство по образованию
Московский государственный открытый университет
Чебоксарский политехнический институт
Кафедра
Информационных технологий и программирования
(шифр специальности)
Лабораторная работа №2
по дисциплине: параллельное программирование
Дата проверки Выполнили студенты
Сорокин Д.В.
Результат проверки Учебный шифр
609264 609244
Курс 4
Проверил Малов А.А.
Замечания
Чебоксары, 2012 г.
Лабораторная работа №2
Цель работы: приобретение практических знаний и навыков в компиляции и запуске простейших MPI-программ, доказательство необходимости синхронизации ветвей параллельной программы.
Выполнение работы:
Листинг программы 1 части:
// source code of EXAMP_01.C program
#include "mpi.h"
#include <stdio.h>
#include <sys/timeb.h>
// for ftime function
int main(int argc, char **argv)
{
int CURR_PROC, ALL_PROC, NAME_LEN;
char PROC_NAME[MPI_MAX_PROCESSOR_
// time contain structure
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &CURR_PROC); /* current process */
MPI_Comm_size (MPI_COMM_WORLD, &ALL_PROC); /* all process */
// get processor name (really computer name)
MPI_Get_processor_name(PROC_
// get current time point
// t.time is time in sec since January 1,1970
// t.millitm is part of time in msec
// ATTENSION ! ftime may by used only after synchronization all processors time
// output to STDIN
printf("I am process %d from %d and my name is %s (time: %.3f sec)\r\n",CURR_PROC, ALL_PROC, PROC_NAME, (t.time+1e-3*t.millitm));
MPI_Finalize();
return 0;
}
// end of EXAMPLE_01 program
Результат проргаммы:
Листинг программы 2 части:
// source code of EXAMP_02.C program
#include "mpi.h"
#include <stdio.h>
#include <string.h>
int main (int argc, char **argv)
{
char message[20];
int i=0, all_rank, my_rank;
MPI_Status status;
MPI_Init (&argc, &argv);
MPI_Comm_rank (MPI_COMM_WORLD, &my_rank); // get number current process
MPI_Comm_size (MPI_COMM_WORLD, &all_rank);
// all process
if (my_rank==0) /* code for process zero */
{
strcpy (message, "Hello, there!\0");
for(i=1; i<all_rank; i++)
MPI_Send(message, strlen(message), MPI_CHAR, i, 999, MPI_COMM_WORLD);
}
else /* code for other processes */
{
//MPI_Recv(message, 20, MPI_CHAR, 0, 999, MPI_COMM_WORLD, &status);
MPI_Recv(message, 20, MPI_CHAR, MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD,&status);
printf ("I am %d process; received: %s\n", my_rank, message);
}
MPI_Finalize();
return 0;
}
// end of EXAMP_02 program
Результат программы:
Контрольные вопросы:
1. Из каких стадий состоит жизненный цикл процессов при параллельном программировании?
2. Почему нельзя точно
определить момент старта
При использовании компактно
3. Что такое коммуникатор? Что такое пользовательские топологии и какие (кроме стандартной с линейной нумерацией) определены MPI?
В MPI продумано объединение ветвей в коллективы (это помогает надежнее отличать сообщения друг от друга). Достигается это введением в функции MPI параметра типа ‘коммуникатор’, который можно рассматривать как дескриптор (номер) коллектива (он ограничивает область действия данной функции соответствующим коллективом). Коммуникатор коллектива, который включает в себя все ветви приложения, создается автоматически (при выполнении функции MPI_INIT) и называется MPI_COMM_WORLD; в дальнейшем имеется возможность (функция MPI_Comm_split) создавать новые коммуникаторы. Имеют место включающий только самого себя как процесс коммуникатор MPI_COMM_SELF и (заведомо неверный) коммуникатор MPI_COMM_NULL; в случае возможности (динамического) порождения новых процессов ситуация сложнее.
Информация о работе Лабораторная работа №1 по дисциплине "Параллельное программирование"