ВУЗ:
Составители:
Рубрика:
- 29 -
Наиболее интересен анализ последовательности строк выдачи каждой вет-
ви программы:
I am process 0 from 5 and my name is Comp_07 (time: 1110617937.329 sec)
I am process 2 from 5 and my name is Comp_06 (time: 1110617937.329 sec)
I am process 4 from 5 and my name is Comp_11 (time: 1110617939.003 sec)
I am process 1 from 5 and my name is Comp_02 (time: 1110617939.003 sec)
I am process 3 from 5 and my name is Comp_01 (time: 1110617938.997 sec)
Для определения момента времени с точностью 10
-3
сек использована
стандартная C-функция
ftime (выдает локальное время для каждого про-
цесcора). Функция
MPI_Wtime возвращает для каждого вызвавшего процесса
локальное астрономическое время в секундах (
double), прошедшее с некото-
рого момента (обычно 01.I.1970) в прошлом; гарантируется, что момент вре-
мени, используемый в качестве точки отсчета, не будет изменен за время су-
ществования процесса. Функция
MPI_Wtick возвращает double-значение, опре-
деляющее разрешение таймера (промежуток времени между ‘тиками’) про-
цессора. Без (принудительной) синхронизации часов всех процессоров
функции
ftime и MPI_Wtime следует использовать лишь для определения отно-
сительных промежутков (но не для абсолютных моментов) времени. В случае
MPI_WTIME_IS_GLOBAL=1 время процессоров синхронизировано, при =0 –
нет.
Необходимо повторить запуск исполняемого модуля программы несколько
раз с указанием различного числа процессоров; желательно предварительно
попытаться ответить на вопрос о возможной последовательности выдачи
данных (удивительно, но даже при всей вышеприведенной информации о пра-
вилах выполнения параллельных приложений правильный ответ нечаст!).
Часть 2 работы.
Задачей является формальное освоение использования
простейших функций передачи и приема данных (
MPI_Send и MPI_Recv). Эти
функции осуществляют простейшую связь типа ‘точка-точка’ между процес-
сами (одна ветвь вызывает функцию
MPI_Send для передачи, другая –
MPI_Recv для приема данных) с блокировкой. Обе эти функции (как и другие)
возвращают код ошибки как целое (здесь не используется, успешному окон-
чанию соответствует
MPI_SUCCESS, подробнее см. файл mpi.h).
В следующем примере (файл
EXAMP_02.C) нулевой процесс посылает
(идентифицированную тегом 999) текстовую строку процессу 1 (обмен ‘точ-
ка-точка’), там же строка и печатается:
// source code of EXAMP_02.C program
#include "mpi.h"
#include <stdio.h>
int main (int argc, char **argv)
{
char message[20];
Наиболее интересен анализ последовательности строк выдачи каждой вет- ви программы: I am process 0 from 5 and my name is Comp_07 (time: 1110617937.329 sec) I am process 2 from 5 and my name is Comp_06 (time: 1110617937.329 sec) I am process 4 from 5 and my name is Comp_11 (time: 1110617939.003 sec) I am process 1 from 5 and my name is Comp_02 (time: 1110617939.003 sec) I am process 3 from 5 and my name is Comp_01 (time: 1110617938.997 sec) -3 Для определения момента времени с точностью 10 сек использована стандартная C-функция ftime (выдает локальное время для каждого про- цесcора). Функция MPI_Wtime возвращает для каждого вызвавшего процесса локальное астрономическое время в секундах (double), прошедшее с некото- рого момента (обычно 01.I.1970) в прошлом; гарантируется, что момент вре- мени, используемый в качестве точки отсчета, не будет изменен за время су- ществования процесса. Функция MPI_Wtick возвращает double-значение, опре- деляющее разрешение таймера (промежуток времени между ‘тиками’) про- цессора. Без (принудительной) синхронизации часов всех процессоров функции ftime и MPI_Wtime следует использовать лишь для определения отно- сительных промежутков (но не для абсолютных моментов) времени. В случае MPI_WTIME_IS_GLOBAL=1 время процессоров синхронизировано, при =0 – нет. Необходимо повторить запуск исполняемого модуля программы несколько раз с указанием различного числа процессоров; желательно предварительно попытаться ответить на вопрос о возможной последовательности выдачи данных (удивительно, но даже при всей вышеприведенной информации о пра- вилах выполнения параллельных приложений правильный ответ нечаст!). Часть 2 работы. Задачей является формальное освоение использования простейших функций передачи и приема данных (MPI_Send и MPI_Recv). Эти функции осуществляют простейшую связь типа ‘точка-точка’ между процес- сами (одна ветвь вызывает функцию MPI_Send для передачи, другая – MPI_Recv для приема данных) с блокировкой. Обе эти функции (как и другие) возвращают код ошибки как целое (здесь не используется, успешному окон- чанию соответствует MPI_SUCCESS, подробнее см. файл mpi.h). В следующем примере (файл EXAMP_02.C) нулевой процесс посылает (идентифицированную тегом 999) текстовую строку процессу 1 (обмен ‘точ- ка-точка’), там же строка и печатается: // source code of EXAMP_02.C program #include "mpi.h" #includeint main (int argc, char **argv) { char message[20]; - 29 -
Страницы
- « первая
- ‹ предыдущая
- …
- 27
- 28
- 29
- 30
- 31
- …
- следующая ›
- последняя »