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


перейти к полному списку дипломных проектов

Ссылка на скачивания файла в формате .doc находится в конце странички

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

Стандартизацией MPI занимается MPI Forum. В стандарте MPI описан интерфейс передачи сообщений, который должен поддерживаться как на платформе, так и в приложениях пользователя. В настоящее время существует большое количество бесплатных и коммерческих реализаций MPI. Существуют реализации для языков Фортран 77/90, Си и Си++.

Стандарты MPI

Большинство современных реализаций MPI поддерживают версию 1.1 Стандарт MPI версии 2.0 поддерживается большинством современных реализаций, однако некоторые функции могут быть реализованы не до конца.

В MPI 1.1 (опубликован 12 июня 1995 года) поддерживаются следующие функции:

передача и получение сообщений между отдельными процессами;

коллективные взаимодействия процессов;

взаимодействия в группах процессов;

реализация топологий процессов;

В MPI 2.0 (опубликован 18 июля 1997 года) дополнительно поддерживаются следующие функции:

динамическое порождение процессов и управление процессами;

односторонние коммуникации (Get/Put);

параллельный ввод и вывод;

расширенные коллективные операции (процессы могут выполнять коллективные операции не только внутри одного коммуникатора, но и в рамках нескольких коммуникаторов).

Пример программы

Ниже приведён пример программы на C с использованием MPI:

// Подключение необходимых заголовков

include

include

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_size (MPI_COMM_WORLD,numprocs);

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;

}

Реализации MPI

MPICH - самая распространённая бесплатная реализация, работает на UNIX-системах и Windows NT;

WMPI - бесплатная реализация MPI для Windows;

LAM/MPI - ещё одна бесплатная реализация MPI;

MPI/PRO for Windows NT - коммерческая реализация для Windows NT;

Intel MPI - коммерческая реализация для Windows / GNU/Linux;

HP-MPI - коммерческая реализация от HP;

SGI MPT - платная библиотека MPI от SGI;

Mvapich - бесплатная реализация MPI для Infiniband;

Open MPI - бесплатная реализация MPI, наследник LAM/MPI;

Oracle HPC ClusterTools - бесплатная реализация для Solaris SPARC/x86 и Linux на основе Open MPI.

3.2 MPICH

MPICH ("MPI Chameleon") - это одна из самых первых разработанных библиотек MPI. На ее базе было создано большое количество других библиотек как OpenSource, так и коммерческих. В настоящее время существует две ветви исходных кодов: MPICH1и MPICH2. Разработка ветви MPICH1 заморожена. Ветвь MPICH2 активно разрабатывается в Арагонской лаборатории, с участием IBM, Cray, SiCortex, Microsoft, Intel, NetEffect, Qlogic, Myricom, Ohio state university, UBC.

MPICH2 - легко портируемая быстрая реализация стандарта MPI. Отличительные особенности:

Поддерживает различные вычислительные и коммуникационные платформы, включая общедоступные кластеры (настольные системы, системы с общей памятью, многоядерные архитектуры), высокоскоростные сети (Ethernet 10 ГБит/с, InfiniBand, Myrinet, Quadrics) и эксклюзивные вычислительные системы (Blue Gene, Cray, SiCortex).

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

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

скачать бесплатно АЛГОРИТМЫ ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ ПРИ ИССЛЕДОВАНИИ УСТОЙЧИВОСТИ ПОДКРЕПЛЕННЫХ ПОЛОГИХ ОБОЛОЧЕК

Содержание дипломной работы

7),   Функции изменения кривизн  и кручения  принимают вид   (8) Выражения для  здесь принимают вид   (9) Глава 2
Таким образом, в зависимости от физической линейности или нелинейности вызываются соответствующие блоки
По заданному фильтру производится расчет полей прогибов и напряжений для физически линейной или нелинейной задачи
Для оценки эффективности его качества применяются следующие критерии: Ускорение , где  - время исполнения распараллеленной программы на p процессорах,  - время исполнения исходной программы
Основным средством коммуникации между процессами в MPI является передача сообщений друг другу
В дальнейшем будем предполагать, что имеется сеть из нескольких компьютеров (будем называть их вычислительными узлами), работающих под управлением Windows
Кроме того, можно указать имя пользователя и пароль: процессы MPI-программы будут запускаться от имени этого пользователя
Программы MPICH в списке исключений брандмауэра Если какая-то из перечисленных программ отсутствует в списке разрешённых программ, то вы необходимо добавить её вручную
При выборе компьютера в списке компьютеров его имя автоматически вводится в поле "Host"
6 Создание общего сетевого ресурса Для удобного запуска MPI-программ следует создать на одном из компьютеров общий сетевой ресурс с правом полного доступа для всех пользователей
Из этого последует выигрыш по времени в 300-400% при решении комплекса задач при различных параметрах (при различной кривизне и толщине оболочки, при различных величинах нагрузки)
В качестве тестовых систем были использованы следующие ПК: Intel Core 2 Duo 2,0 Ггц, 2 Гб оперативной памяти; Intel Xeon 2x2,66 Ггц, 4 Гб оперативной памяти
В
- Саратов: Изд-во Сарат
Приложения на отдельных платформах могут, тем не менее, иметь причины для использования функций ввода/вывода самой платформы вместо функций stdio
0,a,5, i,j); case 4: return 2*h*mu*simpsonFx (0
0, endwtime; int rc; MPI_Status status; rc = MPI_Init (argc,argv); rc|= MPI_Comm_size (MPI_COMM_WORLD,numprocs); rc|= MPI_Comm_rank (MPI_COMM_WORLD,myid); if (rc! = 0) printf ("error initializing MPI and obtaining task ID information\n"); MPI_Get_processor_name (processor_name,namelen); fprintf (stdout,"Process%d of%d is on%s\n", myid, numprocs, processor_name); fflush (stdout); // функция начала замера времени вычисления
setvalue (2*N+i,N+j,C (8, i,j)); printf ("C8 [%d,%d]: =%
settoproduct (M1,M2); // сравнение полученной единичной матрицы с эталоном единичной матрицы M3
getvalue (i,j,rv,xyz); std:: cout << rv << " "; } std:: cout << std:: endl; } }; void comparetoidentity () { int worstdiagonal = 0; D maxunitydeviation = 0
, нами было разработано и проведено 6 занятий по 3D моделированию, позволяющих изучить основы 3D моделирования

заработать

Закачай файл и получай деньги