Opracowanie i testowanie oprogramowania realizującego

Transkrypt

Opracowanie i testowanie oprogramowania realizującego
PROGRAMOWE ŚRODOWISKO ZAUTOMATYZOWANEGO PROJEKTOWANIA
ARCHITEKTUR URZĄDZEŃ RÓWNOLEGŁYCH PRZEZNACZONYCH DO
IMPLEMENTACJI W FPGA I/LUB ASIC
Oleg Maslennikow, Andrzej Wąsik, Dariusz Gretkowski, Jerzy Kaniewski
Politechnika Koszalińska, Wydział Elektroniki
Streszczenie
Celem pracy jest stworzenie środowiska CAD zautomatyzowanego projektowania struktur
wyspecjalizowanych urządzeń równoległych (typu macierzy procesorowych). Środowisko zawiera
trzy współpracujące pomiędzy sobą programy umożliwiające konstruowanie i edycję grafów
regularnych algorytmów zadanych w postaci zagnieżdżonych pętli, a następnie ich odwzorowanie w
architektury np. macierzy procesorowych z wybranymi przez użytkownika parametrami. Środowisko
może być wykorzystane do uzyskania i optymalizacji struktur wyspecjalizowanych urządzeń w celu
ich dalszej implementacji w postaci ASIC lub na bazie FPGA. W pracy przedstawione zostały
podstawowe etapy opracowanej przez autorów metody odwzorowania algorytmów, oraz krótki opis
opracowanych programów. Testowanie elementów środowiska na przykładach algorytmów cyfrowego
przetwarzania sygnałów i algebry liniowej potwierdziło prawidłową pracę programów we wszystkich
trybach.
Realizacja licznych zadań DSP sprowadza się do rozwiązania algorytmów algebry liniowej w
czasie rzeczywistym[1,3]. Algorytmy DSP, takie jak cyfrowa filtracja, transformacja Fouriera,
rozwiązywanie układów liniowych, metoda najmniejszych kwadratów charakteryzują się dużą ilością
obliczeń [3,4]. Stwarza to konieczność realizacji tych algorytmów w specjalnych, wysokowydajnych
systemach obliczeniowych. Macierze procesorowe (PA) są przykładem tego typu struktur.
Wykorzystują one regularność wielu algorytmów w celu osiągnięcia wysokiej wydajności, a dzięki
znacznej ilości połączeń lokalnych nie wymagają dużej ilości wymienianej informacji poprzez układy
wej/wyj. Struktury macierzy procesorowych VLSI mogą być zaimplementowane [1,2,3,4,5] w
układach ASIC lub FPGA.
Zastosowanie systemów DSP w FPGA ma szereg korzyści takich jak pełne przystosowanie
implementowanych struktur FPGA do algorytmu, wysoka przepustowość, efektywność wykorzystania
sprzętu, uzyskanie dużej dokładności obliczeń. W pracy opisane zostały podstawowe etapy
proponowanej metodologii projektowania [4] struktur PA. Następnie na przykładzie algorytm filtracji
FIR przedstawiono syntezę struktury PA przystosowanej do wykonywania tego algorytmu.
1. WPROWADZENIE
Rozwój współczesnej technologii VLSI przyczynił się do pojawienia
reprogramowalnych cyfrowych układów scalonych FPGA. Struktura wewnętrzna takich
układów może być szybko i wielokrotnie zmieniana programowo przez użytkownika w celu
dopasowania jej do wykonywanych zadań [1, 2]. Takie układy przeznaczone są głównie do
konstruowania wydajnych wyspecjalizowanych systemów komputerowych (WSK) z
najkorzystniejszym w porównaniu do innych systemów obliczeniowych stosunkiem
wydajności do ceny i najkrótszym czasem projektowania i realizacji [3, 4]. Głównym
przeznaczeniem WSK jest praca w czasie rzeczywistym z sygnałami, które przy pomocy
przetworników A/D zostają przekształcone w wejściowe dane dla WSK. Z tego powodu WSK
zwykle są urządzeniami równoległymi (np. macierzami procesorowymi (MP)), operują z
danymi wejściowymi przedstawionymi w postaci macierzy lub wektorów i realizują regularne
algorytmy.
Wykorzystanie układów FPGA do realizacji WSK posiada kilka innych ważnych zalet:
wysoki współczynnik wykorzystania zasobów układu, dużą dokładność (precyzję) obliczeń,
oraz znaczne skrócenie czasu projektowania i weryfikacji od poziomu logicznego w
sprzętowego. W chwili obecnej istnieje kilka pakietów CAD zawierających emulatory
języków opisu sprzętu HDL [5,6] i programy do rozmieszczania i trasowania połączeń które
umożliwiają szybkie opracowanie schematu WSK na poziomie logicznym, jego modelowanie
oraz otrzymanie plików konfigurujących wewnętrzną strukturę układu FPGA. Brak natomiast
CAD-pakietów wykonujących odwzorowanie realizowanych algorytmów w architektury
wyspecjalizowanych systemów obliczeniowych, które pozwalają uzyskać zoptymalizowaną
według wybranych kryteriów strukturę WSK. Oprócz tego, proces odwzorowania nie jest do
końca zautomatyzowany i wymaga w wielu przypadkach zastosowania specjalnych metod
(np. ekwiwalentnych przekształceń grafów algorytmów). Dlatego w pracy opisane zostało
opracowane przez autorów środowisko zautomatyzowanego projektowania struktur
równoległych WSK typu macierzy procesorowych (MP) [7,8]. Środowisko zawiera trzy
współpracujące pomiędzy sobą programy pozwalające na konstruowanie i edycję grafów
algorytmów zadanych w postaci zagnieżdżonych pętli oraz ich odwzorowanie w architektury
MP. Środowisko może być wykorzystane do generacji i optymalizacji struktur MP w celu ich
dalszej implementacji w postaci ASIC, lub na bazie FPGA.
2. PODSTAWOWE ETAPY METODY ODWZOROWANIA REGULARNYCH
ALGORYTMÓW W ARCHITEKTURY MACIERZY PROCESOROWYCH
Macierze procesorowe mogą być projektowane w sposób systematyczny poprzez
zastosowanie liniowych odwzorowań algorytmów zadanych rekursywnie w postaci systemu
równań rekurencyjnych lub gniazd pętli [7,8,10-12].
Ogólnie, w procesie projektowania wyróżnić można następujące etapy:
1. Uzyskanie grafu zależności informacyjnych (GZI) algorytmu zadanego w formie
zagnieżdżonych pętli.
2. Odwzorowanie przydziału (ang. alocation mapping) poszczególnych obliczeń do
elementów przetwarzających (EP) systemu.
3. Odwzorowanie szeregujące (ang. schedule mapping) poszczególne obliczenia w czasie.
Zgodnie z opracowaną przez autorów metodą [8] odwzorowania regularnych
algorytmów na równoległe architektury wyspecjalizowanych urządzeń, pierwszą zasadniczą
fazą projektowania jest faza uzyskania regularnej grafowej reprezentacji algorytmu
wejściowego zadanego w postaci zagnieżdżonych pętli.
Druga faza polega na uzyskaniu zbioru architektur MP realizujących zadany algorytm. W tym
celu otrzymany wcześniej graf poddawany jest liniowym, przestrzenno-czasowym
odwzorowaniom F spełniającym określone warunki (brak konfliktów w dostępie do
elementów przetwarzających itp.). Ostatecznie znajdowana jest „najlepsza” architektura (ze
wszystkich możliwych), realizująca zadany algorytm zgodnie z kryteriami wybranymi przez
projektanta (np. ogólny czas realizacji algorytmu, przepustowość systemu, stopień
wykorzystania elementów przetwarzających, itd.).
Bardzo ważną zaletą pierwszej fazy jest możliwość wykonania ekwiwalentnych (np.
izomorficznych) przekształceń otrzymanego bazowego grafu zależności informacyjnych
algorytmu. Ważność tej zalety polega na tym, że dopuszczalne wartości przestrzennoczasowych odwzorowań F algorytmu nie mogą wychodzić poza pewną dziedzinę, którą
określa konkretna wersja jego grafu zależności informacyjnych. Wersja ta nie tylko
determinuje dopuszczalne topologie sieci połączeń między elementami przetwarzającymi MP,
lecz również częściowo określa porządek realizacji operatorów algorytmu. Dlatego dla
rozszerzenia zbioru schematów strukturalnych realizujących dany algorytm potrzebnym jest
wykonanie celowych transformacji bazowego grafu zależności informacyjnych,
odpowiadającego wykonaniu algorytmu zgodnie z zadanym porządkiem leksykograficznym.
Pozwala to wydobyć ukryte właściwości algorytmu i wykorzystać je do syntezy architektur
MP o pożądanych cechach takich, jak np. zoptymalizowana topologia sieci połączeń między
EP, zwiększony współczynnik wykorzystania EP, itd.
Dla algorytmu przedstawionego w postaci gniazda pętli z regularnymi zależnościami
informacyjnymi, jego graf zależności informacyjnych (GZI) wraz z macierzą zależności
informacyjnych D może być otrzymany w sposób analityczny [13,14], bądź też
wykorzystując opracowaną przez autorów metodę [9]. Metoda ta bazuje na symbolicznym
wykonaniu gniazda pętli, zgodnym z zadanym porządkiem leksykograficznym. W
przeciwieństwie do metod analitycznych, dana metoda jest łatwiejsze do implementacji w
systemach komputerowych, zapewniając jednocześnie możliwość operowania z szerszym
zakresem algorytmów użytkownika. Na przykład, pojawia się możliwość operowania nie
tylko z jednorodnymi algorytmami rekursywnymi, którym odpowiadają elementarne gniazda
pętli, lecz także z niejednorodnymi algorytmami, odpowiadającymi złożonym gniazdom pętli.
Oprócz tego, zaproponowana metoda pozwala na uzyskanie macierzy D zależności
informacyjnych algorytmu, przy czym wyznaczenie macierzy D nie wymaga, aby
konstruować GZI w sposób jawny. Ponieważ macierze zależności informacyjnych
wykorzystywane są w większości znanych metod projektowania dedykowanych MP, np.
[7,8,12,14], to opisana możliwość staje się szczególnie istotna dla algorytmów
charakteryzujących się wymiarem n > 3 (kiedy graf algorytmu trudno przedstawić w postaci
graficznej). Dlatego opracowane przez autorów środowisko zawiera program „Generator” do
konstruowania GZI regularnych algorytmów, edytor graficzny „Graf” do wizualizacji i
transformacji otrzymanych grafów oraz program „Designer” wykonujący liniowe,
przestrzenno-czasowe odwzorowanie F n-wymiarowego grafu algorytmu w m-wymiarowe
architektury MP. Każde z tych odwzorowań składa się z dwóch składowych: odwzorowania
przydziału FS i odwzorowania szeregującego FT, gdzie FS zadaje strukturę S urządzenia, FT funkcję T synchronizacji obliczeń, zaś wspólnie FS i FT determinują zbiór φ algorytmów
funkcjonowania EP. Dokładny opis metod realizowanych przez elementy składowe
opracowanego środowiska został przedstawiony w pracach [8,9].
3.
ŚRODOWISKO
ZAUTOMATYZOWANEGO
PROJEKTOWANIA
ARCHITEKTUR RÓWNOLEGŁYCH, WYSPECJALIZOWANYCH URZĄDZEŃ
Ze względu na wszechobecność systemu operacyjnego Windows’9X, wszystkie
programy środowiska pracują w tym systemie. Do realizacji aplikacji użyto pakietu Borland
Delphi. Zasadniczo, programy nie mają żadnych innych wymagań sprzętowych oprócz
systemu operacyjnego.
3.1. Program „GENERATOR” do konstrukcji grafów zależności informacyjnych
algorytmów
Program realizuje opracowaną przez autorów metodę konstruowania grafów zależności
informacyjnych algorytmów przedstawionych w postaci zagnieżdżonych pętli. Do analizy
program wykorzystuje kod źródłowy w języku PASCAL. Kod źródłowy może zawierać:
stałe, zmienne, zmienne indeksowane, instrukcje przypisania, złożone (begin ... end),
iteracyjne (for ... to ... do ...), warunkowe (if...then...else...). Główne Menu programu
przedstawiono na rys.1.
Rys.1. Okno główne programu „Generator”.
Dane wejściowe programu „Generator” mogą być wprowadzone na dwa sposoby:
• bezpośrednio. Program zawiera wbudowany mini-edytor tekstu, który ma możliwość
redagowania plików tekstowych.
• z pliku tekstowego (z rozszerzeniem .txt bądź .pas). Interesujący fragment kodu
(algorytm), może być wprowadzony bezpośrednio z istniejącego pliku, a następnie
poddany odpowiednim przekształceniom do postaci akceptowanej przez program.
Format danych wyjściowych został określony w taki sposób, aby był czytelny zarówno dla
użytkownika pracującego z programem, jak również przydatny dla programu rysującego graf.
Dane wyjściowe wyprowadzane są na ekran w postaci kolumn cyfr. Istnieje możliwość ich
edycji przed zapisaniem w postaci pliku tekstowego. Znaczenie poszczególnych kolumn
wyjaśnia rys.2 (pokazany fragment odpowiada algorytmowi eliminacji Gaussa). Na podstawie
kolejnych kolumn wyliczane są łuki grafu.
Bezpośrednio po uruchomieniu programu otwiera się okno główne programu (rys.1).
Praca z programem jest w dużej mierze intuicyjna. Układ menu jest zbliżony do menu
typowych edytorów tekstu środowiska Windows’9X. Dokumenty otwierają się każdy w
oddzielnym oknie, co umożliwia wspólną pracę na kilku dokumentach. Funkcje menu Okno
pozwalają odpowiednio układać okna dokumentów. Możliwe jest również drukowanie
dokumentów, zarówno pliku badanego, jak też pliku wynikowego. Szczególnie widoczne są
dwa klawisze na panelu: Generacja zależności informacyjnych i Zapis wyniku. Pierwszy
klawisz służy do rozpoczęcia badania kodu wejściowego. Po jego naciśnięciu na ekranie
ukazuje się dokument wynikowy. Wciśnięcie drugiego klawisza powoduje zachowanie
wyników w odpowiednim pliku *.txt. Jako przykład, na rys.1 w lewym okienku
przedstawiono zapis w Pascalu algorytmu eliminacji Gaussa, a w prawym górnym okienku –
wyniki pracy programu „Generator” dla drugiego gniazda pętli tego algorytmu dla macierzy
wejściowej A(4x4).
3.2. Edytor graficzny „GRAF”
Program „Graf” przeznaczony jest do wyświetlania grafów algorytmów oraz struktur
macierzy procesorowych, i w szczególności wykonuje następujące funkcje:
a) wizualizacja grafu w postaci trójwymiarowego rzutu na płaszczyznę z uwzględnieniem
skalowania oraz obrotu o dowolny kąt płaszczyznowy, np. j-k, i-k, i-j;
b) edycja grafu poprzez dodawanie oraz usuwanie wektorów i wierzchołków;
c) rzuty grafu na płaszczyzny określone współrzędnymi grafu np. j-k, i-k, i-j;
d) drukowanie otrzymanego grafu;
e) zapisanie wyniku pracy w postaci listy wektorów grafu w pliku tekstowym (rys.3);
Jako dane wejściowe program „Graf” wykorzystuje plik wyjściowy programu
„Generator” (w przypadku wizualizacji grafu algorytmu) lub plik wyjściowy programu
„Designer” (w przypadku wizualizacji struktury urządzenia) w formacie pliku wyjściowego
programu „Generator” (patrz. Rys.2). W powyższym pliku zawarte są informacje o
współrzędnych węzłów, o ich typie oraz o łukach które łączą wybrane węzły.
Program analizuje plik wejściowy, oblicza współrzędne wszystkich jego łuków, i po
dokonaniu tych wszystkich czynności wyświetla gotowy graf GZI.
W trakcie pracy programu możliwe jest edytowanie pliku wejściowego. Po dokonaniu tej
czynności program automatycznie aktualizuje wyświetlany graf. Po edycji grafu można
zapisać go także do pliku tekstowego *.txt, lecz o innej strukturze wewnętrznej. Format pliku
wyjściowego programu „Graf” przedstawiony został na rys. 3 (gdzie pokazany fragment
odpowiada algorytmowi eliminacji Gaussa).
Po uruchomieniu programu z plikiem wejściowym na ekranie pojawia się okno
edytora graficznego z odpowiednim kolorowym grafem przestrzennym (różny kolor
wierzchołków odpowiada różnym typom operacji algorytmu). Okno to przedstawione jest na
rys.4. Po prawej stronie okna edytora graficznego znajduje się panel narzędziowy
zawierający wszystkie funkcje wspomagające wizualizację grafu:
obrót grafu w trzech płaszczyznach jk,ik,ij o kąt - 180° ÷ +180° (3D rotate);
szybki obrót i rzut na każdą z trzech płaszczyzn jk,ik i ij (View side);
powiększenie - 500% ÷ +500% (Zoom);
przemieszczanie obiektu na płaszczyźnie w pionie i poziomie - 100% ÷ +100% (2D
position);
podział grafu na poszczególne płaszczyzny oraz grupy wektorów (Toggle view);
dodawanie wektora o współrzędnych i, j, k oraz kolorze (Add vector);
usuwanie wektora z listy wektorów (Remove vector);
współrzędne węzłów
typ węzła
numer węzła
c
1
2
3
4
5
6
7
8
w 1
i
0 1
1 1
2 1
2 1
2 1
2 1
0 1
0 1
2
j
2
3
2
3
3
3
4
4
Indeksy zmiennych
występujących w
algorytmie
3 [1,1] [1,2] [2,2]
k a[j,k] a[i,k] m[j,i]
2
21 12
22
3
21 13
23
4
21 14
24
2
31 12
32
3
31 13
33
4
31 14
34
2
41 12
42
3
41 13
43
Rys. 2. Format danych wyjściowych
programu „Generator” oraz danych
wejściowych
„Designer”
programów
Współrzędne węzła
rozpoczynającego łuk
Liczba porządkowa
from
1
(1,2,2)
2
(1,2,3)
3
(1,3,2)
4
(1,3,3)
5
(1,4,2)
6
(1,4,3)
7
(2,3,3)
8
(2,4,3)
→
→
→
→
→
→
→
→
→
„Graf”
Współrzędne węzła
kończącego łuk
to
(1,2,3)
(1,2,4)
(1,3,3)
(1,3,4)
(1,4,3)
(1,4,4)
(2,3,4)
(2,4,4)
i
Rys. 3. Format danych wyjściowych
wejściowych programów „Designer”
programu
„GRAF”
oraz
danych
Jako przykład, na rys.4 przedstawiono graf algorytmu eliminacji Gaussa (bez wyboru
elementu wiodącego) dla macierzy wejściowej A(4x4).
Rys. 4. Okno edytora graficznego programu „GRAF”.
3.3. Program DESIGNER odwzorowujący graf algorytmu w architektury macierzy
procesorowych
Program korzysta z dwóch plików wejściowych, które są plikami wyjściowymi
programów „GENERATOR” i „GRAF” (formaty plików zostały przedstawione na rys.2 i
rys.3). Z pierwszego pliku, zawierającego opis węzłów grafu odczytywana jest liczba n
określająca wymiar przestrzeni grafu, ilość węzłów, oraz współrzędne poszczególnych
węzłów. Na podstawie drugiego pliku tworzona jest macierz zależności informacyjnych
algorytmu D, zawierająca wszystkie różniące się od siebie łuki grafu.
W założeniach przyjęto, że liczba n może maksymalnie wynosić 3. Jest to
spowodowane tym, że jednym z plików wejściowych programu „DESIGNER” jest plik
wyjściowy programu „GRAF” , którego wygenerowanie jest możliwe jedynie w przypadku
gdy liczba n ≤ 3. Jeżeli podane przez użytkownika nazwy były prawidłowe, program otworzy
dwa okna zawierające dane z plików wejściowych (patrz rys.5).
Rys. 5. Główne okno programu “Designer”
W celu przeprowadzenia odwzorowania należy wybrać opcję ‘Run ‘ i zatem wybrać
wymiar struktury urządzenia oraz jedno lub kilka kryteriów optymalizacji otrzymywanych
rozwiązań (patrz odpowiednio rys.6 i rys.7). Po odczytaniu danych wejściowych program
generuje wszystkie możliwie warianty funkcji odwzorowań F. Dla każdego z tych wariantów
generowana jest struktura urządzenia, oraz parametry czasowe, które zostają następnie
zapisane w pliku wyjściowym.
Program zapisuje dwa pliki wyjściowe. W pierwszym pliku o nazwie zdefiniowanej
przez użytkownika znajdują się tylko te rozwiązania, które odpowiadają wybranym przez
użytkownika kryteriom (np. mają najmniejszą liczbę EP, lub czas realizacji algorytmu). Drugi
plik zawiera wszystkie możliwe rozwiązania (architektury). Obydwa pliki mają taką samą
strukturę, różnią się tylko ilością zawartych wariantów rozwiązań. Format plików
wyjściowych programu „Designer” przedstawiono na rys.8.
W pierwszej (górnej) części opisu wariantu rozwiązania znajdują się:
• macierze Fs i Ft określające odpowiednio strukturę urządzenia i kolejność obliczeń;
• czas wykonania algorytmu w taktach oraz ilość elementów przetwarzających;
• macierz Delta, określająca ilość i kierunek kanałów łączących EP w strukturze MP.
Rys. 6. Wybór wymiaru struktury docelowego
urządzenia
Rys. 7. Wybór parametrów docelowego
urządzenia.
W drugiej części opisu rozwiązania znajduje się macierz G1, której kolejne kolumny
oznaczają: nr węzła w grafie algorytmu (NR), typ węzła (TYP), współrzędne węzła (n
kolumn poczynając od trzeciej), nr taktu (TAKT), w którym dany węzeł będzie wykonany,
oraz współrzędne elementu przetwarzającego (NR EP), w którym dany węzeł zostanie
obliczony. Trzecia, ostatnia część opisu rozwiązania zawiera opis urządzenia. Kolumny tej
macierzy zawierają: nr porządkowy elementu przetwarzającego (NR), typ elementu
przetwarzającego (ST), oraz współrzędne elementu przetwarzającego (NR EP).
Przedstawiony na rys.8 fragment pliku wyjściowego odpowiada dwuwymiarowej strukturze
urządzenia do realizacji algorytmu eliminacji Gaussa.
Rys. 8. Format pliku wyjściowego programu “DESIGNER”
4. WNIOSKI
Celem pracy było stworzenie środowiska CAD zautomatyzowanego projektowania
struktur równoległych wyspecjalizowanych urządzeń (np. macierzy procesorowych).
Środowisko zawiera trzy współpracujące między sobą programy pozwalające na
konstruowanie i edycję grafów regularnych algorytmów zadanych w postaci zagnieżdżonych
pętli, a następnie ich odwzorowanie w architektury wyspecjalizowanych urządzeń z
wybranymi przez użytkownika parametrami. Testowanie składowych środowiska na
przykładach algorytmów cyfrowego przetwarzania sygnałów i algebry liniowej wykazało
prawidłową pracę programów we wszystkich trybach.
W obecnej wersji programy środowiska mają kilka istotnych ograniczeń, takich jak:
wymiar n przestrzeni grafu algorytmu, który może maksymalnie wynosić 3; parametry
czasowe rozwiązań generowane są jedynie w wypadku gdy n-m=1. W przyszłości
przewidziane jest usunięcie tych ograniczeń, poszerzenie możliwości edycji grafów, oraz
połączenie trzech programów w jedną całość.
LITERATURA
[1]. The Programmable Logic Data Book. Xilinx, Inc., 1999.
[2]. Altera Device Logic Data Book. Altera, Inc., 1999.
[3]. G.R. Goslin. A Guide to Using Field Programmable Gate Arrays (FPGAs) for
Application-Specific Digital Signal Processing Performance. Xilinx, Inc., 1995.
[4] J. Kaniewski, R. Berezowski, D. Gretkowski, O. Maslennikow, P. Sołtan, VHDL-models
of parallel fir digital filters. Workshop „Signal Processing’99”, Poznań, 1999, pp.95-100.
[5]. www.xilinx.com
[6]. www.aldec.com
[7]. Kung S.Y. VLSI processor arrays. Prentice Hall, Englewood Cliffs, 1988.
[8]. Wyrzykowski R., Kanevski J.S., Maslennikov O. Mapping recursive algorithms into
processor arrays. Proc. Int. Workshop „Parallel Numerics'94”, Smolenice, (Slovakia), 1994,
pp.169-191.
[9]. Wyrzykowski R., Kanevski J, Maslennikova N., Maslennikov O., Ovramenko S.
Formalized Construction Method of Array Functional Graphs for Regular Algorithms.
Engineering Simulation, 1997, Vol.14, pp.217-232.
[10]. Moreno J.H., Lang T. Matrix computations on systolic-type arrays. Kluwer Acad.Publ.,
Boston, 1992.
[11]. Darte A., Robert Y.: Mapping uniform loop nests onto distributed memory architectures.
Parallel Computing, 1994, 20, pp.679-710.
[12]. Shang W., Fortes J.A.B.: On time mapping of uniform dependence algorithms into
lower dimensional processor arrays. IEEE Trans. Parallel and Distr. Systems, 1992, 3, (3),
pp.350-363.
[13]. Barada H., El-Amawy A.: A methodology for algorithm regularization and mapping into
time-optimal VLSI arrays, Parallel Computing, 1993, V. 19, pp.33-61
[14]. Rajopadhye, S.V.: Synthesizing systolic arrays with control signals from recurrence
equations. Distributed Computing, 1989, 3, pp.88-105.