Що таке паралельні обчислення. Паралельні обчислення у WinNT. Поняття паралельних обчислень

Головна / Контакти

Міністерство освіти та науки Російської Федерації

Федеральне агентство з освіти

Південно-Російський державний технічний університет

(Новочеркаський політехнічний інститут)

Шахтинський інститут (філія) ЮРДТУ (НПІ)

ЛЕКЦІЇ З ДИСЦИПЛІНИ

«ПАРАЛЕЛЬНІ ВИЧИСЛЕННЯ»

Шахти-2010

Вступ

Основні поняття

1. Загальні питання вирішення "великих завдань";

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

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

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

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

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

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

2. Принципи побудови багатопроцесорних обчислювальних систем

2.1 Архітектура багатопроцесорних обчислювальних систем

2.2 Розподіл обчислень та даних у багатопроцесорних обчислювальних системах з розподіленою пам'яттю

2.3 Класифікація паралельних обчислювальних систем

2.4 Багатопроцесорні обчислювальні системи з розподіленою пам'яттю

2.4.1 Масивно-паралельні суперкомп'ютери серії Cry T3

2.4.2 Кластерні системи класу BEOWULF

Висновок

Список літератури

Вступ

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

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

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

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

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

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

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

Розглянемо два основні питання:

1. Багатопроцесорні обчислювальні системи - (масивно-паралельні суперкомп'ютери) Cray T3D(E) ​​з кількістю процесорів від 40 до 2176. Це суперкомп'ютери з розподіленою пам'яттю на RISC-процесорах типу Alpha21164A, з топологією комунікаційної мережі - та трансляторами для мов FORTRAN, HPF, C/C++. Підтримувані моделі програмування: MPI, PVM, HPF.

2. Беовульф-кластери робочих станцій. Кластери робочих станцій – сукупність робочих станцій, з'єднаних у локальну мережу. Кластер - обчислювальна система з розподіленою пам'яттю та розподіленим управлінням. Кластерна система може мати продуктивність, порівнянну з продуктивністю суперкомп'ютерів. Кластери робочих станцій зазвичай називають Беовульф-кластерами (Beowulf cluster – за однойменним проектом), пов'язані локальною мережею Ethernetта використовують операційну систему Linux.

Основні поняття

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

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

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

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

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

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

При старті програми завжди вважається, що всі породжені процеси працюють у рамках всеосяжного комунікатора. Цей комунікатор існує і служить взаємодії всіх запущених процесів MPI-программы. Усі взаємодії процесів протікають у межах певного комунікатора, повідомлення, передані у різних комунікаторах, не заважають одне одному.

Процесори зі скороченим набором команд (RISC). В основі RISC-архітектури (RISC – Reduced Instruction Set Computer) процесора лежить ідея збільшення швидкості його роботи за рахунок спрощення набору команд.

Дослідження показали, що 33% команд типової програми складають пересилання даних, 20% – умовні розгалуження та ще 16% – арифметичні та логічні операції. У переважній більшості команд обчислення адреси може бути виконано швидко за один цикл. Більш складні режими адресації використовуються приблизно 18% випадків. Близько 75% операнда є скалярними, тобто змінними цілого, речового, символьного типу і т. д., а інші є масивами і структурами. 80% скалярних змінних – локальні, а 90% структурних є світовими. Отже, більшість операндів – це локальні операнди скалярних типів. Вони можуть зберігатися у регістрах.

Згідно зі статистикою, більша частина часу витрачається на обробку операторів "виклик підпрограми"; і "; повернення з підпрограми";. При компіляції ці оператори породжують довгі послідовності машинних команд із великою кількістю звернень до пам'яті, тому якщо частка цих операторів становить лише 15%, вони споживають основну частину процесорного часу. Тільки близько 1% підпрограм мають понад шість параметрів, а близько 7% підпрограм містять понад шість локальних змінних.

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

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

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

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

1. Загальні питання вирішення "великих завдань";

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

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

1.1. Сучасні завдання науки та техніки, що вимагають

для вирішення суперкомп'ютери

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

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

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

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

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

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

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

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

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

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

Астрономія

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

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

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

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

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

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

Одне з найсерйозніших завдань – моделювання кліматичної системи та прогноз погоди. При цьому спільно чисельно вирішуються рівняння динаміки суцільного середовища та рівняння рівноважної термодинаміки. Для моделювання розвитку атмосферних процесів протягом 100 років та кількості елементів дискретизації 2,6×106 (сітка з кроком 10 по широті та довготі по всій поверхні Планети при 20 шарах по висоті, стан кожного елемента описується 10 компонентами) у будь-який момент часу стан земний атмосфери описується 2,6 107 числами. При кроці дискретизації за часом 10 хвилин за проміжок часу, що моделюється, необхідно визначити 5×104 ансамблів (тобто 1014 необхідних числових значень проміжних обчислень). Оцінюючи кількості необхідних отримання кожного проміжного результату обчислювальних операцій у 102÷103 загальна кількість необхідних проведення чисельного експерименту з глобальною моделлю атмосфери обчислень з плаваючою точкою сягає 1016÷1017.

Суперкомп'ютер з продуктивністю 1012 оп/сек при ідеальному випадку (повна завантаженість та ефективна алгоритмізація) виконуватиме такий експеримент протягом кількох годин; для проведення повного процесу моделювання необхідне багаторазове (десятки/сотні разів) прогін програми.

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

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

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

Недоліком методу оцінки пікової продуктивності як числа виконуваних комп'ютером команд за одиницю часу (MIPS, Million Instruction Per Second) дає лише саме загальне уявленняпро швидкодію, тому що не враховує специфіку конкретних програм (важко передбачувано, в яке число і яких саме інструкцій процесора відобразиться програма користувача).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Така ідилія тривала недовго через неефективне використання ресурсів дуже дорогих на той час комп'ютерів. Комп'ютери тоді не вимикалися, одна програма змінювала іншу.

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

Революційним кроком була поява у 1964 році операційної системифірми IBM - OS 360. З'явилася біля комп'ютера операційна системастала його повновладним господарем – розпорядником усіх його ресурсів. Тепер програма користувача могла бути виконана лише під керуванням операційної системи. Операційна системадозволяла вирішити дві важливі завдання - з одного боку забезпечити необхідний сервіс усім програмам, що одночасно виконуються на комп'ютері, з іншого - ефективно використовувати та розподіляти існуючі ресурси між програмами, які претендують на ці ресурси. Поява операційних систем призвела до переходу від однопрограмного режиму до мультипрограмного, коли на одному комп'ютері одночасно виконуються кілька програм. Мультипрограмуванняце ще не паралельне програмуванняале це крок у напрямку паралельних обчислень.

Мультипрограмування – паралельне виконання кількох програм. Мультипрограмування дозволяє зменшити загальний час виконання.

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

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

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

Для апаратури характерний експоненційний зростання, що відбито у відомому емпіричному законі Мура, - експоненційно зростали всі найважливіші характеристики - обсяг пам'яті всіх рівнях, зменшення часу доступу до пам'яті, швидкодія процесорів. Згідно із законом Мура (Гордон Мур – один із засновників фірми Intel) кожні півтора роки значення характеристик збільшувалися вдвічі. Зростало і кількість процесорів, що включаються до складу комп'ютера. Змінювалася і архітектура комп'ютера. Ці зміни багато в чому були кроками у бік розпаралелювання обчислень. Ось лише деякі зміни в архітектурі процесорів, пов'язані безпосередньо з процесом розпаралелювання:

  • Конвеєрна обробка команд. Процес виконання потоку команд процесором не розглядався як послідовне виконання команди за командою. Обробка потоку команд виконувалася на конвеєрі, тому відразу кілька команд готувалися до виконання. При конвеєрній обробці команди, не пов'язані між собою за даними, могли виконуватися одночасно, що вже є справжнім паралелізмом.
  • "Довгі команди". Архітектура деяких комп'ютерів включала кілька процесорів, що дозволяють виконувати логічні та арифметичні операції над цілими числами, кілька процесорів, що виконують операції над числами з плаваючою точкою. Довга команда дозволяла вказати в одній команді дії, які має виконати кожен із існуючих процесорів. Знову ж таки, це дозволяло реалізувати паралелізм на апаратному рівні.
  • Векторні та матричні процесори. У набір команд таких процесорів включаються базисні операції над векторами та матрицями. Однією командою, наприклад, можна скласти дві матриці. Така команда фактично реалізує паралельні обчислення. Програми, де ці операції становлять основу обробки даних, поширені. Реалізована апаратно-паралельна обробка даних дозволяє істотно підвищити ефективність роботи додатків цього класу.
  • графічні процесори. Ще одним важливим видом додатків, де на апаратному рівні відбувається паралельне виконання, є програми, що інтенсивно працюють з графічними зображеннями. Цю обробку здійснюють графічні процесори. Графічне зображенняможна розглядати як набір точок. Обробка зображення найчастіше зводиться до виконання однієї й тієї операції над усіма точками. Розпаралелювання за даними легко реалізується в такій ситуації. Тому графічні процесори давно вже стали багатоядерними, що дозволяє розпаралелити обробку та ефективно обробляти зображення.
  • Суперкомп'ютери. До суперкомп'ютерів відносять комп'ютери з максимальними характеристикамипродуктивність на даний момент. До їхнього складу входять сотні тисяч процесорів. Ефективне використання суперкомп'ютерів передбачає найширше розпаралелювання обчислень.

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

Класифікація комп'ютерів

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

  • SISD (Single Instruction stream – Single Data stream) – одиночний потік команд – одиночний потік даних. До цього класу відносяться звичайні "послідовні" комп'ютери з фон-Нейманівською архітектурою, коли команди програми виконуються послідовно, обробляючи черговий елемент даних.
  • SIMD (Single Instruction stream – Multiple Data stream) – одиночний потік команд – множинний потік даних. До цього типу належать комп'ютери з векторними та матричними процесорами.
  • MISD (Multiple Instruction stream – Single Data stream) – множинний потік команд – одиночний потік даних. До цього типу можна зарахувати комп'ютери з конвеєрним типом обробки даних. Однак багато хто вважає, що такі комп'ютери слід відносити до першого типу, а комп'ютери класу MISD поки не створені.
  • MIMD (Multiple Instruction stream – Multiple Data stream) – множинний потік команд – множинний потік даних. Клас MIMD надзвичайно широкий і нині до нього потрапляють багато комп'ютерів досить різної архітектури. Тому пропонуються інші класифікації, що дають змогу більш точно класифікувати комп'ютери, що входять до класу MIMD.

Ми не розглядатимемо детальну класифікацію комп'ютерів класу MIMD. Зупинимося тільки на іншому способі поділу комп'ютерів на три класи:

  • Мультипроцессорные обчислювальні комплекси - це комп'ютери, які мають безліч процесорів, що працюють на загальній пам'яті. У цей клас входить більшість багатоядерних комп'ютерів, що продаються сьогодні на ринку.
  • Мультикомп'ютерні обчислювальні комплекси - являють собою безліч комп'ютерів, з'єднаних високошвидкісними лініями зв'язку. Кожен комп'ютер має власну пам'ять і обмінюється повідомленнями з іншими комп'ютерами системи передачі даних. До цього класу входять кластери. Під кластером розуміється обчислювальний комплекс, що розглядається як єдине ціле, з деяким виділеним комп'ютером, що відіграє роль сервера. Оскільки комп'ютери, що входять до складу кластера, можуть бути звичайними комп'ютерами, то кластери відносно недорогі. Більшість суперкомп'ютерів, що входять до Top 500, є кластерами.
  • Гібридні обчислювальні комплекси - складаються з безлічі вузлів, кожен із яких може бути мультикомп'ютером, мультипроцесором, графічним чи векторним процесором. Такі комплекси, зазвичай, є суперкомп'ютерами.

Поточна версіясторінки поки що не перевірялася

Поточна версія сторінки поки не перевірялася досвідченими учасниками і може значно відрізнятися від перевіреної 5 жовтня 2014 року; перевірки вимагають.

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

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

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

У деяких паралельних системах програмування передача даних між компонентами прихована від програміста (наприклад, за допомогою механізму обіцянок), тоді як в інших вона повинна явно вказуватися. Явні взаємодії можуть бути поділені на два типи:

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

У паралелізму з розподіленою пам'яттю та з передачею повідомлень різні характеристики продуктивності. Зазвичай (але не завжди), накладні витрати пам'яті на процес і час на перемикання завдань у систем з передачею повідомлень нижче, проте передача самих повідомлень більш накладна, ніж виклики процедур. Ці відмінності часто перекриваються іншими чинниками, які впливають продуктивність.

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

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

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

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

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

Усі освітні курси, однак пов'язані з обчислювальної техніки чи її використанням, можна розділити на дві групи. У першій групі викладаються базові відомості, у другій – спеціальні. Базові відомості мають універсальний характер і слабо класифікуються за типами обчислювальної техніки. Сформувалися вони на основі знань про послідовні машини та послідовні обчислення і з часом змінюються мало. В рамках курсу з програмування базові відомості починають читатися з першого чи другого семестру, в рамках курсу за чисельними методами приблизно з третього семестру. Спеціальні курси, у тому числі які стосуються обчислювальних систем паралельної архітектури, починають читатися досить пізно. Як правило, не раніше сьомого чи навіть дев'ятого семестру.

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

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

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

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

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

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

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

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

Ця програма у певному сенсі максимальна. Проте вона цілком реальна. Безумовно, її не можна цілком реалізувати у кожному виші. Але на її основі для кожного конкретного вишу можна сформувати свою власну програмуосвіти у галузі обчислювальних наук.

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

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

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

Матеріали даних лекцій переконливо демонструють, наскільки важливим є добре знання графів алгоритмів та їх паралельних форм для розуміння тих проблем, з якими доводиться стикатися при вирішенні завдань на сучасних обчислювальних системах паралельної архітектури. Виклад відомостей про це найбільш природно включити до курсів з обчислювальної математики. Основний аргумент на користь такого рішення пов'язаний із тим, що інформаційна структура алгоритмів описується у тих самихіндексних системах, у яких відбувається виклад та чисельних методів. За великим рахунком, до існуючого курсу чисельних методів потрібно додати лише відомості про графи алгоритмів, набори розгорток для них та технологію використання всього цього. Безумовно, підготовка оновлених курсів потребує певної праці. Але не обов'язково обговорювати структури алгоритмів у викладі. Досить це зробити лише їх обчислювальних ядер. Поняття про графи алгоритмів та технологію потрібно викласти, швидше за все, на самому початку курсу. Однак граф та розгортки бажано давати для кожного алгоритму. На додаток до сказаного зауважимо, що одні й самі чисельні методи читаються без зміни протягом багатьох років, а інформацію про їхні структури потрібно підготувати лише один раз. І ці відомості свідомо будуть використовуватися багаторазово, причому в різних областях.

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

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

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

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

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

Основна труднощі введення в практикум завдань, пов'язаних з вивченням структури алгоритмів, є зараз доступного і простого у використанні програмного забезпечення для побудови графів алгоритмів і проведення на їх основі різних досліджень. По суті, є тільки одна система, яка реалізує подібні функції. Це система V-Ray, розроблена в Науково-дослідному обчислювальному центрі МДУ. Вона дає можливість для різних класів програм будувати графи алгоритмів та вивчати їхню паралельну структуру. Система V-Ray реалізована на персональному комп'ютері і залежить від цільового комп'ютера. Остання обставина винятково важлива для організації практикуму, оскільки частий вихід із дрібними завданнями на великі обчислювальні системи не дуже реальний навіть для вузів із гарним технічним оснащенням. На персональних комп'ютерах час освоєння завдань практикуму практично необмежено. В даний час V-Ray є складною дослідницькою системою. Не всі її функції необхідні організації практикуму. Згодом система V-Ray стане доступною для широкого використання. Інформацію про неї та її можливості можна отримати

© 2022 androidas.ru - Все про Android