ВУЗ:
Составители:
Рубрика:
- 34 -
Асинхронным аналогом процедуры
MPI_Send
является
MPI_Isend
(для
MPI_Recv,
естественно,
MPI_Irecv
). Аналогично трем модификациям процеду-
ры
MPI_Send
предусмотрены три дополнительных варианта процедуры
MPI_Isend
:
•
MPI_Ibsend
- неблокирующая передача сообщения с буферизацией
•
MPI_Issend
- неблокирующая передача сообщения с синхронизацией
• MPI_Irsend
- неблокирующая передача сообщения по готовности
Необходимое оборудование – вычислительный кластер под управлением
UNIX-совместимой ОС, предустановленная поддержка MPI, рабочая консоль
программиста для управления прохождением пользовательских задач.
Порядок проведения работы – студент подготавливает исходные тексты
MPI-программ, компилирует их в исполнимое приложение, запускает на
счет, анализирует выходные данные программы.
Часть 1 работы.
Первой задачей является компиляция простейшей MPI-
программы
EXAMP_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));
- 34 - Асинхронным аналогом процедуры MPI_Send является MPI_Isend (для MPI_Recv, естественно, MPI_Irecv). Аналогично трем модификациям процеду- ры MPI_Send предусмотрены три дополнительных варианта процедуры MPI_Isend: • MPI_Ibsend - неблокирующая передача сообщения с буферизацией • MPI_Issend - неблокирующая передача сообщения с синхронизацией • MPI_Irsend - неблокирующая передача сообщения по готовности Необходимое оборудование – вычислительный кластер под управлением UNIX-совместимой ОС, предустановленная поддержка MPI, рабочая консоль программиста для управления прохождением пользовательских задач. Порядок проведения работы – студент подготавливает исходные тексты MPI-программ, компилирует их в исполнимое приложение, запускает на счет, анализирует выходные данные программы. Часть 1 работы. Первой задачей является компиляция простейшей MPI- программы EXAMP_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));
Страницы
- « первая
- ‹ предыдущая
- …
- 32
- 33
- 34
- 35
- 36
- …
- следующая ›
- последняя »