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

Σχετικά έγγραφα
Υποθετικός Πολυνηματισμός

Πολυνηματικές Αρχιτεκτονικές. «Μη-Παραδοσιακός» Παραλληλισμός

Πολυνηματικές Αρχιτεκτονικές & «Μη-Παραδοσιακός» Παραλληλισμός

OSCAR NEDO PDA. 16 IBM pseries690 Regatta H 8 IBM RS6000 SP 604e High Node SUN Fire. Do-all Do-across. OpenMP 6) PROMIS 7)

2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

EM 361: Παράλληλοι Υπολογισμοί

QuakeTM: Parallelizing a Complex Sequential Application Using Transactional Memory (Gajinov et al., 2009)

Τεχνικές Βελτιστοποίησης Κώδικα για Πολυεπεξεργαστικές Αρχιτεκτονικές. Υπευθυνος Διδάσκων: Νεκτάριος Κοζύρης. Transactional Memory

GPU. CUDA GPU GeForce GTX 580 GPU 2.67GHz Intel Core 2 Duo CPU E7300 CUDA. Parallelizing the Number Partitioning Problem for GPUs

ΤΕΧΝΙΚΕΣ ΑΥΞΗΣΗΣ ΤΗΣ ΑΠΟΔΟΣΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ I

ΔΙΠΛΩΜΑΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Παράλληλος προγραμματισμός: Υλοποίηση παράλληλων προγραμμάτων

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΔΙΑΧΕΙΡΙΣΗ ΔΙΚΤΥΩΝ Δρομολόγηση στο Internet (II) Αλγόριθμοι Distance Vector (Bellman) Αλγόριθμοι Link State (Dijkstra)

Εφαρμογή Υπολογιστικών Τεχνικών στην Γεωργία

ΠΡΟΣΟΜΟΙΩΣΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ. Διαφάνειες από το MicroArch 35 Tutorial του Simics

Δομές Δεδομένων Ενότητα 1

Δομημένος Προγραμματισμός

Transactional Memory

CAD / CAM. Ενότητα #10: Βιομηχανικά Συστήματα Ελέγχου. Δημήτριος Τσελές Τμήμα Μηχανικών Αυτοματισμού T.E.

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

ΜΟΝΤΕΛΑ ΛΗΨΗΣ ΑΠΟΦΑΣΕΩΝ

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Παράλληλος προγραμματισμός: Σχεδίαση και υλοποίηση παράλληλων προγραμμάτων

Σχεδίαση Ψηφιακών Συστημάτων

Αρχιτεκτονική Υπολογιστών

Ασκήσεις Caches. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

Παράλληλος προγραμματισμός: Σχεδίαση παράλληλων προγραμμάτων

Τεχνικές για διαμοιρασμό φορτίου και μακροεντολές Broadcast - Scatter για αποδοτικές πολύ-επεξεργαστικές εφαρμογές

Εφαρμογή Υπολογιστικών Τεχνικών στη Γεωργία

Κεφάλαιο 1 Αφαιρετικότητα και Τεχνολογία Υπολογιστών (Computer Abstractions and Technology)

Multi Cycle Datapath. Αρχιτεκτονική Υπολογιστών. 5ο εξάμηνο ΣΗΜΜΥ ακ. έτος: Νεκ. Κοζύρης

ΠΛΕ- 074 Αρχιτεκτονική Υπολογιστών 2

Αρχιτεκτονική Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-ΙI. Ενότητα 5 : Αρχιτεκτονική ΙΑ-32

Υ- 07 Παράλληλα Συστήματα Transac9onal memory

ΠΕΡΙΓΡΑΜΜΑ ΜΑΘΗΜΑΤΟΣ

τατιςτική ςτην Εκπαίδευςη II

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 1

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

Κβαντική Επεξεργασία Πληροφορίας

Συστήµατα Παράλληλης Επεξεργασίας. Παράλληλοςπρογραµµατισµός: Υλοποίηση παράλληλων προγραµµάτων

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Αυτοματοποιημένη χαρτογραφία

Αρχιτεκτονική-ΙI Ενότητα 4 :

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

Θέματα κοινωνίας της πληροφορίας/ γνώσης

Journal of the Graduate School of the Chinese Academy of Sciences. Application Dependent Software. Standard Application Components.

ΣΥΝΔΥΑΣΤΙΚΗ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ

EM 361: Παράλληλοι Υπολογισμοί

ΕΠΛ 233: Αντικειμενοστρεφής Προγραμματισμός (Object-oriented programming)

Αρχιτεκτονική Υπολογιστών

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Εφαρμογή Υπολογιστικών Τεχνικών στη Γεωργία

Αρχιτεκτονική υπολογιστών

Dynamic Data Type Refinement Methodology

FX10 SIMD SIMD. [3] Dekker [4] IEEE754. a.lo. (SpMV Sparse matrix and vector product) IEEE754 IEEE754 [5] Double-Double Knuth FMA FMA FX10 FMA SIMD

Συστήματα VLSI. Εισαγωγή. Γιώργος Δημητρακόπουλος. Δημοκρίτειο Πανεπιστήμιο Θράκης. Άνοιξη 2014

Εισαγωγή. Λογισµικό & Προγραµµατισµός Συστηµάτων Υψηλής Επίδοσης

Εισαγωγή στη Δασική Πληροφορική

Παράλληλη Επεξεργασία

Προχωρηµένα Θέµατα Αρχιτεκτονικής

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Εντολές Διακλάδωσης. #bubbles ~= pipeline depth X loop length. Next fetch started. Fetch. I-cache. Fetch Buffer. Decode. Issue Buffer.

Εισαγωγή. SMT 6 IPC, δυναμικά διαμοιραζόμενο. Superscalar 6 IPC. CMP 4x2 IPC

Πολυπύρηνοι επεξεργαστές Multicore processors

Ελαχιστοποίηση της Καταναλισκόμενης Ενέργειας σε Φορητές Συσκευές

Cilk: Φιλοσοφία και Χρήση

Συστήματα Πληροφοριών Διοίκησης Ενότητα 5: Λογισμικό Πληροφοριακών Συστημάτων

Αντικειμενοστραφής Προγραμματισμός

Parallel Architectures

Προγραμματισμός & Διοίκησης έργων

Ενσωματωμένα Συστήματα

Θέματα Συστημάτων Πολυμέσων. Ενότητα # 1: Εισαγωγή Διδάσκων: Γεώργιος K. Πολύζος Τμήμα: Μεταπτυχιακό Πρόγραμμα Σπουδών Επιστήμη των Υπολογιστών

Εισαγωγή στα Πληροφοριακά Συστήματα. Ενότητα 5: Λογισμικό - Software

Αρχιτεκτονική Υπολογιστών

Αναπτύσσοντας developer tools στην Αpple. Αργύριος Κυρτζίδης Προπτυχιακός φοιτητής ΗΜΜΥ

Ειδικά Θέματα Προγραμματισμού

1 η ΕΝΟΤΗΤΑ ΕΙΣΑΓΩΓΗ (Προγραμματισμός & MATLAB)

Αρχιτεκτονική Υπολογιστών

Network Algorithms and Complexity Παραλληλοποίηση του αλγορίθμου του Prim. Αικατερίνη Κούκιου

Υ- 01 Αρχιτεκτονική Υπολογιστών Πολυεπεξεργαστές, 2ο μέρος

ΠΕΡΙΕΧΟΜΕΝΑ. Η ΟΡΓΑΝΩΣΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ 1.1Στόχοι 1.2Εισαγωγη 1.3Προγράμματα 1.4Λειτουργικάπρογράμματα 1.5 Η οργάνωση του υπολογιστή

Ερευνητική+Ομάδα+Τεχνολογιών+ Διαδικτύου+

Μεθοδολογία Παραγωγής Πολιτισμικών και Πολυμεσικών Τίτλων

Ψηφιακή Επεξεργασία Εικόνας

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Εθνικό Μετσόβιο Πολυτεχνείο National Technical University of Athens. Aerodynamics & Aeroelasticity: Applications Σπύρος Βουτσινάς / Spyros Voutsinas

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Προχωρηµένα Θέµατα Αρχιτεκτονικής

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

ΕΙΣΑΓΩΓΗ στους Η/Υ. Δρ. Β Σγαρδώνη. Τμήμα Τεχνολογίας Αεροσκαφών ΤΕΙ ΣΤΕΡΕΑΣ ΕΛΛΑΔΑΣ. Χειμερινό Εξάμηνο

Επιστημονικοί Υπολογισμοί - Μέρος ΙΙΙ: Παράλληλοι Υπολογισμοί

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Υπολογιστική Πολυπλοκότητα

Πολυνηματικές Αρχιτεκτονικές

Transcript:

Τεχνικές Βελτιστοποίησης Κώδικα για Πολυεπεξεργαστικές Αρχιτεκτονικές Υπευθυνος Διδάσκων: Νεκτάριος Κοζύρης Υποθετικός Πολυνηματισμός

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.

Τα προβλήματα του παράλληλου προγραμματισμού Εντοπισμός παραλληλισμού χειροκίνητα (επισκόπηση) αυτόματα (compiler) Έκφραση παραλληλισμού low-level l l( (π.χ. 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 lcc, 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 επιτρέπει τη δημιουργία και εκτέλεση παράλληλων νημάτων παρά τις πιθανές εξαρτήσεις δεδομένων ελπίζουμε στην μη-ύπαρξη εξαρτήσεων «αισιόδοξος» παραλληλισμός Run Time Compile Time Parallelize without detection of dependency Detect Violation No Yes Commit Modification Squash and Re-execution

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

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

Γενικό Μοντέλο Sequential Execution Time TU0 TU1 TU2 Non-speculative Thread Unit SP2 SP1 SP1 SP2 spawn spawn TSP2 INIT TSP1 INIT TSP2 TSP2 validate WΑIT TSP1 validate TSP1 SP: spawning point TSP: thread start point

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

Υποθετικός Πολυνηματισμός μ Το 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 2STORE *q = 2; L1 Cache p=q=&x = Processor 2 Epoch 6 become_speculative() 1LOAD a = *p; 3attempt_commit(); L1 Cache Epoch # = 5 Violation? = FALSE Epoch # = 6 Violation? = FALSE X=1 T F SL SM Speculatively Loaded? Speculatively el Modified? 1 Read request

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

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

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

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

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

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

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, 1998. [Hydra] Hydra project at Stanford University. http://ogun.stanford.edu/ [Iacoma] I-ACOMA group at University of Illinois at Urbana-Champaign. http://iacoma.cs.uiuc.edu/work/speculation.html [Krishnan99] V. Krishnan and J. Torrellas. A Chip-Multiprocessor Architecture with Speculative Multithreading. IEEE Trans. Comput., vol. 48, no. 9, pages 866 880, 1999. [Multiscalar] Multiscalar project at University of Wisconsin-Madison. http://pages.cs.wisc.edu/~mscalar edu/ [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 t for Speculative Threading Based on Pre-Computation ti 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. http://www.cs.cmu.edu/~stampede/ [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 g 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) 95). p.218-232, 232 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, 2008. 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, 2002. [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), 1997. [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 g 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), 1996. [ICC] Intel C/C++ compiler. http://software.intel.com/en-us/intel-compilers/ [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), 2006. [Kennedy91] K. Kennedy, K. McKinley, and C. Tseng. Interactive parallel programming using the Parascope editor. IEEE TPDS, 2(3), 1991. [Open64] Open64. http://www.open64.net [Padua86] D. Padua and M. Wolfe, Advanced Compiler Optimizations for Supercomputers, Comm. ACM, vol. 29, pp. 1,184 1,201, 184 1 Dec. 1986. [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. 1306. UIUC, 1993. [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 OpenTMTransactional Transactional Application Programming Interface. 16th International Conference on Parallel Architecture and Compilation Techniques (PACT 07). [Guo08] 08]R. Guo, HA H. An, RD R. Dou, MC M. Cong, YW Y. Wang and dqli L 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).

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.