Індексовані векторні операції

Терміни Gather (збирання, операція зчитування) і Scatter (розкладання, запис в пам'ять) характеризують дві основні векторні операції, синхронна паралельна реалізація яких пов'язана з труднощами. В принципі виникають проблеми під час векторизації індексованих доступів до даних.

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

 
 

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

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

 
 

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: