Universitatea "Babeş-Bolyai" din Cluj-Napoca

Facultatea de Matematică şi Informatică
FISA DISCIPLINEI

Paralelizarea automată a programelor Automatic parallelisation of programs
Cod
Semes-
trul
Ore: C+S+L
Credite
Tipul
Sectia
MI090
6
2+1+0
5
optionala
Informatică
(Computer Science)
Cadre didactice indrumatoare Teaching Staff in Charge
Lect. Dr. VANCEA Alexandru Ioan, vancea@cs.ubbcluj.ro
Obiective Aims
Familiarizarea studentului cu aspectele motivatiei trecerii la anumite forme de paralelism precum si cu problematica incorporarii in cadrul compilatoarelor a unor facilitati de paralelizare automata a programelor secventiale. Optimizarea executiei si generarea de cod pentru programele paralele obtinute sunt aspecte ce intregesc traseul cod sursa secvential - program paralel executabil, traseu des utilizat la nivelul pachetelor de programe de prelucrare paralela utilizate pe scara larga in lume. Se urmareste aprofundarea formalismului ce sta la baza exprimarii posibilitatilor de paralelizare automata precum si a optimizarii de cod paralel.
The course expects in the end the students to understand the motivation for adopting specific parallelism approaches and intends also to make a comprehensive introduction to the topics represented by parallelizing compilers. Code generation and run time optimization complete the route from sequential source code to the executable parallel program version, route which is today widespread used for obtaining parallel computations. The course also intends to introduce the required mathematical formalism which constitutes the basis of automatic parallelization and parallel code generation.
Continut
1. Conceptul de prelucrare paralela: interpretari, tipuri de paralelism, motivatia trecerii spre prelucrarea paralela.
2. Ipostaze ale paralelismului la nivelul unui program.
3. Modele ale limbajelor de programare paralela: limbaje orientate procedural, orientate spre mesaje, dirijate de operatii, orientate spre date, limbaje functionale si logice.
4. Abordarea conceptelor de performanta si eficienta in programarea paralela.
5. Paralelizarea automata a programelor secventiale.
5.1. Dependenta de date. Vectori de dependenta. Directii de dependenta.
5.2. Calculul relatiilor de dependenta de date. Algoritmi de decizie.
5.3. Transformari echivalente ale ciclurilor orientate spre prelucrarea paralela.
5.4. Generarea de cod paralel: metodele Lamport si Feautrier.
5.5. Studii de caz: proiectul OMEGA, pachetele ADARP, NESL si LOOPO.
6. Executia programelor paralele.
6.1. Incarcarea echilibrata a procesoarelor: tehnici si algoritmi.
6.2. Problema maparii in sistemele multiprocesor: abordari statice si dinamice.
Bibliografie
1. E.V.Khrishnamurthy - Parallel Processing, Addison-Wesley, 1990.
2. Barr E. Bauer - Practical Parallel Programming, Academic Press, 1992.
3. Utpal Banerjee - Data Dependence Analysis and Loop Transformations, Kluwer Academic Publishers, 1997.
4. H.Zima and B.Chapman - Supercomputers for Parallel and Vector Computers, ACM Press, 1991.
5. C.D.Polychronopoulos - Parallel Programming and Compilers, Kluwer Academic Publishers, 1988.
6. Michael Wolfe - Optimizing supercompilers for supercomputers, MIT Press, 1990.
7. Reteaua Internet.
Evaluare Assessment
Examen scris la sfirsitul semestrului. Nota este calculata ca medie ponderata intre nota la lucrarea scrisa , nota pe activitatea practica de la laborator si o nota obtinuta in urma prezentarii unei sinteze (proiect de semestru) care sa reflecte preocupari actuale in domeniul procesarii paralele la nivel mondial.
Written exam. The final evaluation mark is given as an average of the mark obtained at the written paper, the mark obtained for the laboratory work and a mark given for a small project illustrating actual results in the domain of parallel processing.