З предмету: «Методи паралельних обчислень».
Тема: «Векторні обчислення».
Зміст.
Вступ.
1. Методи виконання векторних операцій.
2. Векторний співпроцесор IBM 3090.
3. Структура співпроцесора.
4.Висновок.
Список використаної літератури.
ВЕКТОРНІ ОБЧИСЛЕННЯ
Вступ.
Хоча продуктивність сучасних великих обчислювальних машин багаторазово зросла, існує клас задач, для яких їхні можливості як і раніше виявляються недостатніми. Ці задачі зв'язані з моделюванням реальних фізичних процесів у різних середовищах і вирішуються в таких галузях науки, як аеродинаміка, сейсмологія, метеорологія, ядерна фізика, фізика плазми і т.п. [WILS84].
Характерною рисою вищезгаданих задач є виконання одноманітних обчислювальних процедур з величезними масивами числових даних, що описують багатомірні фізичні поля, які змінюються динамічно. Для вирішення подібних задач розробляється окремий клас обчислювальних систем, що одержав назву суперкомп'ютерів. Такі системи повинні мати здатність виконувати сотні мільйонів арифметичних операцій у секунду над числами у форматі з плаваючою комою. Вартість існуючих систем цього класу досягає 10-15 млн. доларів. На відміну від великих обчислювальних машин (мейнфреймів), що проектуються в розрахунку на мультипрограмний режим роботи й інтенсивний обмін інформацією з периферійними пристроями, суперкомп'ютери оптимізовані з урахуванням особливостей числової обробки великих і надвеликих масивів даних.
Через велику вартість суперкомп'ютерів і їхньої спеціалізації на виконанні задач певного класу ринок таких систем досить обмежений. Їх застосовують тільки дуже потужні дослідницькі центри, що працюють, в основному, по урядових програмах. Незважаючи на величезні обчислювальні можливості сучасних суперкомп'ютерів, потреби наукових досліджень увесь час зростають.
У рамках цього напрямку розвивається клас комп'ютерів, орієнтованих на операції над векторами – так звані матричні процесори (array processor). Вони використовуються як співпроцесори для ефективної обробки векторизованих фрагментів програм.
1.Методи виконання векторних операцій
Нижче ми розповімо, у чому особливість операцій над векторними змінними і як ці операції виконуються в комп'ютерах різних класів. У комп'ютері загального призначення обробка векторів або масивів чисел у форматі з плаваючою комою організовується у вигляді циклічної процедури, причому в кожному циклі обробляється черговий елемент масиву. Розглянемо, наприклад, два вектори (одномірних числових масива) – А і В. Необхідно додати їх і помістити результат у вектор С. Для цього буде потрібно шість операцій додавання:
Як можна прискорити виконання подібних операцій? Необхідно впровадити паралелізм у тій або іншій формі.
Існує кілька підходів до впровадження ідей паралельного виконання операцій в обробку векторів. Найпростіше розглянути їх на конкретному прикладі перемножування квадратних матриць розміром . Формула для обчислення кожного елемента матриці результату має вигляд:
Тут , і – елементи матриць А, В і С.
Нижче представлений текст програми мовою FORTRAN, яку можна виконувати на будь-якому скалярному процесорі загального призначення.
DO 100 I=1,N DO 100 J=1,N C(I,J)= 0.0 DO 100 К=1,N
C(I,J)=C(I,J)+ A(I,K)*B(K,J) 100 CONTINUE
Один з методів підвищення продуктивності виконання подібних обчислень одержав назву векторної обробки. Цей метод припускає, що в програмі можна оперувати з одномірним вектором даних. Нижче представлена програма модифікованою мовою FORTRAN, у якому реалізована нова форма операторів, що дозволяє специфікувати операції над векторами.
DO 100 I=1,N C(I,J)= 0.0(J= 1,N) DO 100 К=1,N
C(I,J)=C(I,J)+ A(I,K)*B(K, J) (J=1,N) 100 CONTINUE
Член виду (J=1,N) означає, що операції над елементами з всіма індексами J у заданому інтервалі будуть виконуватися як єдина процедура. Про спосіб реалізації такого методу обчислень буде розказано нижче. У представленому тексті програми всі елементи в i-му рядку обчислюються паралельно. Кожен елемент у рядку являє собою суму, доданки якого обчислюються послідовно. Але навіть у цьому випадку потрібно тільки операцій векторного множення в порівнянні з операцій скалярного множення в попередньому варіанті.
Наступний варіант – паралельна обробка. Такий підхід припускає, що в нашому розпорядженні знаходиться N незалежних процесорів, що працюють паралельно. Для того щоб ефективно їх використовувати, потрібно якимось чином вказати, які обчислення повинні виконувати ці процесори. Для цього в мові програмування існує два типи директив. Директива FORK n указує, що паралельно виконувані процеси починаються в рядку програми з міткою n. Але вихідний процес продовжується оператором, що стоїть відразу за FORK. Кожне виконання директиви FORK породжує новий процес. Директива JOIN виконує роль, зворотну FORK. Вираз JOIN N вказує, що N незалежних процесів зливаються в один, котрий продовжується оператором, що стоїть відразу за JOIN. Координація такого злиття процесів покладається на операційну систему, і виконання загального процесу не відновляється доти, поки всі паралельні незалежні процеси не завершаться.
Нижче представлений текст програми паралельної обробки, що за формою мало відрізняється від першого з розглянутих варіантів тексту. Але в даному випадку кожний стовпець С обчислюється окремим процесом, і, отже, елементи певного рядка матриці обчислюються паралельно.
DO 50 J= 1,N
FORK 100 5 0 CONTINUE
J = N 100 DO 200 I = 1,N
C(I,J) = 0.0
DO 200 ДО = 1,N
C(I,J)= C(I,J)+A(I,K)*B(K,J) 200 CONTINUE JOIN N
Ми описали підходи до логічної організації векторних обчислень. Тепер розглянемо, яка повинна бути структура процесорів, здатних реалізувати ці підходи. Можна виділити три основних категорії:
процесор з конвеєрними АЛП;
процесор з паралельними АЛП;
паралельні процесори.
На рис. 6.1 представлені схеми двох перших варіантів. Конвеєрну організацію обробки машинних команд у процесорі ми вже розглядали в главі 11. На представленій схемі концепція конвеєра поширена і на організацію АЛП.
Оскільки арифметичні операції з числами у форматі з плаваючою комою досить складні, можна розбити кожну операцію на окремі фази і виконувати ці фази паралельно з різними числами (рис. 6.2,а). Операція додавання розділена на чотири фази –