На головну

Директиви розподілу роботи в OpenMP на прикладі розпаралелювання циклів.

  1.  Схема роботи механізму реплікації ДНК
  2.  II. ОРГАНІЗАЦІЯ РОБОТИ ВІДДІЛУ
  3.  II. Системні вимоги І ПОЧАТОК РОБОТИ
  4.  III. ЯКА ІНФОРМАЦІЯ ПОТРІБНА КЕРІВНИЦТВУ ДЛЯ РОБОТИ
  5.  III. Методичні вказівки для студентів заочної форми навчання з виконання контрольної роботи
  6.  III. Деякі моменти роботи в Excel
  7.  IV. ТЕМИ ДЛЯ САМОСТІЙНОЇ РОБОТИ

#pragma omp for [опції ...]

Директива передує циклу for канонічного типу:

for (init-expr; var logical_op b; incr_expr)

init_expr :: = var = expr

logical_op>, <,> =, <=

incr_expr :: = var ++, ++ var, var -, - var

var + = incr, var - = incr, var = incr + var

var = var + incr, var = var - incr

var змінна цілого типу

incr, lb, b інваріанти циклу цілого типу

#pragma omp parallel shared (a, b, c, nthreads, chunk) private (tid, i, j, k)

#pragma omp for schedule (static, chunk)

У OpenMP змінні в паралельних областях програми поділяються на два основні класи:

· SHARED (загальні; під ім'ям A всі нитки бачать одну змінну) і

· PRIVATE (приватні; під ім'ям A кожна нитка бачить свою змінну).

Окремі правила визначають поведінку змінних при вході і виході з паралельної області або паралельного циклу: REDUCTION, FIRSTPRIVATE, LASTPRIVATE, COPYIN.

SHARED
 Застосовується до змінних, які необхідно зробити загальними.

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

THREADPRIVATE
 Застосовується до COMMON-блокам, які необхідно зробити приватними. Директива повинна застосовуватися після кожної декларації COMMON-блоку.

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

LASTPRIVATE
 Після закінчення паралельно циклу або блоку паралельних секцій, нитка, яка виконала останню ітерацію циклу або останню секцію блоку, оновлює значення оригінальної змінної.

REDUCTION (+: A)
 Позначає змінну, з якої в циклі проводиться reduction-операція (наприклад, підсумовування). При виході з циклу, дана операція проводиться над копіями змінної у всіх нитках, і результат присвоюється оригінальної змінної.

COPYIN
 Застосовується до COMMON-блокам, які позначені як THREADPRIVATE. При вході в паралельну область приватні копії цих даних не започатковано оригінальними значеннями.

Static - блочно-циклічне розподіл ітерацій циклу; розмір блоку - chunk. Перший блок з chunk ітерацій виконує нульова нитка, другий блок - наступна і т.д. до останньої нитки, потім розподіл знову починається з нульової нитки. Якщо значення chunk не вказано, то ввесь люд ітерацій ділиться на безперервні шматки приблизно однакового розміру (конкретний спосіб залежить від реалізації), і отримані порції ітерацій розподіляються між нитками.

 



 Загальна характеристика пакету OpenMP. Послідовні і паралельні ділянки. Директиви розпаралелювання. |  Усунення інформаційних залежностей в циклах засобами OpenMP, директива reduction.

 види кешей |  Графічні прискорювачі. Особливості організації пам'яті і обчислень. Шейдери. |  Спеціалізовані процесори. Комунікаційні процесори. Конвеєрні процесори. Матричні процесори. Застосування. Основні принципи функціонування. |  Топології мереж МВС. Сфера застосування. Властивості. Характеристики. Приклади використання. |  ТОПОЛОГІЇ ХАРАКТЕРНІ ДЛЯ МВС |  Комутатори для МВС. Прості комутатори. Алгоритми арбітражу. Складові комутатори. Комутатор Клоза. Баньян-мережі. |  Способи оцінки продуктивності МВС. Методи оцінки. Види оцінок. Принципи формування top 500 і .др. top. |  Надійність відмовостійкість і інші характеристики МВС. Вимоги до компонентів МВС. |  Прискорення і ефективність паралельних програм. Інформаційні залежності за даними. Закон Амдала. |  Проблема недетермінізма в багатопоточних програмах. Підтримка синхронізації потоків в POSIX Threads. Критичні секції. |

© um.co.ua - учбові матеріали та реферати