Arhitectura Sistemelor de Calcul Curs 8 Universitatea Politehnica Bucuresti Facultatea de Automatica si Calculatoare cs.pub.ro curs.cs.pub.ro Structura SIMD Cuprins Probleme de Comunicatii intre Procesoarele unui Sistem SIMD Deplasarea Ciclica a Datelor intre Procesoare Intercalarea Perfecta Shuffle Conectarea Inversa Inverse Shuffle Permutari Elementare
Structura SIMD Probleme Arhitecturile SIMD adecvate prelucrarilor vectoriale. Cresterea vitezei masinii SIMD: Datele trebuiesc plasate in module distincte de memorie. Utilizarea eficienta a procesoarelor: Datele trebuiesc permutate pt a furniza operanzi pentru calcule Pt rezolvarea celor doua probleme: necesare RC P-P si P-M Sistem I/O FD P M UCmd FI FD P M Switch P-P P-M P n FD n M n Retele de Comutatie Retelele de comutatie (RC) P-P sunt implementate la nivelul procesoarelor Retelele de comutatie P-M pot fi implementate facil cu switch-uri Cross-Bar Pt. n procesoare sunt necesare n(n-)/ SP costul devine prohibitiv (k Procs Mrd Switches) Sunt necesare RC adecvate fiecarei aplicatii (masini dedicate); aceste RC ofera: Fiabilitate Costuri reduse Viteza mare de comutatie/transfer Facilitati de intretinere The Trade-off Reduced Parallelism!
Structura SIMD Cuprins Probleme de Comunicatii intre Procesoarele unui Sistem SIMD Deplasarea Ciclica a Datelor intre Procesoare Intercalarea Perfecta Shuffle Conectarea Inversa Inverse Shuffle Permutari Elementare Interconexiunea Circulara Deplasarea ciclica a datelor intre procesoare Conexiunile sunt permise numai cu vecinii Nu exista conexiuni directe intre i si j Sunt maxim [(i-j-)% n] noduri intermediare P n P P P i- P i P i Exemple de domenii de aplicatie: Adecvate rezolvarii ecuatiilor diferentiale de ordinul : x[i] = x[i-] x[i] x[i] Propagarea caldurii printr-o bara Aplicatii meteo prognoza vremii in diferite puncte ale globului se face in paralel cu aceleasi date
Interconexiunea Matriceala Asigura comunicarea cu patru procs vecine Daca dependenta este de felul: x[i,j] = x[i,j] x[i-,j] x[i,j] x[i,j-] x[i,j] de ex: evoluatia temperaturii in volumul unui material ILLIAC primul SIMD ( procs) 9% la fel si acum i,j- i,j i,j i-,j i,j Structura SIMD Cuprins Probleme de Comunicatii intre Procesoarele unui Sistem SIMD Deplasarea Ciclica a Datelor intre Procesoare Intercalarea Perfecta Shuffle Conectarea Inversa Inverse Shuffle Permutari Elementare 8
Intercalarea Perfecta Shuffle Este adecvata pentru: Transformata Fourier (FFT Fast Fourier Transformation) Algoritmi de sortare Transpuneri de matrice Asigura conectarea intre procesoarele unei structuri SIMD de n procesoare cu: n- comunicatii simultane dupa log n iteratii datele ajung pe procesorul sursa 9 P P n Switch log n times P P n Shuffle 8 Procesoare P P P P P P P P P P P P P P P P P P P P P t t
P P P P P P P P P P P P P P t RC Shuffle t RC F & G Shuffle 8 Procesoare F G F G F G F G Doua RC: Shuffle Adiacenta (pt F & G): F e pe Y i = pare G e pe Y i = impare log n iteratii for i = to log n shuffle[y] Y i = F[Y i,y i ] Y i = G[Y i,y i ] end i loop Utilizare: sortari, FFT, transpuneri, functii cu operatii recurente Pentru sortari: F calculeaza maximul celor doi operanzi G calculeaza minimul celor doi operanzi Pentru FFT: F produce suma ponderata G produce diferenta ponderata Ponderile sunt calculate dinamic la fiecare pas al iteratiei Pentru transpunerea matricelor: Organizarea directa a matricei F = Y i G = Y i Shuffle Aplicatii
Suma elementelor unui vector Daca vectorul e intr-o singura memorie secvential: sum = for i = to n- sum = a i end i loop O(n) Se poate reduce O(n) pe SIMD? Distribuim vectorul intre memorii Shuffle Aplicatii Iterative Probleme: Incarcarea neechilibrata a procs La fiecare pas trebuie schimbata RC in mod dinamic A A A A A A A A O(log n) SA i Shuffle Aplicatii Iterative (cont) Sunt necesare Comunicare liniara RC statica Reconfigurarea conexiunilor e mai simpla Dezavantaj: este in continuare necesara reconfigurarea la fiecare pas! Complexitate: O(log n) A A A A A A A A SA i Sume partiale
Structura SIMD Cuprins Probleme de Comunicatii intre Procesoarele unui Sistem SIMD Deplasarea Ciclica a Datelor intre Procesoare Intercalarea Perfecta Shuffle Conectarea Inversa Inverse Shuffle Permutari Elementare P P P P P P P P P P P P P P t t Inverse Shuffle Adecvat pentru operatii recurente, calculabile in log n pasi Suma elementelor unui vector: Y i = A i ( i n-) for j = to log n Y j = Y j Y j- invshuffle[y], MASK compute MASK end j loop Legatura identica pentru toate iteratiile: O legatura directa Un Inverse Shuffle 8
Inverse Shuffle Aplicatii Iterative Legatura (RC) identica pentru toate iteratiile: O legatura directa: Y j = Y j Y j- Un Inverse Shuffle Mastile se modifica si ele prin Inverse Shuffle la fiecare iteratie MASK = procesor inactiv MASK = procesor activ: (F & G = ) La anumite iteratii, unele procesoare pot fi inactivate de masti Notam j Y A( k) O(log n) ij k i A Y Inverse Shuffle RC MASK S IS MASK S IS MASK S IS Y Y Y Y 8 Y Y P A Y Y Y Y Y Y Y P A Y Y Y Y Y Y Y P A Y Y Y Y Y Y Y P A Y Y Y Y Y Y Y P A Y Y Y Y Y Y Y P A Y Y Y Y Y Y Y P A Y Y Y Y Y Y Y 9
Concluzii Structuri SIMD Probleme adecvate structurilor SIMD: Calculele trebuiesc descrise de iteratii de tip vector a.i. majoritatea timpului sa fie ocupat cu operatii cu caracter identic Operanzii (simultani) trebuiesc repartizati in module diferite de memorie Trebuiesc identificate conexiunile intre operanzi a.i. ele sa fie cat mai aproape de conexiunile fizice intre procesoare Clasa problemelor SIMD nu este universala doar probleme dedicate se preteaza! Algoritmii, sistemele de interconectare si structura datelor trebuiesc adaptate in consecinta 9 Structura SIMD Cuprins Probleme de Comunicatii intre Procesoarele unui Sistem SIMD Deplasarea Ciclica a Datelor intre Procesoare Intercalarea Perfecta Shuffle Conectarea Inversa Inverse Shuffle Permutari Elementare
Permutari Elementare Specifica conexiunea intre n resurse ca o functie bijectiva pe o multime ordonata Se pot realiza in mai multe feluri:. Permutarea de baza Base Line Permutation. Permutarea cu intercalare perfecta Shuffle Permutation. Permutarea cu negare de bit Negate Bit Permutation. Permutarea fluture Butterfly Permutation. Permutarea cu ordine inversa Bit Reversal Permutation. Permutarea cu incrementare modulo Increment Permutation Definirea acestor permutari de poate face pe baza reprezentarii binare a adreselor resurselor din multime (Flanders): ADR = (a n a n- a a ) Base Line Permutation Bitul cel mai nesemnificativ devine cel mai semnificativ: P_base (a n a n- a a ) = (a a n a n- a ) Permutarea de baza este intercalarea perfecta inversa! Pentru 8 resurse avem P_base (a a a ) = (a a a ) Variante posibile sunt Permutarea de baza k inferioara: Cei mai nesemnificativi k biti din adresa P_b_kinf (a n a k a k- a a ) = (a n a k a a k- a ) Asigura conexiunea in submultimi de resurse Permutarea de baza k superioara: Cei mai semnificativi k biti din adresa P_b_ksup (a n a n-k a n-k a ) = (a n-k a n a n-k a n-k a ) Asigura conexiunea intre submultimi de resurse TA: Variantele p_base pentru 8 resurse
Shuffle Permutation Bitul cel mai semnificativ devine cel mai nesemnificativ: P_shuffle (a n a n- a a ) = (a n- a a a n ) Pentru 8 resurse avem P_shuffle (a a a ) = (a a a ) Variante posibile sunt Permutarea shuffle k inferioara: Cei mai nesemnificativi k biti din adresa P_shuffle_kinf (a n a k a k- a a ) = (a n a k a a a k- ) Utilizare posibila: conexiunea memoriilor adresa de baza a unui modul adresa in cadrul acelui modul Permutarea shuffle k superioara: Cei mai semnificativi k biti din adresa P_shuffle_ksup (a n a n-k a n-k a ) = (a n- a n-k a n a n-k a ) Permutarea shuffle q # c, intre q c resurse (nu putere a lui ): P_shuffle_q#c (ADR) = q V ADR mod (q c -) pentru V ADR < q c- P_shuffle_q#c (ADR) = V ADR pentru V ADR = q c- V ADR =,,, etc, n- succesiv Negate Bit Permutation Bitul cel mai nesemnificativ este negat P_neg_bit (a n a n- a a ) = (a n a n- a a ): P_neg_bit (a a a ) = (a a a ) Varianta posibila este negarea bitului k: P_neg_bit_k (a n a n- a k- a a ) = (a n a n- a k- a a ) P_neg_bit (a a a ) = (a a a )
Butterfly Permutation Se interschimba bitul cel mai semnificativ cu cel mai nesemnificativ: P_butterfly (a n a a ) = (a a n- a a n ) P_butterfly (a a a ) = (a a a ) Butterfly este o permutare simetrica Variante posibile sunt Permutarea butterfly k inferioara: P_butterfly_kinf (a n a k a k- a a ) = (a n a k a a a k- ) Ofera posibilitatea de conectare intre resursele clasei Permutarea butterfly k superioara: P_butterfly_ksup (a n a n-k a n-k a a ) = (a n-k a n- a n a n-k a ) Ofera posibilitatea de conectare intre clase Bit Reversal Permutation Se interschimba complet ordinea bitilor: P_reversal (a n a a ) = (a a a n ) P_reversal (a a a ) = (a a a ) Cu aceasta permutare se pot obtine echivalente Variante posibile sunt Permutarea reversal k inferioara: P_reversal_kinf (a n a k a k- a a ) = (a n a k a a a k- ) Permutarea reversal k superioara: P_reversal_ksup (a n a n-k a n-k a a ) = (a n-k a n a n-k a )
Increment Permutation Se incrementeaza valorile modulo n : P_increment (ADR) = (V ADR ) mod ( n ) Aceasta este o conexiune inelara intre module alaturate din (V ADR ), poate fi orice constanta Variante posibile sunt Permutarea increment k inferioara: Realizeaza conexiuni in cadrul submultimii de resurse Permutarea increment k superioara: Realizeaza conexiuni intre submultimile de resurse