DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

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

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

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

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

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

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

Рік:
2021
Тип роботи:
Лабораторна робота
Предмет:
Технології розподілених систем та паралельних обчислень
Група:
КН-1
Коротко про документ

Про що ця робота

У документі наведено лабораторну роботу з побудови простих паралельних програм на мові MPI. Розглянуто приклади коду мовою C для взаємодії між гілками програми.

У роботі розглядаються

  • Паралельне програмування
  • Технологія MPI
  • Розподілені системи
  • Процеси та комунікації
  • Мова програмування C
  • Паралельні алгоритми

Зміст і розділи

  1. Мета роботи
  2. Методи розпаралелювання та моделі програм
  3. Приклад 1
  4. Приклад 2
  5. Приклад 3
Для кого:Студенти технічних спеціальностей
Викладачі:Викладач кафедри

Ключові поняття

MPIпаралельна програмапроцескомунікаціярозподілена пам'ятьMPI_InitMPI_SendMPI_Recvранг

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ ТРАНСПОРТНИЙ УНІВЕРСИТЕТ Кафедра інформаційних систем і технологій Лабораторна робота № 1 з дисципліни «Технології розподілених систем та паралельних обчислень» на тему: «Системи проектування паралельних програм» Мета - дати уявлення про побудову простих паралельних програм на мові паралельного програмування MPI; уявлення про паралельних програмах, що настроюються на розмір обчислювальної системи, як на параметр; практичне освоєння функцій парних і колективних взаємодій між гілками паралельної програми. Методи розпаралелювання та моделі програм, підтримувані MPI. Найважливішою особливістю MPI є те, що користувач при написанні своїх паралельних програм не повинен враховувати архітектурні особливості конкретних мультикомп’ютерів, оскільки MPI надає користувачеві віртуальний мультикомп’ютер з розподіленою пам'яттю і з віртуальною мережею зв'язку між віртуальними комп'ютерами. Користувач замовляє кількість комп'ютерів, необхідних для вирішення його задачі, і визначає топологію зв'язків між цими комп'ютерами. MPI реалізує це замовлення на конкретній фізичній системі. Обмеженням є обсяг оперативної пам'яті фізичного мультикомп’ютера. Таким чином користувач працює у віртуальному середовищі, що забезпечує переносимість його паралельних програм. Система MPI являє собою бібліотеку засобів паралельного програмування для мов С та Fortran 77. Однією з цілей, переслідуваних при вирішенні завдань на обчислювальних системах, в тому числі і на паралельних, - є ефективність. Ефективність паралельної програми істотно залежить від співвідношення часу обчислень до часу комунікацій між комп'ютерами (при обміні даними). І чим менше в процентному відношенні частка часу, витраченого на комунікації, в загальному часу обчислень, тим більше ефективність. Для паралельних систем з передачею повідомлень оптимальне співвідношення між обчисленнями і комунікаціями забезпечують методи грубозернистого розпаралелювання, коли паралельні алгоритми будуються з великих і рідко взаємодіючих блоків. Завдання лінійної алгебри, завдання, які вирішуються сітковими методами і багато інших, досить ефективно розпаралелювати грубозернистими методами. Останню модель інакше можна назвати моделлю розпаралелювання за даними. Коротко, суть цього способу полягає в наступному. Вихідні дані завдання розподіляються по процесах (гілкам паралельного алгоритму), а алгоритм є одним і тим же у всіх процесах, але дії цього алгоритму розподіляються у відповідності з наявними в цих процесах даними. Розподіл дій алгоритму полягає, наприклад, у привласненні різних значень змінним одних і тих же циклів у різних гілках, або у виконанні в різних гілках різної кількості витків одних і тих же циклів і т.п. Іншими словами, процес у кожної гілки слід різними шляхами виконання на тій же самій програмі. Скрізь далі замість "паралельна програма" будемо писати скорочено: п-програма. ПРИКЛАД 1 Кожна гілка п-програми виводить на екран свій ідентифікаційний номер і розмір замовленої паралельної системи, тобто кількість віртуальних комп'ютерів, в кожен з яких завантажується гілку п-програми. # include <stdio.h> # include <mpi.h> 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 <stdio.h> # include <mpi.h> 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 <stdio.h> # include <mpi.h> 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-х комп'ютерах. ВИКОНАННЯ: / /
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!