6. Zavisnosti po podacima u programskim petljama

Σχετικά έγγραφα
3.1 Granična vrednost funkcije u tački

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET SIGNALI I SISTEMI. Zbirka zadataka

SISTEMI NELINEARNIH JEDNAČINA

Osnovni primer. (Z, +,,, 0, 1) je komutativan prsten sa jedinicom: množenje je distributivno prema sabiranju

Elementi spektralne teorije matrica

DISKRETNA MATEMATIKA - PREDAVANJE 7 - Jovanka Pantović

PRAVA. Prava je u prostoru određena jednom svojom tačkom i vektorom paralelnim sa tom pravom ( vektor paralelnosti).

Teorijske osnove informatike 1

Ispitivanje toka i skiciranje grafika funkcija

Iskazna logika 3. Matematička logika u računarstvu. novembar 2012

41. Jednačine koje se svode na kvadratne

a M a A. Može se pokazati da je supremum (ako postoji) jedinstven pa uvodimo oznaku sup A.

Deljivost. 1. Ispitati kada izraz (n 2) 3 + n 3 + (n + 2) 3,n N nije deljiv sa 18.

M086 LA 1 M106 GRP. Tema: Baza vektorskog prostora. Koordinatni sustav. Norma. CSB nejednakost

Zadaci sa prethodnih prijemnih ispita iz matematike na Beogradskom univerzitetu

IZVODI ZADACI ( IV deo) Rešenje: Najpre ćemo logaritmovati ovu jednakost sa ln ( to beše prirodni logaritam za osnovu e) a zatim ćemo

III VEŽBA: FURIJEOVI REDOVI

KOMUTATIVNI I ASOCIJATIVNI GRUPOIDI. NEUTRALNI ELEMENT GRUPOIDA.

2 tg x ctg x 1 = =, cos 2x Zbog četvrtog kvadranta rješenje je: 2 ctg x

IZVODI ZADACI (I deo)

Osnovne teoreme diferencijalnog računa

5. Karakteristične funkcije

2log. se zove numerus (logaritmand), je osnova (baza) log. log. log =

Zavrxni ispit iz Matematiqke analize 1

18. listopada listopada / 13

5 Ispitivanje funkcija

Pismeni ispit iz matematike Riješiti sistem jednačina i diskutovati rješenja sistema u zavisnosti od parametra: ( ) + 1.

Računarska grafika. Rasterizacija linije

MATRICE I DETERMINANTE - formule i zadaci - (Matrice i determinante) 1 / 15

Algoritmi i strukture podataka - 1.cas

7 Algebarske jednadžbe

ELEKTROTEHNIČKI ODJEL

PARCIJALNI IZVODI I DIFERENCIJALI. Sama definicija parcijalnog izvoda i diferencijala je malo teža, mi se njome ovde nećemo baviti a vi ćete je,

MATEMATIKA 2. Grupa 1 Rexea zadataka. Prvi pismeni kolokvijum, Dragan ori

PID: Domen P je glavnoidealski [PID] akko svaki ideal u P je glavni (generisan jednim elementom; oblika ap := {ab b P }, za neko a P ).

SOPSTVENE VREDNOSTI I SOPSTVENI VEKTORI LINEARNOG OPERATORA I KVADRATNE MATRICE

Operacije s matricama

numeričkih deskriptivnih mera.

radni nerecenzirani materijal za predavanja R(f) = {f(x) x D}

Kontrolni zadatak (Tačka, prava, ravan, diedar, poliedar, ortogonalna projekcija), grupa A

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.

IspitivaƬe funkcija: 1. Oblast definisanosti funkcije (ili domen funkcije) D f

Računarska grafika. Rasterizacija linije

Dvanaesti praktikum iz Analize 1

RAČUNSKE VEŽBE IZ PREDMETA POLUPROVODNIČKE KOMPONENTE (IV semestar modul EKM) IV deo. Miloš Marjanović

DRUGI KOLOKVIJUM IZ MATEMATIKE 9x + 6y + z = 1 4x 2y + z = 1 x + 2y + 3z = 2. je neprekidna za a =

APROKSIMACIJA FUNKCIJA

( ) π. I slučaj-štap sa zglobovima na krajevima F. Opšte rešenje diferencijalne jednačine (1): min

Verovatnoća i Statistika I deo Teorija verovatnoće (zadaci) Beleške dr Bobana Marinkovića

INTEGRALNI RAČUN. Teorije, metodike i povijest infinitezimalnih računa. Lucija Mijić 17. veljače 2011.

Pismeni ispit iz matematike GRUPA A 1. Napisati u trigonometrijskom i eksponencijalnom obliku kompleksni broj, zatim naći 4 z.

Konstruisati efikasan algoritam znači dati skup preciznih uputstava kako doći do rešenja zadatog problema Algoritmi se mogu opisivati:

Klasifikacija blizu Kelerovih mnogostrukosti. konstantne holomorfne sekcione krivine. Kelerove. mnogostrukosti. blizu Kelerove.

Jednodimenzionalne slučajne promenljive

TRIGONOMETRIJSKE FUNKCIJE I I.1.

(P.I.) PRETPOSTAVKA INDUKCIJE - pretpostavimo da tvrdnja vrijedi za n = k.

Program testirati pomoću podataka iz sledeće tabele:

Apsolutno neprekidne raspodele Raspodele apsolutno neprekidnih sluqajnih promenljivih nazivaju se apsolutno neprekidnim raspodelama.

4 Izvodi i diferencijali

Algebarske strukture sa jednom operacijom (A, ): Ako operacija ima osobine: zatvorenost i asocijativnost, onda je (A, ) polugrupa

1. zadatak , 3 Dakle, sva kompleksna re{ewa date jedna~ine su x 1 = x 2 = 1 (dvostruko re{ewe), x 3 = 1 + i

Prvi pismeni zadatak iz Analize sa algebrom novembar Ispitati znak funkcije f(x) = tgx x x3. 2. Naći graničnu vrednost lim x a

Veleučilište u Rijeci Stručni studij sigurnosti na radu Akad. god. 2011/2012. Matematika. Monotonost i ekstremi. Katica Jurasić. Rijeka, 2011.

Univerzitet u Nišu, Prirodno-matematički fakultet Prijemni ispit za upis OAS Matematika

Trigonometrijske nejednačine

Zadaci iz trigonometrije za seminar

Riješeni zadaci: Limes funkcije. Neprekidnost

IZRAČUNAVANJE POKAZATELJA NAČINA RADA NAČINA RADA (ISKORIŠĆENOSTI KAPACITETA, STEPENA OTVORENOSTI RADNIH MESTA I NIVOA ORGANIZOVANOSTI)

5 Sistemi linearnih jednačina. a 11 x 1 + a 12 x a 1n x n = b 1 a 21 x 1 + a 22 x a 2n x n = b 2.

KVADRATNA FUNKCIJA. Kvadratna funkcija je oblika: Kriva u ravni koja predstavlja grafik funkcije y = ax + bx + c. je parabola.

ASIMPTOTE FUNKCIJA. Dakle: Asimptota je prava kojoj se funkcija približava u beskonačno dalekoj tački. Postoje tri vrste asimptota:

radni nerecenzirani materijal za predavanja

Matematička analiza 1 dodatni zadaci

Riješeni zadaci: Nizovi realnih brojeva

Sume kvadrata. mn = (ax + by) 2 + (ay bx) 2.

VJEŽBE 3 BIPOLARNI TRANZISTORI. Slika 1. Postoje npn i pnp bipolarni tranziostori i njihovi simboli su dati na slici 2 i to npn lijevo i pnp desno.

4.7. Zadaci Formalizam diferenciranja (teorija na stranama ) 343. Znajući izvod funkcije x arctg x, odrediti izvod funkcije x arcctg x.

Zadaci iz Osnova matematike

( ) ( ) 2 UNIVERZITET U ZENICI POLITEHNIČKI FAKULTET. Zadaci za pripremu polaganja kvalifikacionog ispita iz Matematike. 1. Riješiti jednačine: 4

Strukture podataka i algoritmi 1. kolokvij 16. studenog Zadatak 1

6 Polinomi Funkcija p : R R zadana formulom

1.4 Tangenta i normala

I Pismeni ispit iz matematike 1 I

XI dvoqas veжbi dr Vladimir Balti. 4. Stabla

Bulove jednačine i metodi za njihovo

Trigonometrija 2. Adicijske formule. Formule dvostrukog kuta Formule polovičnog kuta Pretvaranje sume(razlike u produkt i obrnuto

Sistemi veštačke inteligencije primer 1

Linearna algebra 2 prvi kolokvij,

1 Afina geometrija. 1.1 Afini prostor. Definicija 1.1. Pod afinim prostorom nad poljem K podrazumevamo. A - skup taqaka

8 Funkcije više promenljivih

Glava 1. Realne funkcije realne promen ive. 1.1 Elementarne funkcije

ELEMENTARNE FUNKCIJE dr Jelena Manojlović Prirodno-matematički fakultet, Niš

Otpornost R u kolu naizmjenične struje

Fakultet tehničkih nauka, Softverske i informacione tehnologije, Matematika 2 KOLOKVIJUM 1. Prezime, ime, br. indeksa:

7. Optimizacija petlji - softverska protočnost

ELEMENTARNA MATEMATIKA 2

Linearna algebra 2 prvi kolokvij,

nvt 1) ukoliko su poznate struje dioda. Struja diode D 1 je I 1 = I I 2 = 8mA. Sada je = 1,2mA.

Sistemi linearnih jednačina

Ispit održan dana i tačka A ( 3,3, 4 ) x x + 1

Transcript:

Instrukcijski nivo paralelizma 63 Zavisnosti po podacima u petljama 6. Zavisnosti po podacima u programskim petljama 6.1. Granice petlje Granice programske petlje definiše ili programer ili razvojni alat u izvornom programu. Te granice u prevodiocima sekvencijalnih mašina preuzimao je prevodilac i sa takvim unapred definisanim iteracijama, kao ograničenjem, radio optimizacije. Programer ne može da bude opterećen još i analizom zavisnosti po podacima u toku pisanja programa, ali se može pretpostaviti da promene granice programske petlje mogu da dovedu do boljeg kôda za paralelizaciju. Već kod primene Trace scheduling-a na petlje, donekle je razmotavanjem promenjena granica petlje, jer su stapane stare iteracije. Pretpostavimo da u programskom kôdu postoji jednostavna petlja sa samo tri instrukcije (operacije), označene sa Op 1, Op 2 i Op 3 koja treba da se izvrši n puta. Tada se petlja može predstaviti sa {Op 1, Op 2, Op 3 } n. Potpuno ekvivalentan kôd dobija se ako se napiše kôd npr. Op 1, Op 2 {Op 3 Op 1, Op 2 } n 1 Op 3. Ako je operacija Op 3 bila zavisna po podacima od operacije Op 2 unutar originalne iteracije, tada se pojavila zavisnost po podacima preko granica iteracije. Pritom u svakoj novoj iteraciji sem prve, prva operacija Op 3 postaje zavisna od poslednje operacije iz prethodne iteracije. Takve zavisnosti po podacima nazivaju se petljom prenete zavisnosti po podacima (loop carried data dependencies). Programer je mogao da u izvornom kôdu napiše bilo koju od te dve prethodne iteracije, pa je samim tim mogao da odredi da li su neke zavisnosti po podacima petljom prenete ili unutar iteracije. Primer 6.1. Pretpostavimo da je programer napisao sledeću programsku petlju: Op 1 : Op 2 : Op 3 : Op 4 : Op 5 : Op 6 : DO I = 3,100 A(I) := C(I-1) + E(I-2) B(I) := A(I) * C(I-3) C(I) := B(I) * K1 D(I) := D(I-1) + K2 E(I) := C(I) + D(I) F(I) := C(I-1) + E(I) END Da bi se sagledale sve zavisnosti po podacima, kako one unutar iteracije, tako i one za operacije iz različitih iteracija, najpogodnije je posmatrati zavisnost po podacima na grafu beskonačno razmotane petlje. U cilju sagledavanja zavisnosti po podacima na prihvatljivo velikom uzorku, napravljen je graf zavisnosti po podacima za četiri iteracije. Pritom, horizontalne zadebljane linije predstavljaju granice iteracija i sve grane koje

Instrukcijski nivo paralelizma 64 Zavisnosti po podacima u petljama prelaze granice iteracija prikazuju zavisnosti po podacima operacija iz različitih iteracija (prikazane su isprekidanim linijama). Zbog preglednosti grafa, izostavljena je zavisnost od Op 3 prethodne iteracije ka Op 6 naredne iteracije, jer se radi o tranzitivnoj grani. Sl. 6.1. Četiri iteracije razmotane petlje iz Primera 6.1.

Instrukcijski nivo paralelizma 65 Zavisnosti po podacima u petljama U programskim petljama radi se repetitivna obrada i rezultati se najčešće smeštaju u strukturirane tipove podataka, pre svega nizove. Određivanje zavisnosti po podacima u programskim petljama za nizove nije u opštem slučaju trivijalno i detaljno je razmatrano u narednom tekstu. 6.2. Generalizacija problema zavisnosti kod petlji i sistemi Diofantskih jednačina U vreme prevođenja (statički), zavisnosti po podacima ne mogu se generalno ustanoviti kada u programu postoji referenciranje preko pointera (pokazivača). Kada referenciramo pomoću pokazivača (izračunavanje vrednosti pokazivača obavlja se u toku izvršavanja), u vreme prevođenja ne može se znati na koju lokaciju će pokazivati pokazivač. Drugi najvažniji slučaj kada se statički ne mogu uvek utvrditi zavisnosti po podacima je za operacije iz različitih iteracija petlje i on će detaljno biti izložen u ovom poglavlju. Problem zavisnosti po podacima kod petlji biće krajnje generalno postavljen. Mnogi autori predlažu da se pre analize zavisnosti urade transformacije kojima se olakšava otkrivanje zavisnosti po podacima, i izbacuju redundanse vezane za indekse petlji. Ti postupci su: normalizacija petlji, zamena indeksne promenljive i presavijanje izraza. Opisani su u {AK87} i nisu analizirani u ovom radu. Posmatrajmo prvo najjednostavniji slučaj - zavisnost po podacima za niz koji ima samo jednu dimenziju i kada postoji samo jedna normalizovana programska petlja (nema ugnježdavanja petlji). Ovaj najjednostavniji opšti slučaj može se predstaviti na sledeći način: DO i = 1, N X(f(i)) =... = F(X(g(i))) END DO Definisanje fiksnog broja iteracija ne umanjuje generalnost petlje, jer će kasnije biti analiziran slučaj kada N nije poznato u vreme prevođenja. Ovde su funkcije f(i) i g(i) izrazi za indeks vektora X, a F je izraz koji sadrži g(i) element vektora X. Pretpostavimo da vektori imaju indekse koji polaze od 1. Funkcije f i g uzimaju vrednosti iz skupa prirodnih brojeva, jer su u pitanju indeksi vektora. Zavisnost po podacima postoji, ako postoje takvi indeksi i 1 i i 2 da važi: f(i 1 ) = g(i 2 ) Na ovaj način otkrivamo i prave zavisnosti i antizavisnosti po podacima. Da bi se analizirale samo prave zavisnosti po podacima, mora se dodati uslov 1 i 1 i 2 N. Kako se antizavisnosti mogu eliminisati preimenovanjem, u daljoj analizi će se ovaj uslov smatrati jedinim neophodnim da postoji zavisnost po podacima. Oba indeksa petlje i 1 i i 2 moraju istovremeno biti manja ili jednaka od N da bi postojala zavisnost, jer će se

Instrukcijski nivo paralelizma 66 Zavisnosti po podacima u petljama izvršiti samo N iteracija petlje. Prethodno navedenim postupcima normalizacije petlji, početna vrednost indeksa proizvoljne petlje, transformacijama se uvek može svesti na vrednost 1. Dakle, gornja dva uslova se svode na rešavanje jednačine: f(x) - g(y) = 0 u datom opsegu brojeva [1, N], pri čemu mora da važi 1 x y N. Pritom su x, y, f(x) i g(y) svi iz skupa prirodnih brojeva. Najčešći slučaj u kôdu je da su f i g linearne funkcije indeksa petlji. Gornja jednačina, se uz tu pretpostavku linearnosti: transformiše u: f(x) = a 1 x + a 0 g(y) = b 1 y + b 0, a 1 x - b 1 y = b 0 - a 0 (6.1.1.) pri čemu su svi koeficijenti celi brojevi. Najveći broj slučajeva kada f i g nisu linearne funkcije petlji je kada neka od vrednosti koeficijenata a 1, a 0, b 1, ili b 0 nije celobrojna konstanta, već celobrojna promenljiva nezavisna od samog izvršavanja petlji ili parametar potprograma. Dobijeni izraz se može transformisati u opšti oblik linearne Diofantske jednačine koja se za dve promenljive predstavlja kao: ax - by = n (6.1.2.) Definicija. Linearna Diofantska jednačina je jednačina koja ima oblik: N a i x i = n, i= 1 gde je N 1, n Z (Z - skup celih brojeva), a i Z za svako i, postoji bar jedno a i koje je različito od nule i x i su celobrojne promenljive. Linearna Diofantska jednačina sa dve promenljive (6.1.2.) navedena gore, ima rešenje ako i samo ako je najveći zajednički delitelj (NZD) brojeva a i b delilac broja n. Na ovom uslovu baziran je jedan od najjednostavnijih testova utvrđivanja zavisnosti po podacima - takozvani GCD (Greatest Common Divisor) test. 6.2.1. GCD test GCD test zasniva se na teoriji Diofantskih jednačina, koja se odnosi na rešavanje sistema linearnih jednačina, ako je broj jednačina manji od broja nepoznatih. Ovaj test ima nedostatak za paralelizaciju petlji, jer se uslov proverava u celokupnom opsegu celih brojeva, a ne u opsegu vrednosti definisanom granicama petlje. GCD test važi i za opštu linearnu Diofantsku jednačinu. U daljem tekstu navedena je teorema koja daje potrebne i dovoljne uslove za postojanje rešenja opšte linearne Diofantske jednačine sa N promenljivih. Teorema o postojanju rešenja linearne Diofantske jednačine. Neka je N a i x i = n i= 1

Instrukcijski nivo paralelizma 67 Zavisnosti po podacima u petljama linearna Diofantska jednačina i neka je k = NZD(a 1, a 2, a 3, a 4,... a n ). Jednačina ima rešenja ako i samo ako važi da je k delilac broja n. Dokaz. Dokaz je sproveden samo za N = 2, jer se opšti slučaj dokazuje matematičkom indukcijom. Neka a x + b y = c označava linearnu Diofantsku jednačinu, i neka je g = NZD(a,b). Dokažimo prvo da ako je g delilac broja c, što se piše kao g c, linearna Diofantska jednačina ima rešenja. Dakle, ako važi da je g = NZD(a,b), tada prema poznatoj teoremi (Bezuova teorema) iz teorije brojeva postoje celi brojevi u i v, takvi da važi: g = a u + b v Sa druge strane, pošto je g delilac broja c, postoji celi broj c takav da važi: g c = c Iz ovih dveju jednakosti sledi g c = a u c + b v c = a (u c ) + b (v c ) = c. Iz zadnje jednakosti proizilazi da Diofantska jednačina ima rešenje (u c, v c ) = (u c/g, v c/g). Dokažimo sada da ako linearna Diofantska jednačina ima rešenje, onda mora važiti i da je g c. Pretpostavimo da jednačina ima rešenje (x 0, y 0 ). Tada važi da je: a x 0 + b y 0 = c. (6.1.3) Iz činjenice da g a i g b, direktno zaključujemo da postoje celi brojevi a i b tako da važe sledeće jednakosti: g a = a i g b = b Jednačinu (6.1.3.) možemo sada napisati na sledeći način: g a x 0 + g b y 0 = c. Iz ove jednakosti direktno zaključujemo da i g c, odnosno da je g delilac broja c. Iz ove teoreme neposredno se zaključuje da za slučaj jednačine sa dve promenljive (6.1.1.) potreban uslov za postojanje zavisnosti po podacima po GCD testu postaje: NZD(a 1, b 1 ) (b 0 - a 0 ), odnosno da je NZD(a 1, b 1 ) delilac broja (b 0 - a 0 ). Potrebno je uočiti da je GCD test samo potreban uslov za zavisnost po podacima, zato što je neophodno da celobrojna rešenja postoje unutar oblasti x y, kao što je prikazano na Slici 6.2. Ova oblast važenja posledica je činjenice da u inicijalnoj petlji, promenljiva iz ranije iteracije ne može da bude zavisna po podacima od operacije iz kasnije iteracije.

Instrukcijski nivo paralelizma 68 Zavisnosti po podacima u petljama y y = x x Slika 6.2. Oblast prihvatljivih rešenja GCD test ne uzima u obzir ni granice petlji, pa ukoliko postoji rešenje jednačine, ono može da bude u granicama opsega petlje ili izvan opsega. Zato se postupa na sledeći način: 1. Ako najveći zajednički delitelj od a i b nije delilac broja n, sigurno ne postoji rešenje jednačine, pa samim tim ni zavisnost po podacima. 2. Ako je najveći zajednički delitelj brojeva a i b delilac broja n, onda postoji rešenje u skupu celih brojeva. Zato postoji i zavisnost po podacima za opseg vrednosti indeksa petlje jednak celim brojevima. Međutim, tada zavisnost po podacima u stvarnom opsegu indeksa petlje može, ali ne mora da postoji. Kako ne postoji siguran zaključak, u većini optimizacionih metoda pretpostavlja se da zavisnost po podacima postoji. Ako se sva optimizacija radi u vremenu prevođenja, mora se tada pretpostaviti postojanje zavisnosti, kako bi bili sigurni u ispravnost paralelnog kôda. Ako se optimizacija radi i u toku izvođenja programa, tada se dinamički ponovo proveravaju zavisnosti po podacima, pa će se pogrešna pretpostavka iz vremena prevođenja moći korigovati u toku izvršavanja. Tada se može gubiti samo na brzini izvršavanja, zbog pogrešne pretpostavke o zavisnostima u vreme prevođenja, ali ne i na tačnosti izvršavanja kôda. Ove konstatacije će biti jasnije nakon poglavlja o superskalarnim procesorima. Kao čest rezultat konzervativnog tumačenja GCD testa u fazi prevođenja, događa se da pretpostavimo da zavisnost po podacima postoji, iako ona stvarno ne postoji u opsegu indeksa petlje. Ovo očigledno predstavlja veliki nedostatak GCD testa, kada se on primenjuje kao jedino sredstvo za određivanje zavisnosti po podacima kod programskih petlji. 6.2.2. Banerjee test Banerjee test traži sva rešenja Diofantske jednačine samo u oblasti od interesa {BAN 88}. Kod njega se prilikom traženja rešenja uzimaju u obzir i granice petlji koje definišu

Instrukcijski nivo paralelizma 69 Zavisnosti po podacima u petljama oblast u kojoj bi trebalo da se nađu rešenja. Međutim, on daje odgovor na pitanje da li u toj oblasti postoje realna, a ne celobrojna rešenja, uz uslov da se tretiraju samo prave zavisnosti po podacima. Suština testa zasniva se na sledećem: ako je h(x, y) kontinualna funkcija u domenu realnih brojeva, tada postoji rešenje funkcije h(x, y) = a u skupu realnih brojeva, gde je a realni broj, ako i samo ako važi sledeći uslov: min h(x, y) < a < max h(x, y) U našem slučaju funkcija h(x, y) je f(x) - g(y), a a = 0. Pošto su f(x) i g(y) po pretpostavci linearne funkcije, a samim tim i kontinualne, onda je i funkcija h(x, y) = f(x) - g(y) kontinualna. Prema tome, trebalo bi proveriti da li su minimum i maksimum funkcije h(x, y) u domenu 1 x y N različitog znaka. Ako je ovaj uslov ispunjen, tada postoji realna nula u datom domenu. To još uvek ne znači da postoji i celobrojna nula. Kada gornji uslov nije ispunjen, to znači da nema realnih nula, a samim tim nema ni celobrojnih nula, pa sigurno nema ni zavisnosti po podacima. Međutim, kada je gornji uslov ispunjen, ne može se sa sigurnošću tvrditi da li su postojeće nule realne ili celobrojne, pa, ako se oslanjamo samo na statičko određivanje zavisnosti po podacima, moramo pretpostaviti da zavisnost postoji. Test se jednostavno izvodi pronalaženjem minimuma i maksimuma funkcije h = f - g u zadatom opsegu. Na osnovu razlike znaka minimuma i maksimuma određuje se da li nula pripada opsegu rešenja. Pošto GCD i Banerjee test testiraju da li postoje rešenja polazeći od potpuno drugih polaznih pretpostavki, bilo bi za očekivati da su međusobno komplementarni {TEO 93}, {LA 97}. Opširni testovi različitih autora su pokazali da te komplementarnosti nema. 6.2.3. Totalni test Totalni test podrazumeva iscrpno ispitivanje f(i 1 ) = g(i 2 ) za sve moguće parove vrednosti i 1 i i 2 koje zadovoljavaju uslov 1 i 1 i 2 N. Ovaj test daje sigurno rešenje, ali ne može se primeniti u prevodiocima, izuzev za male vrednosti N. Ako se pređe na slučaj višedimenzionih nizova u više ugnježdenih petlji, potpuno je neprimenjiv. 6.2.4. Redukovani test Ovaj test se zasniva na proširenom Euklidovom algoritmu. Osnovna ideja je da se na osnovu ovog algoritma nađe jedno rešenje jednačine. Međutim, pokazano je da su rešenja linearne Diofantske jednačine periodična, i da se na osnovu toga može naći minimalna perioda rešenja, a samim tim i sva rešenja {ZI 90}. Nakon toga pokazano je da ne postoje rešenja koja nisu predstavljena početnim rešenjem na koji se dodaje minimalna perioda pomnožena celim brojem. Dakle, redukovani test nalazi sva rešenja i lako je utvrditi da li su neka od njih u opsegu. Detaljnije se o redukovanom testu može naći u {LA 97}.

Instrukcijski nivo paralelizma 70 Zavisnosti po podacima u petljama 6.3. Opšti slučaj višedimenzionog niza u dve ugnježdene petlje Pretpostavljene su samo dve ugnježdene petlje, uz proizvoljnu dužinu niza. Cilj je samo da se postave relacije zavisnosti, kako bi se uočilo u kojim je aspektima problem kompleksniji. Zbog opštosti, biće pretpostavljeno da svi indeksi višedimenzionog niza zavise od indeksa obe petlje. Taj slučaj može se predstaviti sledećim kôdom: DO i = 1, N DO j = 1, M X(f 1 (i, j), f 2 (i, j), f 3 (i, j),...) =... END DO END DO = F(X(g 1 (i, j), g 2 (i, j), g 3 (i, j),...)) Prava zavisnost po podacima u okviru petlje postoji, ako za sve vrednosti indeksa k istovremeno postoje indeksi i 1, i 2, j 1 i j 2 takvi da važi sledeći uslov: f k (i 1, j 1 ) = g k (i 2, j 2 ), gde je k = 1, B, B je broj dimenzija nizova X i F, a f k i g k prirodni brojevi. Takođe mora biti ispunjen jedan od sledećih uslova vezanih za ograničavanje samo na prave zavisnosti i granice opsega indeksa petlji: ili 1 i 1 < i 2 N i j 1, j 2 [1, M] 1 i 1 = i 2 N i 1 j 1 j 2 M Dakle, potrebno je naći rešenje sistema od B Diofantskih jednačina i utvrditi da li postoji istovremeno rešenje za sve jednačine. Te Diofantske jednačine po svakoj dimenziji niza mogu se predstaviti u obliku: f k (x, y) - g k (z, t) = 0, k = 1, B (6.1.4.) Potrebno je pronaći takve vrednosti za promenljive x, y, z i t da predstavljaju istovremeno rešenje za svaku od jednačina (6.1.4.), i da ispunjavaju uslove: ili 1 x < z N i y, t [1, M] (6.1.5.) 1 x = z N i 1 y t M (6.1.6.) Pošto su f k (x, y) i g k (z, t) najčešće linearne funkcije, pretpostavićemo da je svaka jednačina (6.1.4.) sledećeg oblika: a k x + b k y + c k z + d k t = n k (6.1.7.)

Instrukcijski nivo paralelizma 71 Zavisnosti po podacima u petljama Pre samog postupka rešavanja sistema jednačina potrebno je ispitati da li ove jednačine pojedinačno mogu uopšte imati celobrojna rešenja. Za svaku od jednačina moramo prvo ispitati da li je NZD(a k, b k, c k, d k ) delilac broja n k, jer samo pod tim uslovom uopšte može da postoji celobrojno rešenje samo za svaku tu jednačinu pojedinačno. Uslov postojanja celobrojnog rešenja sistema jednačina je da postoji celobrojno rešenje svake jednačine sistema pojedinačno (generalizacija GCD testa). Uslov da sve jednačine sistema pojedinačno mogu imati celobrojna rešenja ne znači da zavisnost zaista postoji. Dakle, moguće je da su ta celobrojna rešenja različita za različite jednačine sistema, pa sistem jednačina nema rešenje. Na žalost, generalizovani GCD test ima dvostruki nedostatak: 1. Za svaku pojedinačnu jednačinu pretpostavlja da postoji zavisnost po podacima ako ona ima celobrojna rešenja, mada ne proverava da li su u domenu granica petlji i pravih zavisnosti po podacima, 2. Za sistem jednačina kod kojih svaka jednačina ima pojedinačno celobrojna rešenja pretpostavlja da postoji zajedničko rešenje svih jednačina sistema, iako ne proverava da li je rešenje zajedničko. Na sličan način generalizuju se i osnovni Banerjee test i Redukovani test. Postoji test koji pokušava da otkrije postojanje istovremenih rešenja svih jednačina i on se zove λ test {LI 90}. Njegovo razmatranje nije predmet ove knjige.