Паралельна обробка даних

Характеристика сучасних задач науки і техніки, що необхідні для розв’язку суперкомп’ютерних потужностей. Оцінка принципової можливості паралельної обробки даних. Побудова абстрактної моделі таких обрахунків. Аналіз поняття гранул розпаралелювання.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык украинский
Дата добавления 28.07.2017
Размер файла 44,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

ВСТУП

Ще на зорі комп'ютерної ери, приблизно в середині минулого століття, конструктори електронно-обчислювальних машин задумалися над можливістю застосування паралельних обчислень в комп'ютерах. Адже збільшення швидкодії тільки за рахунок вдосконалення електронних компонентів комп'ютера - досить дорогий спосіб, який, до того ж, стикається з обмеженнями, що накладаються фізичними законами. Так паралельна обробка даних і паралелізм команд були введені в конструкцію комп'ютерів і зараз будь-який користувач "персоналки", можливо, сам того не знаючи, працює на паралельному комп'ютері.

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

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

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

Вимоги отримати максимум продуктивності при мінімальній вартості привели до розробки багатопроцесорних обчислювальних комплексів; відомі системи такого роду, що поєднують обчислювальні потужності тисяч окремих процесорів. Наступним етапом є спроби об'єднати мільйони різнорідних комп'ютерів планети в єдиний обчислювальний комплекс з величезною продуктивністю за допомогою мережі Internet. На сьогоднішній день застосування паралельних обчислювальних систем є стратегічним напрямком розвитку обчислювальної техніки. Розвиток "заліза" з необхідністю підкріплюються вдосконаленням алгоритмічної та програмної компонент - технологій паралельного програмування.

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

РОЗДІЛ 1. ОСНОВНІ ПОНЯТТЯ

Найбільш поширеною технологією програмування для кластерних систем і паралельних комп'ютерів з розподіленою пам'яттю в даний час є технологія MPI. Основним способом взаємодії паралельних процесів в таких системах є передача повідомлень один одному. Це і відображено в назві даної технології - Message Passing Interface (інтерфейс передачі повідомлень). Стандарт MPI фіксує інтерфейс, який має дотримуватися як системою програмування на кожній обчислювальної платформі, так і користувачем при створенні своїх програм. MPI підтримує роботу з мовами Фортран і Сі. Повна версія інтерфейсу містить опис більше 125 процедур і функцій.

Інтерфейс MPI підтримує створення паралельних програм в стилі MIMD (Multiple Instruction Multiple Data), що має на увазі об'єднання процесів з різними вихідними текстами. Однак писати і налагоджувати такі програми дуже складно, тому на практиці програмісти, набагато частіше використовують SPMD-модель (Single Program Multiple Data) паралельного програмування, в рамках якої для всіх паралельних процесів використовується один і той же код. В даний час все більше і більше реалізацій MPI підтримують роботу з так званими "нитками".

MPI програма - це безліч паралельних взаємодіючих процесів. Всі процеси породжуються один раз, утворюючи паралельну частина програми. В ході виконання MPI-програми породження додаткових процесів або знищення існуючих не допускається (в подальших версіях MPI така можливість з'явилася). Кожен процес працює у своєму адресному просторі, ніяких загальних змінних або даних у MPI немає. Основним способом взаємодії між процесами є явна посилка повідомлень.

Для локалізації взаємодії паралельних процесів програми можна створювати групи процесів, надаючи їм окрему середовище для спілкування - комунікатор. Склад утворених груп довільний. Групи можуть повністю збігатися, входити одна в іншу, не перетинатися або перетинатися частково. Процеси можуть взаємодіяти тільки всередині деякого комунікатора, повідомлення, відправлені в різних комунікаторах, не перетинаються і не заважають один одному. Комунікатори мають в мові Фортран тип INTEGER (в мові Сі - зумовлений тип MPI Comm).

1.1 Загальні питання розв'язку "великих задач"

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

Верхня межа кількості обчислень для "великих задач" визначається лише продуктивністю існуючих на даний момент обчислювальних систем. При "прогоні" обчислювальних задач в реальних умовах ставиться не питання "вирішити задач взагалі", а "вирішити за прийнятний час" (годинник / десятки годин).

1.2 Сучасні задачі науки і техніки, необхідні для розв'язку суперкомп'ютерних потужностей

Досить часто доводиться стикатися з такими завданнями, які, представляючи неабияку цінність для суспільства, не можуть бути вирішені за допомогою відносно повільних комп'ютерів офісного або домашнього класу. Єдина надія в цьому випадку покладається на комп'ютери з великою швидкодією, які прийнято називати суперкомп'ютерами. Тільки машини такого класу можуть впоратися з обробкою великих обсягів інформації. Це можуть бути, наприклад, статистичні дані або результати метеорологічних спостережень, фінансова інформація. Іноді швидкість обробки має вирішальне значення. В якості прикладу можна навести складання прогнозу погоди і моделювання кліматичних змін. Чим раніше передвіщено стихійне лихо, тим більше можливостей підготуватися до нього.

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

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

- Передбачення погоди, клімату і глобальних змін в атмосфері;

- Науки про матеріали;

- Побудова напівпровідникових приладів;

- Надпровідність;

- Розробка фармацевтичних препаратів;

- Генетика людини;

- Астрономія;

- Транспортні задачі великої розмірності;

- Гідро і газодинаміка;

- Керований термоядерний синтез;

- Розвідка нафти і газу;

- Обчислювальні задачі наук про світовий океан;

- Розпізнавання і синтез мови, розпізнавання зображень.

Необхідно відзначити, що існують аргументи проти широкого практичного застосування паралельних обчислень:

1. Паралельні обчислювальні системи надмірно дороги. За підтверджується практикою законом Гроша, продуктивність комп'ютера зростає пропорційно квадрату його вартості; внаслідок набагато вигідніше отримати необхідну обчислювальну потужність придбанням одного продуктивного процесора, ніж використання декількох менш швидкодіючих процесорів.

Контраргумент. Зростання швидкодії послідовних електронно-обчислювальних машин не може тривати нескінченно, комп'ютери піддаються швидкому моральному старінню і необхідні часті фінансові витрати на покупку нових моделей. Практика створення паралельних обчислювальних систем класу Beowulf ясно показала економічність саме цього шляху.

2. При організації паралелізму надмірно швидко ростуть втрати продуктивності. За гіпотезою Мінського (Marvin Minsky) досягається при використанні паралельної системи прискорення обчислень пропорційно двійковому логарифму від числа процесорів (при 1000 процесорах можливе прискорення виявляється рівним всього 10).

Контраргумент. Наведена оцінка прискорення вірна для розпаралелювання певних алгоритмів. Однак існує велика кількість завдань, при паралельному вирішенні яких досягається близьке до 100% використанню всіх наявних процесорів паралельної обчислювальної системи.

3. Послідовні комп'ютери постійно удосконалюються. За широко відомому закону Мура складність послідовних мікропроцесорів зростає вдвічі кожні 18 місяців, тому необхідна продуктивність може бути досягнута і на "звичайних" послідовних комп'ютерах.

Контраргумент. Аналогічний розвиток властиво і паралельним системам.

4. Однак застосування паралелізму дозволяє отримувати необхідне прискорення обчислень без очікування розробки нових більш швидкодіючих процесорів. Ефективність паралелізму сильно залежить від характерних властивостей паралельних систем. Всі сучасні послідовні електронно-обчислювальні машини працюють у відповідність з класичною схемою фон-Неймана; паралельні системи відрізняються суттєвим розмаїттям архітектури і максимальний ефект від використання паралелізму може бути отриманий при повному використанні всіх особливостей апаратури (наслідок - перенесення паралельних алгоритмів і програм між різними типами систем скрутний, а іноді і неможливий).

Контраргумент. При реально наявному розмаїтті архітектур паралельних систем існують і певні "усталені" способи забезпечення паралелізму. Інваріантність створюваного програмного забезпечення забезпечується за допомогою використання стандартних програмних засобів підтримки паралельних обчислень (програмні бібліотеки PVM, MPI, DVM та ін.) PVM та MPI використовуються в суперкомп'ютерах Cray-T3.

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

6. Існує обмеження на прискорення обчислення при паралельній реалізації алгоритму в порівнянні з послідовною. Контраргумент. У самому справі, алгоритмів взагалі без (певної) частки послідовних обчислень не існує. Однак це суть властивість алгоритму і не має відношення до можливості паралельного розв'язання задачі взагалі. Необхідно навчитися застосовувати нові алгоритми, більш підходящі для вирішення завдань на паралельних системах. Таким чином, на кожне критичне міркування проти використання паралельних обчислювальних технологій знаходиться більш-менш істотний контраргумент.

1.3 Паралельна обробка даних

  • Принципова можливість паралельної обробки

Практично всі розроблені до теперішнього часу алгоритми є послідовними. Наприклад, при обчисленні виразу a + b Ч c, спочатку необхідно виконати множення і тільки потім виконати додавання. Якщо в електронно-обчислювальних машин присутні вузли додавання і множення, які можуть працювати одночасно, то в даному випадку вузол складання буде простоювати в очікуванні завершення роботи вузла множення. Можна довести твердження, яке у тому, що можливо побудувати машину, яка заданий алгоритм буде обробляти паралельно. Можна побудувати m процесорів, які при одночасній роботі видають потрібний результат за один-єдиний такт роботи обчислювача.

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

Абстрактні моделі паралельних обрахунків

Модель паралельних обчислень забезпечує високорівневий підхід до визначення характеристик і порівнянні часу виконання різних програм, при цьому абстрагуються від апаратного забезпечення і деталей виконання. Першою важливою моделлю паралельних обчислень з'явилася машина з паралельним випадковим доступом (PRAM - Parallel Random Access Machine), яка забезпечує абстракцію машини з пам'яттю, що розділяється (PRAM є розширенням моделі послідовної машини з довільним доступом RAM - Random Access Machine). Модель BSP (Bulk Synchronous Parallel, масова синхронна паралельна) об'єднує абстракції як розділеної, так і розподіленої пам'яті. Вважається, що всі процесори виконують команди синхронно; у разі виконання однієї і тієї ж команди PRAM є абстрактною SIMD-машиною, (SIMD - Single Instruction stream / Multiple Data stream - одиночний потік команд поряд з множинним потоком даних), однак процесори можуть виконувати і різні команди. Основними командами є зчитування з пам'яті, запис в пам'ять і звичайні логічні і арифметичні операції.

Модель PRAM ідеалізована в тому сенсі, що кожен процесор в будь-який момент часу може мати доступ до будь комірці пам'яті (Операції запису, виконувані одним процесором, видно всім іншим процесорам в тому порядку, в якому вони виконувалися, але операції запису, виконувані різними процесорами, можуть бути видні в довільному порядку). Наприклад, кожен процесор в PRAM може зчитувати дані з комірки пам'яті або записувати дані в цю ж комірку. На реальних паралельних машинах такого, звичайно, не буває, оскільки модулі пам'яті на фізичному рівні впорядковують доступ до однієї і тієї ж комірці пам'яті. Більше того, час доступу до пам'яті на реальних машинах неоднаково через наявність кеш і можливої ієрархічної організації модулів пам'яті.

Базова модель PRAM підтримує конкурентні (в даному контексті паралельні) зчитування та запис. Відомі підмоделі PRAM, що враховують правила, що дозволяють уникнути конфліктних ситуацій при одночасному зверненні декількох процесорів до загальної пам'яті. Моделювати схеми з функціональних елементів за допомогою паралельних машин з довільним доступом (PRAM) дозволяє теорема Брента. В якості функціональних елементів можуть виступати як 4 основних (здійснюють логічні операції NOT, AND, OR, XOR - заперечення, логічне І, логічне АБО і виключає АБО відповідно), більш складні NAND і NOR (І-НЕ і АБО-НЕ), так і будь-якої складності.

Надалі передбачається, що затримка (тобто час спрацьовування - час, через який передбачені значення сигналів з'являються на виході елемента після встановлення значень на входах) однакова для всіх функціональних елементів. Розглядається схема з функціональних елементів, з'єднаних без освіти циклів (припускаємо, що функціональні елементи мають будь-яку кількість входів, але рівно один вихід - елемент з декількома виходами можна замінити декількома елементами з єдиним виходом). Число входів визначає вхідні ступінь елемента, а число входів, до яких підключений вихід елемента - його вихідний ступенем. Звичайно передбачається, що вхідні ступеня всіх використовуваних елементів обмежені зверху, вихідні ж мірою можуть бути будь-якими. Під розміром схеми розуміється кількість елементів в ній, найбільше число елементів на шляхах від входів схеми до виходу елемента називається глибиною цього елемента (глибина схеми дорівнює найбільшою з глибин складових її елементів).

Наведення результат моделювання схеми розміром (загальна кількість процесорів) n = 15 при глибині схеми (максимальне число елементів на кожному з рівнів глибини) d = 5 із кількістю процесорів p = 2 (одночасно модельований елементи об'єднані в групи прямокутними областями, причому для кожної групи зазначений крок, на якому моделюються її елементи; моделювання відбувається послідовно зверху вниз у порядку зростання глибини, на кожній глибині по р штук за раз). Згідно теореми Брента моделювання такої схеми займе не більше ceil (15/2 +1) = 9 кроків.

  • Способи паралельної обробки даних, похибки обчислень

Можливі наступні режими виконання незалежних частин програми:

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

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

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

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

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

Прискорення обчислень досягається за рахунок використання всіх ступенів конвеєра для потокової обробки даних (дані потоком надходять на вхід конвеєра і послідовно обробляються на всіх щаблях). Конвеєри можуть бути скалярними або векторними пристроями (різниця полягає лише в тому, що в останньому випадку можуть бути використані обробні вектори команди). У разі довжини конвеєра l час обробки n незалежних операцій складе l + n-1 (кожен ступінь спрацьовує за одиницю часу). При використанні такого пристрою для обробки єдиною порції вхідних даних буде потрібно час l Ч n і тільки для безлічі порцій отримаємо прискорення обчислень, близьке до l.

З рисунку 1.2 видно, що продуктивність E конвеєрного пристрою асимптомно зростає із збільшенням довжини n набору даних на його вході, прагнучи до теоретичного максимуму продуктивності 1 / ф

1.4 Поняття паралельного процесу і гранули розпаралелювання

Найбільш загальна схема виконання послідовних і паралельних обчислень моменти часу S і E - початок і кінець завдання відповідно.

Процесом називають певні послідовності команд, нарівні з іншими процесами претендують для свого виконання на використання процесора; команди (інструкції) всередині процесу виконуються послідовно, внутрішній паралелізм при цьому не враховують.

Характерна довжина послідовно виконується групи команд у кожному з паралельних процесів називається розміром гранули (зерна). У будь-якому випадку доцільно прагнути до "грубозернистий". Зазвичай розмір зерна (гранули) складає десятки-сотні тисяч машинних операцій (що на порядки перевищує типовий розмір оператора мов Fortran або C / C + +). В залежності від розмірів гранул говорять про дрібнозернистому і грубозернистому паралелізмі.

На розмір гранули впливає і зручність програмування - у вигляді гранули часто оформляють якийсь логічно закінчений фрагмент програми. Доцільно прагнути до рівномірному завантаженні процесорів. Розробка паралельних програм є непростим завданням в зв'язку з труднощами виявлення паралелізму (зазвичай прихованого) у програмі (тобто виявлення частин алгоритму, що можуть виконуватися незалежно один від одного). Автоматизація виявлення паралелізму в алгоритмах непроста і в повному обсязі навряд чи може бути вирішена найближчим часом. У той же час за десятиліття експлуатації обчислювальної техніки розроблено таку кількість послідовних алгоритмів, що не може бути й мови про їх ручному розпаралелювання. Навіть найпростіша модель паралельних обчислень дозволяє виявити важливу обставину - час обміну даними повинно бути якомога менше часу виконання послідовності команд, що утворюють гранулу.

Для реальних завдань (традиційно) характерний розмір зерна розпаралелювання на кілька порядків перевищує характерний розмір оператора традиційної мови програмування (C / C + + або Fortran).

  • 1.5 Взаємодія паралельних процесів, синхронізація процесів

Виконання команд програми утворює обчислювальний процес, в разі виконання декількох програм на загальній або розділяється пам'яті і обміні цих програм повідомленнями прийнято говорити про систему спільно протікають взаємодіючих процесів. Породження і знищення процесів UNIX-подібних операційних системах виконуються операторами (системними викликами). Паралелізм часто описується в термінах макрооператорів, в паралельних мовах запуск паралельних гілок здійснюється за допомогою оператора JOIN.

Для багатопроцесорних обчислювальних систем особливе значення має забезпечення синхронізації процесів. Наприклад, момент часу настання обміну даними між процесорами апріорі ніяк не узгоджений і не може бути визначений точно, так як залежить від безлічі важко оцінених параметрів функціонування багатопроцесорних обчислювальних систем, при цьому для забезпечення зустрічі для обміну інформацією просто необхідно застосовувати синхронізацію. У слабозв'язних багатопроцесорних обчислювальних системах взагалі не можна сподіватися на абсолютну синхронізацію машинних годин окремих процесорів, можна говорити тільки про вимірювання проміжків часу в тимчасовій системі кожного процесора. Синхронізація є дієвим способом запобігання ситуацій "глухого кута" - ситуації, коли кожен із взаємодіючих процесів одержав у розпорядження частину необхідних йому ресурсів, але ні йому ні іншим процесам цієї кількості ресурсів недостатньо для завершення обробки та подальшого звільнення ресурсів. У системах паралельного програмування використовують високорівневі прийоми синхронізації. У технології паралельного програмування MPI застосована схема синхронізації обміну інформацією між процесами. Синхронізація може підтримуватися і апаратно (наприклад, бар'єрна синхронізація в суперкомп'ютері Cray T3, за допомогою якої здійснюється очікування всіма процесами певної точки в програмі, після досягнення якої можлива подальша робота.

1.6 Можливе прискорення при паралельних обрахунках (закон Амдаля)

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

Закон Амдаля (1967) пов'язує потенційне прискорення обчислень при розпаралелювання з часткою операцій, які виконуються апріорі послідовно. Нехай f (0 <f <1) - частина операцій алгоритму, яку розпаралелили не представляється можливим; тоді розпаралелена частина дорівнює (1-f); при цьому витрати часу на передачу повідомлень не враховуються, ts - час виконання алгоритму на одному процесорі (послідовний варіант), n - число процесорів паралельної машини.

При перенесенні алгоритму на паралельну машину час розрахунку розподілиться так:

- fЧts - час виконання частини алгоритму, яку розпаралелити неможливо;

- (1-f )Чts/n - час, витрачений на виконання розпаралеленої частини алгоритму.

Час tp, необхідний для розрахунку на паралельну машину з n процесорами, рівний tp=fЧts+(1-f)Чts/n .

Прискорення часу розрахунку при малої частки послідовної операцій (f << 1) можливо досягти (не більше ніж в n раз) прискорення обчислень.

У разі f = 0,5 ні при якій кількості процесорів неможливо досягти S> 2! Зауважимо, що ці обмеження носять фундаментальний характер (їх можна обійти для заданого алгоритму), проте практична оцінка частки f послідовних операцій апріорі зазвичай неможлива. Таким чином, якісні характеристики самого алгоритму накладають обмеження на можливе прискорення при розпаралелювання. Наприклад, характерні для інженерних розрахунків алгоритми рахунки по послідовним формулами розпаралелювати погано (частина f значима), в той же час зводяться до задач лінійного програмування алгоритми розпаралелювати задовільно. Апріорно оцінити частку послідовних операцій f непросто. Однак можна спробувати формально використовувати закон Амдаля для розв'язання зворотної задачі визначення f по експериментальним даним продуктивності; це дає можливість кількісно судити про досягнуту ефективності розпаралелювання.

На рисунку 1.6 наведено результати експерименту на кластері SCI-MAIN НИВЦ МДУ на завданні множення матриць по стрічкової схемою (розмірність 103 Ч 103 дійсних чисел подвійної точності), експериментальні дані найкращим чином (використаний метод найменших квадратів) відповідають формулі Амдаля при f = 0,051. Закон Амдаля зручний для якісного аналізу проблеми розпаралелювання.

ВИСНОВКИ

Паралельне програмування являє собою цілий напрямок суміжних питань, що включають апаратну підтримку, аналіз структури алгоритмів з метою виявлення паралелізму та алгоритмічні мови для програмування паралельних завдань. Технології паралельних обчислень в даний час бурхливо розвиваються в зв'язку з вимогами світової науки і технологій. Досить часто доводиться стикатися з такими завданнями, які, представляючи неабияку цінність для суспільства, не можуть бути вирішені за допомогою відносно повільних комп'ютерів офісного або домашнього класу. Єдина надія в цьому випадку покладається на комп'ютери з великою швидкодією, які прийнято називати суперкомп'ютерами. Тільки машини такого класу можуть впоратися з обробкою великих обсягів інформації. Це можуть бути, наприклад, статистичні дані або результати метеорологічних спостережень, фінансова інформація. Іноді швидкість обробки має вирішальне значення. Це складання прогнозу погоди і моделювання кліматичних змін. Чим раніше передвіщено стихійне лихо, тим більше можливостей підготуватися до нього. Важливим завданням є моделювання лікарських засобів, розвідка родовищ нафти і газу та інші об'ємні завдання, вирішення яких можливе за допомогою суперкомп'ютерів та кластерних систем. Сьогоднішня проблема - явний недолік апаратних засобів для паралельних обчислень в навчальних та наукових установах, що не дає можливості всебічного освоєння відповідних технологій; часто практикується суто теоретичне вивчення предмета призводить скоріше до негативних, ніж до позитивних наслідків. Тільки зараз з'являються технології, що дозволяють ввести практику паралельних обчислень в більшість навчальних та виробничих лабораторій. Створення ефективних паралельних програм вимагає набагато більш серйозного і поглибленого аналізу структури алгоритмів, ніж при традиційно-послідовному програмуванні, причому деякі підходи неможливо реалізувати без серйозної зміни мислення програмістів. Поряд з теоретичним аналізом для отримання практично значущих результатів необхідна постійна практика у створенні паралельних програм.

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. С. Немнюгин, О. Стесик. Параллельное программирование для многопроцессорных вычислительных систем

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

3. Гарви М.Дейтел. Введение в операционные системы (пер. с англ. Л.А.Теплицкого, А.Б.Ходулева, Вс.С.Штаркмана под редакцией Вс.С. Штаркмана). -М.: Мир, 1987 (электронная версия http://www.deepweb.ru, 2004)

4. Гергель В.П., Стронгин Р.Г. Основы параллельных вычислений для многопроцессорных вычислительных систем (учебное пособие, изд. 2, дополненное). -Н.Новгород.: изд. ННГУ им. Н.И.Лобачевского, -2003 (электронная версия http://pilger.mgapi.edu/metods/1441/basic_pr.zip).

5. Корнеев В.В. Вычислительные системы. -М.:Гелиос АРВ, -2004,-512с.

6. Шпаковский Г.И. Организация параллельных ЭВМ и суперскалярных процессоров. // Учеб. пособие. -Минск.: Белгосуниверситет, 1996. -296 с. (электронная версия http://pilger.mgapi.edu/metods/1441/spakovsk.zip)

7. Информационно-аналитические материалы по параллельным вычислениям (электронная версия http://parallel.ru)

Размещено на Allbest.ru


Подобные документы

  • Основні підходи до проектування баз даних. Опис сайту Інтернет-магазину, характеристика його підсистем для обробки анкет і запитів користувачів. Розробка концептуальної, інфологічної, даталогічної, фізичної моделей даних. Побудова ER-моделі в CASE-засоби.

    курсовая работа [2,3 M], добавлен 01.02.2013

  • Аналіз відомих підходів до проектування баз даних. Ієрархічна, мережева та реляційна моделі представлення даних, їх особливості. Концептуальне проектування: приклад документів, побудова ER-діаграми, модель "сутність-зв'язок". Побудова фізичної моделі.

    курсовая работа [541,5 K], добавлен 29.01.2013

  • Основні поняття та особливості розробки баз даних в Microsoft Access. Побудова бази даних магазину побутової техніки: створення таблиць та встановлення зв’язків між ними, створення запитів, форм та звітів. Охорона праці і гігієна користувача комп'ютера.

    курсовая работа [2,5 M], добавлен 19.01.2010

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

    контрольная работа [746,0 K], добавлен 18.02.2015

  • Аналіз предметної галузі, постановка задачі, проектування бази даних. UML-моделювання, побудова ER-діаграми, схеми реляційної бази даних у третій нормальній формі. Призначення і логічна структура. Опис фізичної моделі бази даних, програмної реалізації.

    курсовая работа [3,5 M], добавлен 28.11.2011

  • Поняття бази даних та основне призначення системи управління. Access як справжня реляційна модель баз даних. Можливості DDE і OLE. Модулі: Visual Basic for Applications програмування баз даних. Система управління базами даних Microsoft SQL Server 2000.

    реферат [41,2 K], добавлен 17.04.2010

  • Процес і результати проектування автоматизованої системи "Облік паспортних даних", призначеної для автоматизації обліку паспортних даних. Обґрунтування вибору методів та засобів обробки даних. Створення зручного графічного інтерфейсу користувача.

    курсовая работа [1,8 M], добавлен 23.09.2010

  • Аналіз відомих підходів до проектування баз даних. Моделі "сутність-зв'язок". Ієрархічна, мережева та реляційна моделі представлення даних. Організація обмежень посилальної цілісності. Нормалізація відносин. Властивості колонок таблиць фізичної моделі.

    курсовая работа [417,6 K], добавлен 01.02.2013

  • Розробка бази даних для меблевої фірми. Обстеження і аналіз предметної області та побудова концептуальної, логічної та фізичної моделі цієї бази даних. Використання мови програмування Visual Basic при написанні програмного коду, що обслуговує базу даних.

    курсовая работа [1,4 M], добавлен 24.10.2010

  • Використання баз даних та інформаційних систем. Поняття реляційної моделі даних. Ключові особливості мови SQL. Агрегатні функції і угрупування даних. Загальний опис бази даних. Застосування технології систем управління базами даних в мережі Інтернет.

    курсовая работа [633,3 K], добавлен 11.07.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.