Υποθετικός Πολυνηματισμός. Τα προβλήματα του παράλληλου προγραμματισμού  Εντοπισμός παραλληλισμού – χειροκίνητα (επισκόπηση) – αυτόματα (compiler) 

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Υλοποίηση μεταφραστή C με επεκτάσεις OpenMP Λεοντιάδης Ηλίας Τζούμας Γεώργιος Πτυχιακή εργασία Τελική παρουσίαση Υπεύθυνος καθηγητής Β. Β. Δημακόπουλος.
Advertisements

0 Technical University of Crete Νικόλαος Αγαδάκος Iωάννης Παπαμεντζελόπουλος Iανουάριος 2011 ΤΗΛ 412: Ανάλυση & Σχεδίαση Τηλεπικοινωνιακών Διατάξεων CSMA/CA.
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
ΕΠΛ231 – Δομές Δεδομένων και Αλγόριθμοι
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
Πολυνηματικές Αρχιτεκτονικές & «Μη-Παραδοσιακός» Παραλληλισμός.
ΜΑΘ-3122/106 Προγραμματισμός
29/11/2004Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2004 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
1/12/2003Εισαγωγή στο OpenMP1 OpenMP Αθήνα, Νοέμβριος 2003 Συστήματα Παράλληλης Επεξεργασίας Εργαστήριο Υπολογιστικών Συστημάτων.
ΠΑΡΑΛΛΗΛΟΙ ΥΠΟΛΟΓΙΣΜΟΙ (PARALLEL COMPUTING) GAME OF LIFE
ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών9-1 Στατικός Έλεγχος Με τον όρο στατικός έλεγχος (static checking) χαρακτηρίζεται ο έλεγχος της συντακτικής.
Κώστας Διαμαντάρας Τμήμα Πληροφορικής ΤΕΙ Θεσσαλονίκης 2011 Παράλληλη εκτέλεση βρόχων.
ΠΡΟΣΟΜΟΙΩΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ.
ΠΡΟΣΟΜΟΙΩΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ. Εισαγωγή Έρευνα στην Αρχιτεκτονική Υπολογιστών – Σχεδίαση επεξεργαστή για την εκτέλεση 1 thread (pipeline, branch prediction)
Πολυνηματικές Αρχιτεκτονικές. Εισαγωγή  Η ενσωμάτωση πολλαπλών ροών εκτέλεσης αποτελεί πλέον μονόδρομο στην τεχνολογία των επεξεργαστών –Ελάχιστη ανταπόδοση.
Αρχές Προγραμματισμού (C). ...γράφοντας σωστά προγράμματα! (IIΙ)
Νήματα Οι διεργασίες έχουν τα παρακάτω συστατικά:
Π ΑΡΑΛΛΗΛΗ / ΚΑΤΑΝΕΜΗΜΕΝΗ ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΕΦΑΡΜΟΓΕΣ Εισαγωγή στο OpenMP.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
Τμήμα Πληροφορικής Πανεπιστημίου Κύπρου ΕΠΛ 371 – Προγραμματισμός Συστημάτων Ονόματα: Αντώνης Μαυρής, Γιώργος Ματθαίου, Χρίστος Κυριάκου Ταυτότητες: ,
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Τμήμα Διοίκησης Τεχνολογίας - 15/5/ Μάνος Ρουμελιώτης Πανεπιστήμιο Μακεδονίας Εισαγωγή στην Παράλληλη Επεξεργασία.
ΗΥ – 340 Γλώσσες και Μεταφραστές Φροντιστήριο
Γιατί Disk Based Backup; Πολλά ψηφιακά δεδομένα Μεγάλος χρόνος λήψεως αντιγράφων ασφαλείας Χρονοβόρο restore αρχείων Έλλειψη σιγουριάς για την ποιότητα.
Multi-threading Κορομηνάς Κωνσταντίνος – Μ437
Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία:  να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
National Technical University of Athens (NTUA), GreeceInstitute of Structural Analysis & Seismic Research (ISASR) Προχωρημένες υπολογιστικές τεχνικές και.
Multi-threading Κορομηνάς Κωνσταντίνος – Μ437 Χατζηανδρέου Ελένη - Μ400 Χήνου Διονυσία – Μ364.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
Υπολογιστική Πολυπλοκότητα Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό.
Σύγχρονες Προκλήσεις. Εισαγωγή Οι CMP είναι πια πραγματικότητα – Intel Core 2, Quad, Nehalem – IBM Power5, Power6 – Sun Niagara, Niagara2, Rock –
Implicitly Multithreaded Processors Νίκος Ιωάννου EΠΛ605 Παρουσίαση άρθρου “IMT processors”
1 EPIC Νάνου Σπυριδούλα Α.Μ Explicitly Parallel Instruction Computing Ένα νέο στυλ αρχιτεκτονικής που σκοπό έχει: Τη δυνατότητα υψηλότερου επιπέδου.
RPC Multithreaded voting system Γεωργόπουλος Άλκης Κολωνιάρη Γεωργία Κοντογιώργης Τάσος Λεοντιάδης Ηλίας Πετράκης Γιάννης.
Ασυμπτωτικός Συμβολισμός
ΗΥ-220 Verilog HDL. Τα βασικά.... ΗΥ-220 – Ιάκωβος Μαυροειδής2 Βασική Ροή Σχεδίασης Requirements SimulateRTL Model Gate-level Model Synthesize SimulateTest.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Παράλληλη/Κατανεμημένη Επεξεργασία και Εφαρμογές
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
Νήματα με την χρήση των Posix Threads (pthreads)‏.
Torque Game Engine Κώστας Καρπούζης (kkarpou) Λώρη Μαλατέστα (lori)
3D Απεικόνιση των Θαλάμων MDT του πειράματος ATLAS Μάνος Ικάριος Επιβλέποντες Καθηγητές: Θεόδωρος Αλεξόπουλος Γεώργιος Τσιπολίτης Οκτώβριος 2009 Εθνικό.
Δρ. Πολύκαρπος Ευριπίδου Η πρωτη βοηθεια είναι το συνολο των ενεργειων που θα παρασχεθουν σε ένα τραυματια η έναν ασθενη πριν την επεμβαση του.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
LOGO Προγραμματισμός Η/Υ β’ εξάμηνο – εργαστήριο ΚΑΛΟΓΙΑΝΝΗΣ ΓΡΗΓΟΡΙΟΣ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών Α.Π.Θ. Msc Τηλεπικοινωνίες Πολυτεχνική.
Εμμανουήλ Τσαρδούλιας Μεταδιδακτορικός Eρευνητής Ρομποτικής ΤΗΜΜΥ ΑΠΘ / ΕΚΕΤΑ Λουκάς Πέτρου Αναπληρωτής Kαθηγητής ΤΗΜΜΥ ΑΠΘ Εφαρμογές ρομποτικής χαμηλού.
Εισαγωγή στη βελτιστοποίηση (Μέρος 1) Daniel Kirschen.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών Νομική Σχολή
Transactional Memory.
Συστήματα CAD Πανεπιστήμιο Θεσσαλίας Σχολή Θετικών Επιστημών
Εφαρμογές Υπολογιστών
Υπεύθυνη Τμήματος Πολιτιστικών Θεμάτων Α/θμιας Εκπ/σης Αχαΐας
The University of Adelaide, School of Computer Science
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
Ποιοί είναι οι δικαστικοί σχηματισμοί του Δικαστηρίου;
Ειδικά Θέματα στον Προγραμματισμό Υπολογιστών
Διπλωματική Εργασία για το Μεταπτυχιακό Δίπλωμα Ειδίκευσης
Β. Μάγκλαρης 2/11/2015 ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Δρομολόγηση στο Internet (II) Αλγόριθμοι Distance Vector (Bellman)
Δομή Επιλογής Μάθημα 4ο Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Τάξη Γ Οικονομίας & Πληροφορικής Θετικών Σπουδών 2ο Γενικό Λύκειο Αλιβερίου |
RIPASSO 3.
ΓΕΝΙΚΟΣ ΚΑΝΟΝΙΣΜΟΣ ΠΡΟΣΤΑΣΙΑΣ ΠΡΟΣΩΠΙΚΩΝ ΔΕΔΟΜΕΝΩΝ 2016/679 ΕΕ (GDPR)
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
ΧΡΟΝΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΩΝ
ΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ & ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΤΕΥΘΥΝΣΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΕΡΓΩΝ ΘΕΜΑ ΠΤΥΧΙΑΚΗΣ: ΔΗΜΙΟΥΡΓΙΑ ΕΓΧΕΙΡΙΔΙΟΥ.
ΠΑΡΑΛΛΗΛΑ ΚΑΙ ΣΥΓΚΡΙΣΙΜΑ ΣΩΜΑΤΑ ΚΕΙΜΕΝΩΝ
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΛΩΣΣΑ C
ΕΝΟΤΗΤΑ 2 – Κεφάλαιο 5: Γνωριμία με το Λογισμικό
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Υποθετικός Πολυνηματισμός

Τα προβλήματα του παράλληλου προγραμματισμού  Εντοπισμός παραλληλισμού – χειροκίνητα (επισκόπηση) – αυτόματα (compiler)  Έκφραση παραλληλισμού – low-level (π.χ. Pthreads, MPI) – high-level (π.χ. OpenMP, Cilk, Intel TBB, Galois, UPC κ.λπ.)  Απεικόνιση – scheduling, creation, termination, etc. – operating system, runtime system  Συγχρονισμός – εύκολος όπως ο coarse-grain – αποδοτικός όπως ο fine-grain – deadlock-free – composable  Απαιτήσεις – κλιμακωσιμότητα – ευκολία προγραμματισμού – υψηλή παραγωγικότητα – ορθότητα – architectural awareness

Parallelizing Compilers  Στοχεύουν σε «κανονικές» εφαρμογές – for loops, arrays – (παραδοασικά, HPC scientific codes…)  Συνήθως, 2 περάσματα: – Είναι ένα loop «ασφαλές» για παραλληλοποίηση; στατική ανάλυση (dependence, alias) – «Αξίζει» να παραλληλοποιηθεί; cost model, profiling – Παραδείγματα: Intel CC, SUIF-1, Polaris, PGI, Open64  Τι γίνεται με τις «ακανόνιστες» εφαρμογές; – ασαφείς/μη-σταθερές εξαρτήσεις (π.χ. input dependent) – «περίπλοκες» δομές

Ενδεικτική κατηγοριοποίηση Χαρακτηριστικά κώδικα ΠαράδειγμαΠεδίο εφαρμογής Arrays with direct addressing for(i = 1; i<n; i++) { A[i] = B[i]*C[i]; } scientific codes media applications Arrays with indirect addressing for(i = 1; i<n; i++) { z = A[K[i]]; A[L[i]] = z + C[i]; } circuit simulations structural mechanics modeling molecular dynamics simulation fluid flows Recursive Data Structures (RDS): trees lists graphs sets hash-tables … while(ptr=ptr->next) { ProcessElement(ptr- >val); } graph algorithms (shortest paths, minimum spanning trees, max flows) simulations (N-body, graphics) meshes (refinement, triangulation) dynamic programming data mining …

Υποθετικός Πολυνηματισμός  επιτρέπει τη δημιουργία και εκτέλεση παράλληλων νημάτων παρά τις πιθανές εξαρτήσεις δεδομένων  ελπίζουμε στην μη-ύπαρξη εξαρτήσεων – «αισιόδοξος» παραλληλισμός Speculative Multithreading or Thread-Level Speculation Compile Time Parallelize without detection of dependency Run Time Detect Violation Commit Modification Squash and Re-execution No Yes

Παράδειγμα for(i=0; i<n; i++) { … = A[B[i]]; … A[C[i]] = … } … = A[4] A[5] = … … = A[3] A[2] = … … = A[5] A[6] = … Iteration i Iteration i+1 Iteration i+2 RAW violation Thread 1 Thread 2 Thread 3 … = A[8] A[6] = … … = A[4] A[9] = … … = A[5] A[6] = … Iteration i+3 Iteration i+4 Iteration i+2 REDO

Γενικό Μοντέλο  1 main (non-speculative) thread – γηραιότερο – το μόνο που επιτρέπεται να κάνει commit  N ≥ 0 speculative threads  σχέσεις predecessor-successor ανάμεσα στα threads – sequential semantics  οποιοδήποτε thread μπορεί να κάνει spawn κάποιο άλλο (speculative) thread

Γενικό Μοντέλο SP1 SP2 TSP 2 TSP 1 Sequential Execution Time SP1 TSP 1 INI T SP2 spawn TU0 INI T TSP 2 spawn TSP 2 validate TU1TU2 WΑIT TSP 1 validate Non-speculative Thread Unit SP: spawning point TSP: thread start point

Προγραμματιστικές Δομές  ξεκινάμε από το σειριακό πρόγραμμα και εξάγουμε «ordered» νήματα (ή εργασίες )

Υποθετικός Πολυνηματισμός Το HW/SW (runtime system) παρέχει υποστήριξη για:  checkpointing των καταχωρητών στην αρχή της εκτέλεσης μιας εργασίας  buffering της υποθετικής κατάστασης που δημιουργείται – π.χ. write-buffer, cache  παρακολούθηση των λειτουργιών μνήμης των εργασιών – παραβίαση εξαρτήσεων: αναίρεση των επιδράσεων της (πιο) υποθετικής εργασίας και επανεκκίνηση π.χ. απόρριψη write-buffer, restore registers – μη παραβίαση εξαρτήσεων: commit αποτελεσμάτων των εργασιών στη σειρά προγράμματος!

Παράδειγμα Ανίχνευσης Παραβιάσεων  Επέκταση cache με – timestamp («epoch number»): δείχνει τη σειρά στο σειριακό πρόγραμμα – violation flag  Επέκταση cache line με ειδικά bits – SL: κάποιο speculative load έχει προσπελάσει την cache line – SM: η γραμμή έχει τροποποιηθεί υποθετικά  Σε κάθε write-invalidation, μια εργασία μαρκάρεται για ακύρωση αν: – η γραμμή είναι παρούσα στην cache της – το SL bit της είναι set – το «epoch number» του invalidator υποδεικνύει προγενέστερο νήμα στη σειρά προγράμματος

Παράδειγμα Ανίχνευσης Παραβιάσεων Processor 1 Epoch 5 … ② STORE *q = 2; … Processor 2 Epoch 6 become_speculative()‏ ① LOAD a = *p; … ③ attempt_commit(); … p = q = &x L1 Cache Epoch # = 5 Violation? = FALSE L1 Cache Epoch # = 6 SL SM X = 1TF ① Read request Speculatively Loaded? Speculatively Modified? Violation? = FALSE

Παράδειγμα Ανίχνευσης Παραβιάσεων Processor 1 Epoch 5 … ② STORE *q = 2; … Processor 2 Epoch 6 become_speculative()‏ ① LOAD a = *p; … ③ attempt_commit(); … p = q = &x L1 Cache Epoch # = 5 Violation? = FALSE L1 Cache Epoch # = 6 SL SM X = 1TF ① Read request Speculatively Loaded? Speculatively Modified? Violation? = FALSE SL SM X = 1  2TT ② Invalidation (Epoch #5)‏

Παράδειγμα Ανίχνευσης Παραβιάσεων Processor 1 Epoch 5 … ② STORE *q = 2; … Processor 2 Epoch 6 become_speculative()‏ ① LOAD a = *p; … ③ attempt_commit(); … p = q = &x L1 Cache Epoch # = 5 Violation? = FALSE L1 Cache Epoch # = 6 SL SM X = 1TF ① Read request Speculatively Loaded? Speculatively Modified? Violation? = TRUE SL SM X = 1  2TT ② Invalidation (Epoch #5)‏ ③ FAIL

Τι εξαρτήσεις μας νοιάζουν τελικά;

TM vs TLS  αισιόδοξος συγχρονισμός  αισιόδοξος παραλληλισμός

TM vs TLS Contention Management Sequential Ordering Context Passing Task Spawning Checkpointing Dependency Violation Detection Result Buffering Replay Transaction Scheduling TLS and TM share multiple hardware components TLS TM

Βιβλιογραφία

Speculative Multithreading στο Hardware  [Hammond98] L. Hammond, M. Willey and K. Olukotun. “Data Speculation Support for a Chip Multiprocessor”. SIGOPS Oper. Syst. Rev., vol. 32, no. 5, pages 58–69,  [Hydra] Hydra project at Stanford University.  [Iacoma] I-ACOMA group at University of Illinois at Urbana-Champaign.  [Krishnan99] V. Krishnan and J. Torrellas. “A Chip-Multiprocessor Architecture with Speculative Multithreading”. IEEE Trans. Comput., vol. 48, no. 9, pages 866–880,  [Multiscalar] Multiscalar project at University of Wisconsin-Madison.  [Renau05] J. Renau, J. Tuck, W. Liu, L. Ceze, K. Strauss and J. Torrellas. “Tasking with Out-of-Order Spawn in TLS Chip Multiprocessors: Microarchitecture and Compilation”. 19th annual International Conference on Supercomputing (ICS ’05).  [Quinones05] C. Quinones, C. Madriles, J. Sanchez, P. Marcuello, A. Gonzalez, D. Tullsen. "Mitosis Compiler: An Infrastructure for Speculative Threading Based on Pre-Computation Slices". ACM SIGPLAN conference on Programming language design and implementation (PLDI ‘05)  [Sohi95] G. Sohi, S. Breach and T. Vijaykumar. “Multiscalar Processors”. 22nd Annual International Symposium on Computer architecture (ISCA ’95).  [Stampede] STAMPede project at Carnegie-Mellon University.  [Steffan98] G. Steffan and T. Mowry. “The Potential for Using Thread-Level Data Speculation to Facilitate Automatic Parallelization”. IEEE 4th International Symposium on High Performance Computer Architecture (HPCA ’98).  [Steffan00] G. Steffan, C. Colohan, A. Zhai and T. Mowry. “A Scalable Approach to Thread-Level Speculation”. 27th Annual International Symposium on Computer Architecture (ISCA ’00).

Speculative Multithreading στο Software  [Berger09] E. Berger, T. Yang, T. Liu, G. Novark. "Grace: Safe Multithreaded Programming for C/C++“. 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications (OOPSLA’09).  [Kulkarni07] M. Kulkarni, K. Pingali, B. Walter, G. Ramanarayanan, K. Bala and L. Chew. “Optimistic Parallelism Requires Abstractions”. ACM SIGPLAN 2007 conference on Programming language design and implementation (PLDI ‘07), June 2007  [Rauchwerger95] L. Rauchwerger and D. Padua. “The LRPD test: speculative run- time parallelization of loops with privatization and reduction parallelization”. ACM SIGPLAN 1995 conference on Programming language design and implementation (PLDI ’95). p , June 18-21, 1995, La Jolla, California, United States.  [Tian08] C. Tian, M. Feng, V. Nagarajan and R. Gupta. “Copy or Discard Execution Model for Speculative Parallelization on Multicores.” 41st IEEE/ACM International Symposium on Microarchitecture (MICRO ’08), pages 330–341, Washington, DC, USA, IEEE Computer Society.  [von Praun07] C. von Praun, L. Ceze, C. Cascaval. “Implicit Parallelism with Ordered Transactions”. 2th ACM SIGPLAN symposium on Principles and practice of parallel programming (PPoPP’07).

Compiler Frameworks for Spec. Multithreading  [Bhowmik02] A. Bhowmik and M. Franklin. “A general compiler framework for speculative multithreading”. 14th annual ACM symposium on Parallel algorithms and architectures (SPAA ’02).  [Liu06] W. Liu, J. Tuck, L. Ceze, W. Ahn, K. Strauss, J. Renau and J. Torrellas. “POSH: a TLS compiler that exploits program structure”. 11th ACM SIGPLAN symposium on Principles and practice of parallel programming (PPoPP ’06).

Parallelizing Compilers  [Allen02] R. Allen and K. Kennedy. “Optimizing Compilers for Modern Architectures: A Dependence- Based Approach”. Morgan Kaufmann,  [Brandes97] T. Brandes, S. Chaumette, M. Counilh, J. Roman, A. Darte, F. Desprez and J. Mignot. “HPFIT: a set of integrated tools for the parallelization of applications using high performance Fortran. part I: HPFIT and the Transtool environment”. Parallel Computing, 23(1-2),  [Bugnion96] E. Bugnion, J. Anderson, T. Mowry, M. Rosenblum and M. Lam. “Compiler-Directed Page Coloring for Multiprocessors”. International Symposium on Architectural Support for Programming Languages and Operating Systems (ASPLOS ‘96).  [Goff91] G. Goff, K. Kennedy and C. Tseng. “Practical Dependence Testing”. ACM SIGPLAN Conference in Programming Language Design and Implementation (PLDI ‘91).  [Hall96] M. Hall, J. Anderson, S. Amarasinghe, B. Murphy, S. Liao, E. Bugnion and M. Lam. “Maximizing multiprocessor performance with the SUIF compiler”. IEEE Computer, 29(12),  [ICC] Intel C/C++ compiler.  [Ishihara06] M. Ishihara, H. Honda and M. Sato. “Development and implementation of an interactive parallelization assistance tool for OpenMP: iPat/OMP”. IEICE - Transactions on Information and Systems, E89-D(2),  [Kennedy91] K. Kennedy, K. McKinley, and C. Tseng. “Interactive parallel programming using the Parascope editor”. IEEE TPDS, 2(3),  [Open64] Open64.  [Padua86] D. Padua and M. Wolfe, “Advanced Compiler Optimizations for Supercomputers,” Comm. ACM, vol. 29, pp. 1,184–1,201, Dec  [Padua93] D. Padua, R. Eigenmann, J. Hoeflinger, P. Petersen, P. Tu, S. Weatherford and K. Faigin. “Polaris: A new-generation parallelizing compiler for MPPs”. Technical report, In CSRD No UIUC,  [Wolfe89] M. Wolfe. “Optimizing Compilers for Supercomputers”. The MIT Press, 1989.

Transactional Memory & Spec. Multithreading  [Baek07] W. Baek, C. Cao Minh, M. Trautmann, C. Kozyrakis and K. Olukotun. “The OpenTM Transactional Application Programming Interface”. 16th International Conference on Parallel Architecture and Compilation Techniques (PACT ’07).  [Guo08] R. Guo, H. An, R. Dou, M. Cong, Y. Wang and Q. Li. “LogSPoTM: A Scalable Thread Level Speculation Model Based on Transactional Memory”. 13th Asia-Pacific Computer Systems Architecture Conference (ACSAC ’08).  [Porter09] L. Porter, B. Choi and D. Tullsen. “Mapping Out a Path from Hardware Transactional Memory to Speculative Multithreading”. 18th International Conference on Parallel Architectures and Compilation Techniques (PACT ’09).  [Yoo08] R. Yoo and H. Lee. “Helper Transactions: Enabling Thread- Level Speculation via A Transactional Memory System”. Workshop on Parallel Execution of Sequential Programs on Multicore Architectures (PESPMA ’08).