Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Отчеты по практике » Порівняння можливостей OpenMP і TPL

Реферат Порівняння можливостей OpenMP і TPL





х командних потоків (threads). Далі ці потоки можуть виконуватися на різних процесорах обчислювальної системи. У результаті такого підходу програма представляється у вигляді набору послідовних (однопотокових) і паралельних (багатопотокових) ділянок програмного коду. Подібний принцип організації паралелізму отримав найменування вилочного (fork-join) або пульсуючого паралелізму.

Ідея технології OpenMP полягає в наступному. За основу береться послідовна програма, а для створення її паралельної версії надається набір директив. Стандарт OpenMP розроблений для мов Фортран, С і С ++. Весь текст програми розбивається на послідовні і паралельні області. У початковий момент часу породжується нитка-майстер або основна нитка, яка починає виконання програми зі стартовою точки. При вході в паралельну область породжуються додаткові нитки. Після породження кожна нитка отримує свій унікальний номер, причому нитка-майстер завжди має номер 0. Всі нитки виконують один і той же код, відповідний паралельної області. При виході з паралельної області основна нитка чекає завершення решти ниток, і подальше виконання програми продовжує тільки вона. У паралельній області всі змінні програми поділяються на два класи: загальні (SHARED) і локальні (PRIVATE). Загальна змінна завжди існує лише в одному екземплярі для всієї програми і доступна всім ниткам під одним і тим же ім'ям. Оголошення локальної змінної викликає породження свого примірника даної змінної для кожної нитки. Зміна ниткою значення своєї локальної змінної не впливає на зміну значення цієї ж локальної змінної в інших нитках.

Всі директиви OpenMP представлені в програмі у вигляді коментарів і починаються, згідно синтаксису Фортран, на один з трьох символів:!, C або *.

Для визначення паралельних областей програми використовується пара директив

! $ OMP PARALLEL

lt; паралельний код програми gt;

! $ OMP END PARALLEL

Для виконання коду, розташованого між даними директивами, додатково породжується OMP_NUM_THREADS () - 1 ниток. Процес, який виконав дану директиву (нитка-майстер), завжди отримує номер 0. Всі нитки виконують код, укладений між даними директивами. Після END PARALLEL автоматично відбувається неявна синхронізація всіх ниток, і як тільки всі нитки доходять до цієї точки, нитка-майстер продовжує виконання подальшої частини програми, а решта нитки знищуються.

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

! $ OMP DO

lt; do цикл gt;

! $ OMP END DO

його можна распараллелить в паралельній частині програми.


. 2.4 Cравненіе можливостей OpenMP і TPL

Для порівняння можливостей слід розглянути і порівняти деякі інструменти паралелізму OpenMP і бібліотеки TPL. При постійному застосуванні однієї з технології та будь-якого інструменту важливо знати про особливості, які вони можуть надати. Для використання даних інструментів в паралельному програмуванні слід розглянути їх з точки зору наступних завдань:

· Обробка виключень;

· Планування обчислень;

· Управління циклом;

· Установка параметрів обчислень.

Першою розглянутої завданням є обробка виключень. Очевидно, що при роботі додатків часто виникають виняткові ситуації, пов'язані з будь-якими зовнішніми або внутрішніми помилками. Для підвищення безпеки і надійності коду та програми в цілому необхідно використовувати механізм, який дозволяє обробити виняткову ситуацію, а не обрушити роботу програми.

У TPL основні функції представлені класами Task і Parallel. Нагадаємо, що клас Task являє собою окрему асинхронну операцію - задачу, а клас Parallel - методи для ітеративного та функціонального розпаралелювання. При паралельному виконанні завдань, в будь-який з них може статися виняткова ситуація. У TPL при поява такої ситуації можлива коректна обробка.

Винятки в одному потоці не можуть безпосередньо вплинути на роботу інших потоків. При цьому винятки можуть з'являтися в двох і більше потоках одночасно. У TPL механізм обробки виключень представлений наступним чином: в момент появи помилки виникає виняток, який завершує потік і передається вгору по рівню. Така ж ситуація відбувається і в інших потоках. Після завершення всіх завдань у TPL всі винятки збираються в одне - AggregateException. Далі композитне виключення може бути оброблено після завершення паралельного блоку коду. У класу AggregateEx...


Назад | сторінка 5 з 10 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Розробка програми для виконання обчислень над матрицями
  • Реферат на тему: Створення програми-інтерпретатора для обробки вихідних текстів програм, що ...
  • Реферат на тему: Створення програми, що включає всі програми лабораторних робіт
  • Реферат на тему: Розробка програми, що реалізує алгоритм, який використовує z-буфер
  • Реферат на тему: Культурно-розважальні програми на російському телеекрані (на прикладі прогр ...