ebook img

Beyond the Realm of the Polyhedral Model: Combining Speculative Program Parallelization with ... PDF

185 Pages·2017·2.79 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Beyond the Realm of the Polyhedral Model: Combining Speculative Program Parallelization with ...

(cid:108)(cid:77)(cid:66)(cid:112)(cid:50)(cid:96)(cid:98)(cid:66)(cid:105)(cid:251) (cid:47)(cid:50) (cid:97)(cid:105)(cid:96)(cid:28)(cid:98)(cid:35)(cid:81)(cid:109)(cid:96)(cid:59) (cid:250)(cid:43)(cid:81)(cid:72)(cid:50) (cid:46)(cid:81)(cid:43)(cid:105)(cid:81)(cid:96)(cid:28)(cid:72)(cid:50) (cid:74)(cid:28)(cid:105)(cid:63)(cid:251)(cid:75)(cid:28)(cid:105)(cid:66)(cid:91)(cid:109)(cid:50)(cid:98)(cid:45) (cid:97)(cid:43)(cid:66)(cid:50)(cid:77)(cid:43)(cid:50)(cid:98) (cid:47)(cid:50) (cid:72)(cid:502)(cid:65)(cid:77)(cid:55)(cid:81)(cid:96)(cid:75)(cid:28)(cid:105)(cid:66)(cid:81)(cid:77) (cid:50)(cid:105) (cid:47)(cid:50) (cid:72)(cid:502)(cid:65)(cid:77)(cid:59)(cid:251)(cid:77)(cid:66)(cid:50)(cid:109)(cid:96) (cid:71)(cid:28)(cid:35)(cid:81)(cid:96)(cid:28)(cid:105)(cid:81)(cid:66)(cid:96)(cid:50) (cid:47)(cid:50)(cid:98) (cid:98)(cid:43)(cid:66)(cid:50)(cid:77)(cid:43)(cid:50)(cid:98) (cid:47)(cid:50) (cid:72)(cid:502)(cid:66)(cid:77)(cid:59)(cid:251)(cid:77)(cid:66)(cid:50)(cid:109)(cid:96)(cid:45) (cid:47)(cid:50) (cid:72)(cid:502)(cid:66)(cid:77)(cid:55)(cid:81)(cid:96)(cid:75)(cid:28)(cid:105)(cid:66)(cid:91)(cid:109)(cid:50) (cid:50)(cid:105) (cid:47)(cid:50) (cid:72)(cid:502)(cid:66)(cid:75)(cid:28)(cid:59)(cid:50)(cid:96)(cid:66)(cid:50) (cid:85)(cid:65)(cid:42)(cid:109)(cid:35)(cid:50)(cid:86) (cid:104)(cid:62)(cid:276)(cid:97)(cid:49) (cid:84)(cid:96)(cid:251)(cid:98)(cid:50)(cid:77)(cid:105)(cid:251)(cid:50) (cid:84)(cid:28)(cid:96) (cid:44) (cid:27)(cid:96)(cid:28)(cid:112)(cid:66)(cid:77)(cid:47) (cid:97)(cid:108)(cid:69)(cid:108)(cid:74)(cid:27)(cid:95)(cid:27)(cid:76) (cid:95)(cid:27)(cid:67)(cid:27)(cid:74) (cid:97)(cid:81)(cid:109)(cid:105)(cid:50)(cid:77)(cid:109)(cid:50) (cid:72)(cid:50) (cid:44) (cid:121)(cid:56) (cid:76)(cid:81)(cid:112)(cid:50)(cid:75)(cid:35)(cid:96)(cid:50) (cid:107)(cid:121)(cid:82)(cid:56) (cid:84)(cid:81)(cid:109)(cid:96) (cid:81)(cid:35)(cid:105)(cid:50)(cid:77)(cid:66)(cid:96) (cid:72)(cid:50) (cid:59)(cid:96)(cid:28)(cid:47)(cid:50) (cid:47)(cid:50) (cid:44) (cid:46)(cid:81)(cid:43)(cid:105)(cid:50)(cid:109)(cid:96) (cid:47)(cid:50) (cid:72)(cid:502)(cid:108)(cid:77)(cid:66)(cid:112)(cid:50)(cid:96)(cid:98)(cid:66)(cid:105)(cid:251) (cid:47)(cid:50) (cid:97)(cid:105)(cid:96)(cid:28)(cid:98)(cid:35)(cid:81)(cid:109)(cid:96)(cid:59) (cid:47)(cid:66)(cid:98)(cid:43)(cid:66)(cid:84)(cid:72)(cid:66)(cid:77)(cid:50)(cid:102)(cid:98)(cid:84)(cid:251)(cid:43)(cid:66)(cid:28)(cid:72)(cid:66)(cid:105)(cid:251) (cid:44) (cid:65)(cid:77)(cid:55)(cid:81)(cid:96)(cid:75)(cid:28)(cid:105)(cid:66)(cid:91)(cid:109)(cid:50) (cid:34)(cid:50)(cid:118)(cid:81)(cid:77)(cid:47) (cid:105)(cid:63)(cid:50) (cid:95)(cid:50)(cid:28)(cid:72)(cid:75) (cid:81)(cid:55) (cid:105)(cid:63)(cid:50) (cid:83)(cid:81)(cid:72)(cid:118)(cid:63)(cid:50)(cid:47)(cid:96)(cid:28)(cid:72) (cid:74)(cid:81)(cid:47)(cid:50)(cid:72)(cid:44) (cid:42)(cid:81)(cid:75)(cid:35)(cid:66)(cid:77)(cid:66)(cid:77)(cid:59) (cid:97)(cid:84)(cid:50)(cid:43)(cid:109)(cid:72)(cid:28)(cid:105)(cid:66)(cid:112)(cid:50) (cid:83)(cid:96)(cid:81)(cid:59)(cid:96)(cid:28)(cid:75) (cid:83)(cid:28)(cid:96)(cid:28)(cid:72)(cid:72)(cid:50)(cid:72)(cid:66)(cid:120)(cid:28)(cid:105)(cid:66)(cid:81)(cid:77) (cid:114)(cid:66)(cid:105)(cid:63) (cid:83)(cid:81)(cid:72)(cid:118)(cid:63)(cid:50)(cid:47)(cid:96)(cid:28)(cid:72) (cid:42)(cid:81)(cid:75)(cid:84)(cid:66)(cid:72)(cid:28)(cid:105)(cid:66)(cid:81)(cid:77) (cid:104)(cid:63)(cid:277)(cid:98)(cid:50) (cid:47)(cid:66)(cid:96)(cid:66)(cid:59)(cid:251)(cid:50) (cid:84)(cid:28)(cid:96) (cid:44) (cid:74)(cid:88) (cid:83)(cid:63)(cid:66)(cid:72)(cid:66)(cid:84)(cid:84)(cid:50) (cid:42)(cid:71)(cid:27)(cid:108)(cid:97)(cid:97) (cid:83)(cid:96)(cid:81)(cid:55)(cid:50)(cid:98)(cid:98)(cid:50)(cid:109)(cid:96)(cid:45) (cid:108)(cid:77)(cid:66)(cid:112)(cid:50)(cid:96)(cid:98)(cid:66)(cid:105)(cid:251) (cid:47)(cid:50) (cid:97)(cid:105)(cid:96)(cid:28)(cid:98)(cid:35)(cid:81)(cid:109)(cid:96)(cid:59) (cid:95)(cid:28)(cid:84)(cid:84)(cid:81)(cid:96)(cid:105)(cid:50)(cid:109)(cid:96)(cid:98) (cid:44) (cid:74)(cid:88) (cid:83)(cid:88) (cid:97)(cid:28)(cid:47)(cid:28)(cid:118)(cid:28)(cid:84)(cid:84)(cid:28)(cid:77) (cid:83)(cid:96)(cid:81)(cid:55)(cid:50)(cid:98)(cid:98)(cid:81)(cid:96)(cid:45) (cid:80)(cid:63)(cid:66)(cid:81) (cid:97)(cid:105)(cid:28)(cid:105)(cid:50) (cid:108)(cid:77)(cid:66)(cid:112)(cid:50)(cid:96)(cid:98)(cid:66)(cid:105)(cid:118)(cid:45) (cid:108)(cid:97)(cid:27) (cid:46)(cid:66)(cid:96)(cid:50)(cid:43)(cid:105)(cid:50)(cid:109)(cid:96) (cid:47)(cid:50) (cid:95)(cid:50)(cid:43)(cid:63)(cid:50)(cid:96)(cid:43)(cid:63)(cid:50) (cid:65)(cid:77)(cid:96)(cid:66)(cid:28)(cid:45) (cid:250)(cid:91)(cid:109)(cid:66)(cid:84)(cid:50) (cid:27)(cid:72)(cid:55)(cid:45) (cid:74)(cid:88) (cid:49)(cid:96)(cid:112)(cid:50)(cid:77) (cid:95)(cid:80)(cid:62)(cid:80)(cid:108) (cid:95)(cid:50)(cid:77)(cid:77)(cid:50)(cid:98)(cid:45) (cid:54)(cid:96)(cid:28)(cid:77)(cid:43)(cid:50) (cid:49)(cid:116)(cid:28)(cid:75)(cid:66)(cid:77)(cid:28)(cid:105)(cid:50)(cid:109)(cid:96)(cid:98) (cid:44) (cid:46)(cid:66)(cid:96)(cid:50)(cid:43)(cid:105)(cid:50)(cid:109)(cid:96) (cid:47)(cid:50) (cid:95)(cid:50)(cid:43)(cid:63)(cid:50)(cid:96)(cid:43)(cid:63)(cid:50) (cid:66)(cid:77)(cid:55)(cid:81)(cid:96)(cid:75)(cid:28)(cid:105)(cid:66)(cid:91)(cid:109)(cid:50) (cid:28)(cid:109) (cid:42)(cid:49)(cid:27)(cid:45) (cid:74)(cid:88) (cid:62)(cid:50)(cid:77)(cid:96)(cid:66) (cid:83)(cid:66)(cid:50)(cid:96)(cid:96)(cid:50) (cid:42)(cid:62)(cid:27)(cid:95)(cid:71)(cid:49)(cid:97) (cid:58)(cid:96)(cid:50)(cid:77)(cid:81)(cid:35)(cid:72)(cid:50)(cid:45) (cid:54)(cid:96)(cid:28)(cid:77)(cid:43)(cid:50) (cid:71)(cid:28)(cid:35)(cid:81)(cid:96)(cid:28)(cid:105)(cid:81)(cid:66)(cid:96)(cid:50) (cid:47)(cid:50)(cid:98) (cid:98)(cid:43)(cid:66)(cid:50)(cid:77)(cid:43)(cid:50)(cid:98) (cid:47)(cid:50) (cid:72)(cid:502)(cid:66)(cid:77)(cid:59)(cid:251)(cid:77)(cid:66)(cid:50)(cid:109)(cid:96)(cid:45) (cid:47)(cid:50) (cid:72)(cid:502)(cid:66)(cid:77)(cid:55)(cid:81)(cid:96)(cid:75)(cid:28)(cid:105)(cid:66)(cid:91)(cid:109)(cid:50) (cid:50)(cid:105) (cid:47)(cid:50) (cid:72)(cid:502)(cid:66)(cid:75)(cid:28)(cid:59)(cid:50)(cid:96)(cid:66)(cid:50) (cid:85)(cid:65)(cid:42)(cid:109)(cid:35)(cid:50)(cid:86) (cid:108)(cid:74)(cid:95) (cid:100)(cid:106)(cid:56)(cid:100) This page intentionally left blank APOLLO Automatic Speculative Polyhedral Loop Optimizer This page intentionally left blank Aravind SUKUMARAN RAJAM © all rights reserved, 2015 This page intentionally left blank This work is dedicated to my parents and Little God. Thanks for always being there for me, supporting and guiding me through each and every step of my life. This page intentionally left blank Contents 0 Résumé en Français 1 0.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 0.2 Définition du problème . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0.3 Solutions proposées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 0.4 Présentation générale de l’architecture d’Apollo . . . . . . . . . . . . . . 5 0.4.1 Exécution par tranches . . . . . . . . . . . . . . . . . . . . . . . . 7 0.5 Le module statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 0.5.1 Analyse statique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 0.5.2 Itérateurs virtuels . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 0.5.3 Le versioning de code et les squelettes . . . . . . . . . . . . . . . . 8 0.6 Le module dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 0.6.1 Profilage de code . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 0.6.2 Calcul du polyèdre de dépendances . . . . . . . . . . . . . . . . . 10 0.6.3 Sélection de l’ordonnancement et du squelette . . . . . . . . . . . 11 0.6.4 JIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 0.6.5 Sauvegarde et point d’exécution sûr . . . . . . . . . . . . . . . . . 11 0.6.6 Parallélisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 0.6.7 Vérification dynamique . . . . . . . . . . . . . . . . . . . . . . . . 12 0.6.8 Retour arrière (rollback) . . . . . . . . . . . . . . . . . . . . . . . 12 0.6.9 Terminaison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 0.7 Resultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 0.8 Apollo non-linéaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 0.8.1 Construction du polyèdre de dépendances . . . . . . . . . . . . . . 16 0.9 La modélisation des accès mémoire non-linéaires . . . . . . . . . . . . . . 17 0.9.1 La modélisation des bornes de boucles non-linéaires . . . . . . . . 18 0.9.2 Sauvegarde et point d’exécution sûr . . . . . . . . . . . . . . . . . 20 0.9.3 Vérification dynamique . . . . . . . . . . . . . . . . . . . . . . . . 21 0.10Résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 0.11Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 1 Introduction 25 1.1 Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 IX 1.2 Problem definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.3 Proposed solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2 The Polyhedral Model 31 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.2 Mathematical background . . . . . . . . . . . . . . . . . . . . . . . . . . 33 2.3 Static Control Parts (SCoP) . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.4 DCoP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.5 Loop nest modelling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.5.1 Iteration space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.5.2 Access functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.6 Dependence analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.6.1 Distance vector representation . . . . . . . . . . . . . . . . . . . . 41 2.6.2 Dependence polyhedron . . . . . . . . . . . . . . . . . . . . . . . . 43 2.6.3 Loop scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 2.6.4 Loop Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 47 2.7 Polyhedral Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.7.1 Math libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.7.2 Code analyzers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.7.3 DSL Languages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 2.7.4 Compilers and related . . . . . . . . . . . . . . . . . . . . . . . . . 54 2.8 Limitations of the polyhedral model . . . . . . . . . . . . . . . . . . . . 56 3 Thread Level Speculation 61 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.1.1 Importance of thread level speculation . . . . . . . . . . . . . . . . 62 3.2 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 3.3 Applications of TLS system . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.4 State of the art TLS systems . . . . . . . . . . . . . . . . . . . . . . . . 68 3.4.1 Hardware based . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 3.4.2 Software based . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 3.5 Limitations of existing TLS systems . . . . . . . . . . . . . . . . . . . . 76 3.5.1 Missed parallelization opportunities . . . . . . . . . . . . . . . . . 76 3.5.2 Data locality is not considered . . . . . . . . . . . . . . . . . . . . 77 3.5.3 Backup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 3.5.4 Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 X

Description:
Beyond the Realm of the Polyhedral Model: Combining Specula- tive Program .. Mécanisme de chunking de la boucle externe 7. 3.
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.