Студопедия — Визначення часу виконання MPI-програми
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Визначення часу виконання MPI-програми






Реалізувати програму первісної обробки даних з використанням методу найменших квадратів для послідовності значень отриманих в результаті табуляції функції на інтервалі з кроком 0.1, де випадкове число з рівномірним розподілом на інтервалі . Функція відповідає номеру студента в журналі обліку і вибирається з таблиці 3. Вважаючи, що функціональна залежність між та ─ квадратична. Необхідно визначити коефіцієнти емпіричної формули .

Таблиця 3.

№ п.п. № п.п.
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   

 

Результатом роботи програми є знайдені коефіцієнти поліному а також графіки на яких повинно бути зображено наступні залежності:

  • Значення функції
  • Значення функції або (згідно завдання)
  • Значення апроксимуючої функції отриманої в результаті використання методу найменших квадратів.

Визначення часу виконання MPI-програми

Отримати час поточного моменту виконання програми можна за допомогою функції:

double MPI_Wtime (void),

результатом виклику якої є кількість секунд, що минули від деякого певного моменту часу в минулому.

Можлива схема застосування функції MPI_Wtime може полягати в наступному:

double t1, t2, dt;

t1 = MPI_Wtime();

t2 = MPI_Wtime();

dt = t2 – t1;

Точність вимірювання часу також може залежати від середовища виконання паралельної програми. Для визначення поточного значення точності може бути використана функція:

double MPI_Wtick (void),

що дозволяє визначити час у секундах між двома послідовними показниками часу апаратного таймера комп'ютерної системи, що використовується.

2. Передача даних від одного процесу всім процесам програми

Досягнення ефективного виконання операції передачі даних від одного процесу всім процесам програми може бути забезпечено за допомогою функції MPI:

int MPI_Bcast (void * buf, int count, MPI_Datatype type, int root, MPI_Comm comm).

Функція MPI_Bcast здійснює розсилку даних з буфера buf, що містить count елементів типу type з процесу, що має номер root, всім процесам, що входять в комунікатор comm.

3. Передача даних від всіх процесів одному процесу. Операції редукції

Для найкращого виконання дій, пов'язаних з редукцією даних, в MPI передбачена функція:

int MPI_Reduce (void * sendbuf, void * recvbuf, int count, MPI_Datatype type, MPI_Op op, int root, MPI_Comm comm),

де

- Sendbuf - буфер пам'яті з повідомленням, що відправляється,

- Recvbuf - буфер пам'яті для результуючого повідомлення (тільки для процесу з рангом root),

- Count - кількість елементів у повідомленнях,

- Type - тип елементів повідомлень,

- Op - операція, яка повинна бути виконана над даними,

- Root - ранг процесу, на якому повинен бути отриманий результат,

- Comm - комунікатор, в рамках якого виконується операція.

Операція Опис
MPI_MAX Визначення максимального значення
MPI_MIN Визначення мінімального значення
MPI_SUM Визначення суми значень
MPI_PROD Визначення добуток значень
MPI_LAND Виконання логічної операції "І" над значеннями повідомлень
MPI_BAND Виконання бітової операції "І" над значеннями повідомлень
MPI_LOR Виконання логічної операції "АБО" над значеннями повідомлень
MPI_BOR Виконання бітової операції "АБО" над значеннями повідомлень
MPI_LXOR Виконання логічної операції виключає "АБО" над значеннями повідомлень
MPI_BXOR Виконання бітової операції виключає "АБО" над значеннями повідомлень
MPI_MAXLOC Визначення максимальних значень і їх індексів
MPI_MINLOC Визначення мінімальних значень і їх індексів

4. Синхронізація обчислень

Синхронізація процесів, тобто одночасне досягнення процесами тих чи інших точок процесу обчислень, забезпечується за допомогою функції MPI:

int MPI_Barrier (MPI_Comm comm);

Функція MPI_Barrier визначає колективну операцію і, тим самим, при використанні повинна викликатися всіма процесами комунікатора, що використовується. При виклику функції MPI_Barrier виконання процесу блокується, продовження обчислень процесу відбудеться тільки після виклику функції MPI_Barrier всіма процесами комунікатора.

Приклад №4. Знайти суму елементів: .

Розробка паралельного алгоритму для рішення даної задачі не викликає труднощів – необхідно розділити дані на рівні блоки, передати ці блоки процесам, виконати в процесах підсумовування отриманих даних, зібрати значення обчислених часткових сум на одному з процесів і скласти значення часткових сум для отримання загального результату розв'язуваної задачі.

 

#include <stdio.h>

#include "mpi.h"

#include <stdlib.h>

 

 

int main(int argc, char *argv[])

{

int my_rank;

int numprocs;

int n,i,sum;

int a;

int result;

double wtime;

 

MPI_Init(&argc, &argv);

MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

MPI_Comm_size(MPI_COMM_WORLD, &numprocs);

if (my_rank == 0) {

printf("Input n:");

fflush(stdout);

scanf("%d",&n);

}

 

MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD);

MPI_Barrier(MPI_COMM_WORLD);

wtime=MPI_Wtime();

 

sum=0;

for (i= my_rank; i<=n; i+=numprocs)

{ a=rand()%n+1;

sum=sum+a;

}

 

MPI_Reduce(&sum, &result,1,MPI_INT,MPI_SUM,0,MPI_COMM_WORLD);

MPI_Barrier(MPI_COMM_WORLD);

wtime=MPI_Wtime()-wtime;

if (my_rank == 0) {

 

printf("suma=%d",result);

printf("Working time: %.8lf seconds\n",wtime);

 

}

MPI_Finalize();

return 0;

}

 

 


Математичні функції на С++:

Функція Опис Приклад
abs(a) модуль або абсолютне значення від а abs(-3.0)= 3.0 abs(5.0)= 5.0
sqrt(a) корінь квадратний з а, причому а не від’ємне sqrt(9.0)=3.0
pow(a, b) піднесення а у степінь b pow(2,3)=8
ceil(a) округлення а до найменшого цілого, але не менше ніж а ceil(2.3)=3.0 ceil(-2.3)=-2.0
floor(a) округлення а до найбільшого цілого, але не більше ніж а floor(12.4)=12 floor(-2.9)=-3
fmod(a, b) обчислення остачі від a/b fmod(4.4, 7.5) = 4.4 fmod(7.5, 4.4) = 3.1
exp(a) обчислення експоненти еа exp(0)=1
sin(a) a задається у радіанах  
cos(a) a задається у радіанах  
log(a) натуральний логарифм a(основою є експонента) log(1.0)=0.0
log10(a) десятковий логарифм а Log10(10)=1
asin(a) арксинус a, де -1.0 < а < 1.0 asin(1)=1.5708
Таблиця 1 — Математичні функції у С++

ІІ. Практична частина

Інструкції до виконання

Застосовуючи технологію паралельного програмування МРІ, написати програму для обчислення значення визначеного інтеграла, використовуючи метод трапеції. Завдання згідно варіанту (Додаток №1).

Скласти порівняльнутаблицю часу виконання програми при різних характеристиках.

Для роботи з програмою на двох комп’ютерах потрібно створити спільний ресурс.

Додаток №1

Поточні контрольні питання:

7. Яка загальна будова МРІ-програм?

8. Які виділяють види обмінів повідомленнями?

9. Які основні складові повідомлення?

10. Яка функція дає можливість визначити ранг (кількість) процесів?

11. Яка функція дає можливість передати повідомлення від одного процесу іншому?

12. Яка функція дає можливість отримати повідомлення від одного процесу до іншого?

Рекомендована література:

6. Антонов А.С. Параллельное программирование с использованием технологии МРІ.

7. Воеводин В. В., Воеводин Вл. В. Параллельные вычисления. – СПб.: БХВ-Петербург, 2002. – 608.

8. Гергель В.П. Теория и практика параллельных вычислений/Гергель В. П. – М.: ИНТУИР.РУ Интернет-Университет Информационных технологий, 2007.

9. Гергель В. П., Фурсов В.А. Лекции по параллельным вычислениям: учебное пособие – Самара: Изд-во Самар. гос.аерокосм. ун-та, 2009. – 164с.

10. Корнеев В. Д. Параллельное программирование в МРІ. – 2-е изд., испр. – Новосисбирск: Изд-во ИВМиМГ СО РАН 2002. – 215с.

 


Лабораторна робота №5
Тема 3.1. Паралельний алгоритм Флойда_Уоршела (4 год.)

Мета: ознайомити студентів з паралельним алгоритмом Флойда-Уоршела.

Професійна спрямованість: сприяє формуванню інтересу і схильності до професії.

І. Теоретичні відомості

1. Колективні операції передачі даних

1.1. Узагальнена передача даних від одного процесу всім процесам

Виконання даної операції може бути забезпечено за допомогою функції:

int MPI_Scatter (void * sbuf, int scount, MPI_Datatype stype, void * rbuf, int rcount, MPI_Datatype rtype, int root, MPI_Comm comm), де

· sbuf, scount, stype - параметри повідомлення, що передається (scount визначає кількість елементів, що передаються на кожен процес),

· rbuf, rcount, rtype - параметри повідомлення, що приймається в процесах,

· root - ранг процесу, що виконує розсилку даних,

· comm - комунікатор, в рамках якого виконується передача даних.

1.2. Узагальнена передача даних від всіх процесів одному процесу

Для виконання цієї операції в MPI призначена функція:

int MPI_Gather (void * sbuf, int scount, MPI_Datatype stype, void * rbuf, int rcount, MPI_Datatype rtype, int root, MPI_Comm comm), де

· sbuf, scount, stype - параметри повідомлення, що передається,

· rbuf, rcount, rtype - параметри повідомлення, що приймається,

· root - ранг процесу, що виконує збір даних,

· comm - комунікатор, у рамках якого виконується передача даних.

 







Дата добавления: 2015-10-01; просмотров: 1403. Нарушение авторских прав; Мы поможем в написании вашей работы!



Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Различия в философии античности, средневековья и Возрождения ♦Венцом античной философии было: Единое Благо, Мировой Ум, Мировая Душа, Космос...

Характерные черты немецкой классической философии 1. Особое понимание роли философии в истории человечества, в развитии мировой культуры. Классические немецкие философы полагали, что философия призвана быть критической совестью культуры, «душой» культуры. 2. Исследовались не только человеческая...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Studopedia.info - Студопедия - 2014-2024 год . (0.012 сек.) русская версия | украинская версия