Введение в практику разработки параллельных программ в стандарте MPI. Баканов В.М - 28 стр.

UptoLike

Составители: 

- 28 -
MPI_Isend:
MPI_Ibsend - неблокирующая передача сообщения с буферизацией
MPI_Issend - неблокирующая передача сообщения с синхронизацией
MPI_Irsend - неблокирующая передача сообщения по готовности
Цель работыприобретение практических знаний и навыков в компиля-
ции и запуске простейших MPI-программ, практическое уяснение необходи-
мости синхронизации ветвей,
Необходимое оборудованиевычислительный кластер под управлением
UNIX-совместимой ОС, предустановленная поддержка MPI, рабочая консоль
программиста для управления прохождением пользовательских задач.
Порядок проведения работыстудент подготавливает исходные тексты
MPI-программ, компилирует их в
исполнимое приложение, запускает на
счет, анализирует выходные данные программы.
Часть 1 работы.
Первой задачей является компиляция простейшей MPI-
программы
EXAMPLE_01.C, запуск ее на исполнение на заданном преподава-
телем числе ВУ и анализ результатов.
// 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_NAME];
struct timeb t; // 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_NAME, &NAME_LEN);
ftime(&t); // 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();
} // end of EXAMPLE_01 program
MPI_Isend:

  • MPI_Ibsend - неблокирующая передача сообщения с буферизацией
  • MPI_Issend - неблокирующая передача сообщения с синхронизацией
  • MPI_Irsend - неблокирующая передача сообщения по готовности

  Цель работы – приобретение практических знаний и навыков в компиля-
ции и запуске простейших MPI-программ, практическое уяснение необходи-
мости синхронизации ветвей,
  Необходимое оборудование – вычислительный кластер под управлением
UNIX-совместимой ОС, предустановленная поддержка MPI, рабочая консоль
программиста для управления прохождением пользовательских задач.
  Порядок проведения работы – студент подготавливает исходные тексты
MPI-программ, компилирует их в исполнимое приложение, запускает на
счет, анализирует выходные данные программы.

  Часть 1 работы. Первой задачей является компиляция простейшей MPI-
программы EXAMPLE_01.C, запуск ее на исполнение на заданном преподава-
телем числе ВУ и анализ результатов.

// source code of EXAMP_01.C program
#include "mpi.h"
#include 
#include  // for ftime function

int main(int argc, char **argv)
{
 int CURR_PROC, ALL_PROC, NAME_LEN;
 char PROC_NAME[MPI_MAX_PROCESSOR_NAME];
 struct timeb t; // 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_NAME, &NAME_LEN);

 ftime(&t); // 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();
} // end of EXAMPLE_01 program

                                               - 28 -