Системи проектування паралельних програм

Інформація про навчальний заклад

ВУЗ:
Національній Транспортний Університет
Інститут:
О
Факультет:
КН
Кафедра:
Кафедра інформаційних систем і технологій

Інформація про роботу

Рік:
2022
Тип роботи:
Лабораторна робота
Предмет:
Технології розподілених систем та паралельних обчислень

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ ТРАНСПОРТНИЙ УНІВЕРСИТЕТ Кафедра інформаційних систем і технологій
Лабораторна робота 1 з дисципліни «Технології розподілених систем та паралельних обчислень» на тему: «Системи проектування паралельних програм»
Мета - дати уявлення про побудову простих паралельних програм на мові паралельного програмування MPI; уявлення про паралельних програмах, що настроюються на розмір обчислювальної системи, як на параметр; практичне освоєння функцій парних і колективних взаємодій між гілками паралельної програми. Методи розпаралелювання та моделі програм, підтримувані MPI. Найважливішою особливістю MPI є те, що користувач при написанні своїх паралельних програм не повинен враховувати архітектурні особливості конкретних мультикомп’ютерів, оскільки MPI надає користувачеві віртуальний мультикомп’ютер з розподіленою пам'яттю і з віртуальною мережею зв'язку між віртуальними комп'ютерами. Користувач замовляє кількість комп'ютерів, необхідних для вирішення його задачі, і визначає топологію зв'язків між цими комп'ютерами. MPI реалізує це замовлення на конкретній фізичній системі. Обмеженням є обсяг оперативної пам'яті фізичного мультикомп’ютера. Таким чином користувач працює у віртуальному середовищі, що забезпечує переносимість його паралельних програм. Система MPI являє собою бібліотеку засобів паралельного програмування для мов С та Fortran 77. Однією з цілей, переслідуваних при вирішенні завдань на обчислювальних системах, в тому числі і на паралельних, - є ефективність. Ефективність паралельної програми істотно залежить від співвідношення часу обчислень до часу комунікацій між комп'ютерами (при обміні даними). І чим менше в процентному відношенні частка часу, витраченого на комунікації, в загальному часу обчислень, тим більше ефективність. Для паралельних систем з передачею повідомлень оптимальне співвідношення між обчисленнями і комунікаціями забезпечують методи грубозернистого розпаралелювання, коли паралельні алгоритми будуються з великих і рідко взаємодіючих блоків. Завдання лінійної алгебри, завдання, які вирішуються сітковими методами і багато інших, досить ефективно розпаралелювати грубозернистими методами. Останню модель інакше можна назвати моделлю розпаралелювання за даними. Коротко, суть цього способу полягає в наступному. Вихідні дані завдання розподіляються по процесах (гілкам паралельного алгоритму), а алгоритм є одним і тим же у всіх процесах, але дії цього алгоритму розподіляються у відповідності з наявними в цих процесах даними. Розподіл дій алгоритму полягає, наприклад, у привласненні різних значень змінним одних і тих же циклів у різних гілках, або у виконанні в різних гілках різної кількості витків одних і тих же циклів і т.п. Іншими словами, процес у кожної гілки слід різними шляхами виконання на тій же самій програмі. Скрізь далі замість "паралельна програма" будемо писати скорочено: п-програма. ПРИКЛАД 1 Кожна гілка п-програми виводить на екран свій ідентифікаційний номер і розмір замовленої паралельної системи, тобто кількість віртуальних комп'ютерів, в кожен з яких завантажується гілку п-програми. include
include
int main(int argc, char** argv) {
int size, rank;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
printf("SIZE =% d RANK =% d n", size, rank);
MPI_Finalize();
return (0); } ЗАВДАННЯ Скомпілювати та запустити програму прикладу 1 на 4-х комп’ютерах.
ВИКОНАННЯ: / /
ПРИКЛАД 2 Гілка з номером 0 пересилає дані (в даному випадку число 10) гілки з номером 3. Гілку 3 друкує на екран свій номер і прийняте число від нульової гілки. include
include
int main(int argc, char** argv) {
int size, rank, a, b;
MPI_Status st;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank == 0)
{
a = 10;
MPI_Send(&a, 1, MPI_INT, 3, 15, MPI_COMM_WORLD);
}
else
{
if(rank == 3)
{
MPI_Recv(&b, 1, MPI_INT, 0, 15, MPI_COMM_WORLD, &st);
printf("Vetv =% d b =% d n", rank, b);
}
}
MPI_Finalize();
return (0); } ЗАВДАННЯ Скомпілювати і запустити програму прикладу 2 на 4-х комп'ютерах.
ВИКОНАННЯ: / /
ПРИКЛАД 3 Гілка з номером 0 пересилає дані (в даному випадку число 10) останньої гілки в безлічі запущених гілок. Остання гілка друкує на екран свій номер і прийняте число від нульової гілки.
include
include
int main(int argc, char** argv) {
int size, rank, a, b;
MPI_Status st;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank == 0)
{
a = 10;
MPI_Send(&a, 1, MPI_INT, size - 1, 15, MPI_COMM_WORLD);
}
else
{
if(rank == size - 1)
{
MPI_Recv(&b, 1, MPI_INT, 0, 15, MPI_COMM_WORLD, &st);
printf("Vetv =% d b =% d n", rank, b);
}
}
MPI_Finalize();
return (0); } ЗАВДАННЯ Скомпілювати і запустити програму прикладу 3 на 4-х комп'ютерах.
ВИКОНАННЯ: / /
Антиботан аватар за замовчуванням

01.01.1970 00:01

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Новини