Using OpenMP: portable shared memory parallel programming
Gespeichert in:
Hauptverfasser: | , , |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Cambridge, Mass. [u.a.]
MIT Press
2008
|
Schriftenreihe: | Scientific and engineering computation
|
Schlagworte: | |
Online-Zugang: | Table of contents only Inhaltsverzeichnis |
Beschreibung: | XXII, 353 S. Ill., graph. Darst. |
ISBN: | 9780262533027 0262533022 9780262033770 0262033771 |
Internformat
MARC
LEADER | 00000nam a2200000zc 4500 | ||
---|---|---|---|
001 | BV023211665 | ||
003 | DE-604 | ||
005 | 20121114 | ||
007 | t | ||
008 | 080313s2008 xxuad|| |||| 00||| eng d | ||
010 | |a 2007026656 | ||
020 | |a 9780262533027 |c paperback : alk. paper |9 978-0-262-53302-7 | ||
020 | |a 0262533022 |c paperback : alk. paper |9 0-262-53302-2 | ||
020 | |a 9780262033770 |c hardcover : alk. paper |9 978-0-262-03377-0 | ||
020 | |a 0262033771 |c hardcover : alk. paper |9 0-262-03377-1 | ||
035 | |a (OCoLC)263663151 | ||
035 | |a (DE-599)BVBBV023211665 | ||
040 | |a DE-604 |b ger |e aacr | ||
041 | 0 | |a eng | |
044 | |a xxu |c US | ||
049 | |a DE-703 |a DE-29T |a DE-706 |a DE-83 |a DE-634 | ||
050 | 0 | |a QA76.642 | |
082 | 0 | |a 005.2/75 | |
084 | |a ST 151 |0 (DE-625)143595: |2 rvk | ||
084 | |a ST 185 |0 (DE-625)143606: |2 rvk | ||
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
100 | 1 | |a Chapman, Barbara |d 1954- |e Verfasser |0 (DE-588)133853039 |4 aut | |
245 | 1 | 0 | |a Using OpenMP |b portable shared memory parallel programming |c Barbara Chapman ; Gabriele Jost ; Ruud van der Pas |
246 | 1 | 0 | |a Open MP |
264 | 1 | |a Cambridge, Mass. [u.a.] |b MIT Press |c 2008 | |
300 | |a XXII, 353 S. |b Ill., graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Scientific and engineering computation | |
650 | 7 | |a Parallélisme (informatique) |2 ram | |
650 | 7 | |a Programmation parallèle (informatique) |2 ram | |
650 | 4 | |a Parallel programming (Computer science) | |
650 | 4 | |a Application program interfaces (Computer software) | |
650 | 0 | 7 | |a OpenMP |0 (DE-588)4648816-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Parallelverarbeitung |0 (DE-588)4075860-6 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a OpenMP |0 (DE-588)4648816-9 |D s |
689 | 0 | 1 | |a Parallelverarbeitung |0 (DE-588)4075860-6 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a Jost, Gabriele |e Verfasser |4 aut | |
700 | 1 | |a Pas, Ruud van der |e Verfasser |0 (DE-588)137238975 |4 aut | |
856 | 4 | 2 | |q text/html |u http://www.loc.gov/catdir/toc/ecip0721/2007026656.html |3 Table of contents only |
856 | 4 | 2 | |m GBV Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=016397719&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-016397719 |
Datensatz im Suchindex
_version_ | 1804137493943025664 |
---|---|
adam_text | USING OPENMP PORTABLE SHARED MEMORY PARALLEL PROGRAMMING BARBARA
CHAPMAN, GABRIELE JOST, RUUD VAN DER PAS THE MIT PRESS CAMBRIDGE,
MASSACHUSETTS LONDON, ENGLAND CONTENTS SERIES FOREWORD XIII FOREWORD XV
PREFACE XIX 1 INTRODUCTION 1 1.1 WHY PARALLEL COMPUTERS ARE HERE TO STAY
1 1.2 SHARED-MEMORY PARALLEL COMPUTERS 3 1.2.1 CACHE MEMORY IS NOT
SHARED 4 1.2.2 IMPLICATIONS OF PRIVATE CACHE MEMORY 6 1.3 PROGRAMMING
SMPS AND THE ORIGIN OF OPENMP 6 1.3.1 WHAT ARE THE NEEDS? 7 1.3.2 A
BRIEF HISTORY OF SAVING TIME 7 1.4 WHAT IS OPENMP? 8 1.5 CREATING AN
OPENMP PROGRAM 9 1.6 THE BIGGER PICTURE 11 1.7 PARALLEL PROGRAMMING
MODELS 13 1.7.1 REALIZATION OF SHARED- AND DISTRIBUTED-MEMORY 14 MODELS
1.8 WAYS TO CREATE PARALLEL PROGRAMS 15 1.8.1 A SIMPLE COMPARISON 16 1.9
A FINAL WORD 21 2 OVERVIEW OF OPENMP 23 2.1 INTRODUCTION 23 2.2 THE IDEA
OF OPENMP 23 2.3 THE FEATURE SET 25 2.3.1 CREATING TEAMS OF THREADS 25
2.3.2 SHARING WORK AMONG THREADS 26 2.3.3 THE OPENMP MEMORY MODEL 28
2.3.4 THREAD SYNCHRONIZATION 29 2.3.5 OTHER FEATURES TO NOTE 30 2.4
OPENMP PROGRAMMING STYLES 31 VLLL CONTENTS 2.5 CORRECTNESS
CONSIDERATIONS 32 2.6 PERFORMANCE CONSIDERATIONS 33 2.7 WRAP-UP 34 3
WRITING A FIRST OPENMP PROGRAM 35 3.1 INTRODUCTION 35 3.2 MATRIX TIMES
VECTOR OPERATION 37 3.2.1 C AND FORTRAN IMPLEMENTATIONS OF THE PROBLEM
38 3.2.2 A SEQUENTIAL IMPLEMENTATION OF THE MATRIX TIMES 38 VECTOR
OPERATION 3.3 USING OPENMP TO PARALLELIZE THE MATRIX TIMES VECTOR 41
PRODUCT 3.4 KEEPING SEQUENTIAL AND PARALLEL PROGRAMS AS A SINGLE 47
SOURCE CODE 3.5 WRAP-UP 50 4 OPENMP LANGUAGE FEATURES 51 4.1
INTRODUCTION 51 4.2 TERMINOLOGY 52 4.3 PARALLEL CONSTRUCT 53 4.4 SHARING
THE WORK AMONG THREADS IN AN OPENMP PROGRAM 57 4.4.1 LOOP CONSTRUCT 58
4.4.2 THE SECTIONS CONSTRUCT 60 4.4.3 THE SINGLE CONSTRUCT 64 4.4.4
WORKSHARE CONSTRUCT 66 4.4.5 COMBINED PARALLEL WORK-SHARING CONSTRUCTS
68 4.5 CLAUSES TO CONTROL PARALLEL AND WORK-SHARING CONSTRUCTS 70 4.5.1
SHARED CLAUSE 71 4.5.2 PRIVATE CLAUSE 72 4.5.3 LASTPRIVATE CLAUSE 73
4.5.4 FIRSTPRIVATE CLAUSE 75 4.5.5 DEFAULT CLAUSE 77 4.5.6 NOWAIT CLAUSE
78 CONTENTS IX 79 83 84 86 87 90 93 94 95 100 100 102 102 105 110 110
111 111 114 118 123 5 HOW TO GET GOOD PERFORMANCE BY USING 125 OPENMP
5.1 INTRODUCTION 125 5.2 PERFORMANCE CONSIDERATIONS FOR SEQUENTIAL
PROGRAMS 125 5.2.1 MEMORY ACCESS PATTERNS AND PERFORMANCE 126 5.2.2
TRANSLATION-LOOKASIDE BUFFER 128 5.2.3 LOOP OPTIMIZATIONS 129 5.2.4 USE
OF POINTERS AND CONTIGUOUS MEMORY IN C 136 5.2.5 USING COMPILERS 137 5.3
MEASURING OPENMP PERFORMANCE 138 5.3.1 UNDERSTANDING THE PERFORMANCE OF
AN OPENMP 140 PROGRAM 4.6 4.7 4.8 4.9 4.10 4.5.7 SCHEDULE CLAUSE OPENMP
SYNCHRONIZATION CONSTRUCTS 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 BARRIER
CONSTRUCT ORDERED CONSTRUCT CRITICAL CONSTRUCT ATOMIC CONSTRUCT LOCKS
MASTER CONSTRUCT INTERACTION WITH THE EXECUTION ENVIRONMENT MORE OPENMP
CLAUSES 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 IF CLAUSE NUMJIHREADS CLAUSE
ORDERED CLAUSE REDUCTION CLAUSE COPYIN CLAUSE COPYPRIVATE CLAUSE
ADVANCED OPENMP CONSTRUCTS 4.9.1 4.9.2 4.9.3 NESTED PARALLELISM FLUSH
DIRECTIVE THREADPRIVATE DIRECTIVE WRAP-UP X CONTENTS 5.3.2 OVERHEADS OF
THE OPENMP TRANSLATION 142 5.3.3 INTERACTION WITH THE EXECUTION
ENVIRONMENT 143 5.4 BEST PRACTICES 145 5.4.1 OPTIMIZE BARRIER USE 145
5.4.2 AVOID THE ORDERED CONSTRUCT 147 5.4.3 AVOID LARGE CRITICAL REGIONS
147 5.4.4 MAXIMIZE PARALLEL REGIONS 148 5.4.5 AVOID PARALLEL REGIONS IN
INNER LOOPS 148 5.4.6 ADDRESS POOR LOAD BALANCE 150 5.5 ADDITIONAL
PERFORMANCE CONSIDERATIONS 152 5.5.1 THE SINGLE CONSTRUCT VERSUS THE
MASTER CONSTRUCT 153 5.5.2 AVOID FALSE SHARING 153 5.5.3 PRIVATE VERSUS
SHARED DATA 156 5.6 CASE STUDY: THE MATRIX TIMES VECTOR PRODUCT 156
5.6.1 TESTING CIRCUMSTANCES AND PERFORMANCE METRICS 157 5.6.2 A MODIFIED
OPENMP IMPLEMENTATION 158 5.6.3 PERFORMANCE RESULTS FOR THE C VERSION
159 5.6.4 PERFORMANCE RESULTS FOR THE FORTRAN VERSION 164 5.7 FORTRAN
PERFORMANCE EXPLORED FURTHER 167 5.8 AN ALTERNATIVE FORTRAN
IMPLEMENTATION 180 5.9 WRAP-UP 189 6 USING OPENMP IN THE REAL WORLD 191
6.1 SCALABILITY CHALLENGES FOR OPENMP 191 6.2 ACHIEVING SCALABILITY ON
CC-NUMA ARCHITECTURES 193 6.2.1 MEMORY PLACEMENT AND THREAD BINDING: WHY
DO 193 WE CARE? 6.2.2 EXAMPLES OF VENDOR-SPECIFIC CC-NUMA SUPPORT 196
6.2.3 IMPLICATIONS OF DATA AND THREAD PLACEMENT ON 199 CC-NUMA
PERFORMANCE 6.3 SPMD PROGRAMMING 200 CASE STUDY 1: A CFD FLOW SOLVER 201
6.4 COMBINING OPENMP AND MESSAGE PASSING 207 6.4.1 CASE STUDY 2: THE NAS
PARALLEL BENCHMARK BT 211 CONTENTS XI 6.4.2 CASE STUDY 3: THE MULTI-ZONE
NAS PARALLEL 214 BENCHMARKS 6.5 NESTED OPENMP PARALLELISM 216 6.5.1 CASE
STUDY 4: EMPLOYING NESTED OPENMP FOR 221 MULTI-ZONE CFD BENCHMARKS 6.6
PERFORMANCE ANALYSIS OF OPENMP PROGRAMS 228 6.6.1 PERFORMANCE PROFILING
OF OPENMP PROGRAMS 228 6.6.2 INTERPRETING TIMING INFORMATION 230 6.6.3
USING HARDWARE COUNTERS 239 6.7 WRAP-UP 241 7 TROUBLESHOOTING 243 7.1
INTRODUCTION 243 7.2 COMMON MISUNDERSTANDINGS AND FREQUENT ERRORS 243
7.2.1 DATA RACE CONDITIONS 243 7.2.2 DEFAULT DATA-SHARING ATTRIBUTES 246
7.2.3 VALUES OF PRIVATE VARIABLES 249 7.2.4 PROBLEMS WITH THE MASTER
CONSTRUCT 250 7.2.5 ASSUMPTIONS ABOUT WORK SCHEDULING 252 7.2.6 INVALID
NESTING OF DIRECTIVES 252 7.2.7 SUBTLE ERRORS IN THE USE OF DIRECTIVES
255 7.2.8 HIDDEN SIDE EFFECTS, OR THE NEED FOR THREAD SAFETY 255 7.3
DEEPER TROUBLE: MORE SUBTLE PROBLEMS 259 7.3.1 MEMORY CONSISTENCY
PROBLEMS 259 7.3.2 ERRONEOUS ASSUMPTIONS ABOUT MEMORY CONSISTENCY 262
7.3.3 INCORRECT USE OF FLUSH 264 7.3.4 A WELL-MASKED DATA RACE 266 7.3.5
DEADLOCK SITUATIONS 268 7.4 DEBUGGING OPENMP CODES 271 7.4.1
VERIFICATION OF THE SEQUENTIAL VERSION 271 7.4.2 VERIFICATION OF THE
PARALLEL CODE 272 7.4.3 HOW CAN TOOLS HELP? 272 7.5 WRAP-UP 276 CONTENTS
8 UNDER THE HOOD: HOW OPENMP REALLY WORKS 277 8.1 INTRODUCTION 277 8.2
THE BASICS OF COMPILATION 278 8.2.1 OPTIMIZING THE CODE 279 8.2.2
SETTING UP STORAGE FOR THE PROGRAM S DATA 280 8.3 OPENMP TRANSLATION 282
8.3.1 FRONT-END EXTENSIONS 283 8.3.2 NORMALIZATION OF OPENMP CONSTRUCTS
284 8.3.3 TRANSLATING ARRAY STATEMENTS 286 8.3.4 TRANSLATING PARALLEL
REGIONS 286 8.3.5 IMPLEMENTING WORKSHARING 291 8.3.6 IMPLEMENTING
CLAUSES ON WORKSHARING CONSTRUCTS 294 8.3.7 DEALING WITH ORPHAN
DIRECTIVES 297 8.3.8 OPENMP DATA ENVIRONMENT 298 8.3.9 DO IDLE THREADS
SLEEP? 300 8.3.10 HANDLING SYNCHRONIZATION CONSTRUCTS 302 8.4 THE OPENMP
RUNTIME SYSTEM 303 8.5 IMPACT OF OPENMP ON COMPILER OPTIMIZATIONS 304
8.6 WRAP-UP 304 9 THE FUTURE OF OPENMP 307 9.1 INTRODUCTION 307 9.2 THE
ARCHITECTURAL CHALLENGE 309 9.3 OPENMP FOR DISTRIBUTED-MEMORY SYSTEMS
311 9.4 INCREASING THE EXPRESSIVITY OF OPENMP 312 9.4.1 ENHANCING OPENMP
FEATURES 312 9.4.2 NEW FEATURES AND NEW KINDS OF APPLICATIONS 314 9.5
HOW MIGHT OPENMP EVOLVE? 317 9.6 IN CONCLUSION 318 A GLOSSARY 321
REFERENCES 331 INDEX
|
adam_txt |
USING OPENMP PORTABLE SHARED MEMORY PARALLEL PROGRAMMING BARBARA
CHAPMAN, GABRIELE JOST, RUUD VAN DER PAS THE MIT PRESS CAMBRIDGE,
MASSACHUSETTS LONDON, ENGLAND CONTENTS SERIES FOREWORD XIII FOREWORD XV
PREFACE XIX 1 INTRODUCTION 1 1.1 WHY PARALLEL COMPUTERS ARE HERE TO STAY
1 1.2 SHARED-MEMORY PARALLEL COMPUTERS 3 1.2.1 CACHE MEMORY IS NOT
SHARED 4 1.2.2 IMPLICATIONS OF PRIVATE CACHE MEMORY 6 1.3 PROGRAMMING
SMPS AND THE ORIGIN OF OPENMP 6 1.3.1 WHAT ARE THE NEEDS? 7 1.3.2 A
BRIEF HISTORY OF SAVING TIME 7 1.4 WHAT IS OPENMP? 8 1.5 CREATING AN
OPENMP PROGRAM 9 1.6 THE BIGGER PICTURE 11 1.7 PARALLEL PROGRAMMING
MODELS 13 1.7.1 REALIZATION OF SHARED- AND DISTRIBUTED-MEMORY 14 MODELS
1.8 WAYS TO CREATE PARALLEL PROGRAMS 15 1.8.1 A SIMPLE COMPARISON 16 1.9
A FINAL WORD 21 2 OVERVIEW OF OPENMP 23 2.1 INTRODUCTION 23 2.2 THE IDEA
OF OPENMP 23 2.3 THE FEATURE SET 25 2.3.1 CREATING TEAMS OF THREADS 25
2.3.2 SHARING WORK AMONG THREADS 26 2.3.3 THE OPENMP MEMORY MODEL 28
2.3.4 THREAD SYNCHRONIZATION 29 2.3.5 OTHER FEATURES TO NOTE 30 2.4
OPENMP PROGRAMMING STYLES 31 VLLL CONTENTS 2.5 CORRECTNESS
CONSIDERATIONS 32 2.6 PERFORMANCE CONSIDERATIONS 33 2.7 WRAP-UP 34 3
WRITING A FIRST OPENMP PROGRAM 35 3.1 INTRODUCTION 35 3.2 MATRIX TIMES
VECTOR OPERATION 37 3.2.1 C AND FORTRAN IMPLEMENTATIONS OF THE PROBLEM
38 3.2.2 A SEQUENTIAL IMPLEMENTATION OF THE MATRIX TIMES 38 VECTOR
OPERATION 3.3 USING OPENMP TO PARALLELIZE THE MATRIX TIMES VECTOR 41
PRODUCT 3.4 KEEPING SEQUENTIAL AND PARALLEL PROGRAMS AS A SINGLE 47
SOURCE CODE 3.5 WRAP-UP 50 4 OPENMP LANGUAGE FEATURES 51 4.1
INTRODUCTION 51 4.2 TERMINOLOGY 52 4.3 PARALLEL CONSTRUCT 53 4.4 SHARING
THE WORK AMONG THREADS IN AN OPENMP PROGRAM 57 4.4.1 LOOP CONSTRUCT 58
4.4.2 THE SECTIONS CONSTRUCT 60 4.4.3 THE SINGLE CONSTRUCT 64 4.4.4
WORKSHARE CONSTRUCT 66 4.4.5 COMBINED PARALLEL WORK-SHARING CONSTRUCTS
68 4.5 CLAUSES TO CONTROL PARALLEL AND WORK-SHARING CONSTRUCTS 70 4.5.1
SHARED CLAUSE 71 4.5.2 PRIVATE CLAUSE 72 4.5.3 LASTPRIVATE CLAUSE 73
4.5.4 FIRSTPRIVATE CLAUSE 75 4.5.5 DEFAULT CLAUSE 77 4.5.6 NOWAIT CLAUSE
78 CONTENTS IX 79 83 84 86 87 90 93 94 95 100 100 102 102 105 110 110
111 111 114 118 123 5 HOW TO GET GOOD PERFORMANCE BY USING 125 OPENMP
5.1 INTRODUCTION 125 5.2 PERFORMANCE CONSIDERATIONS FOR SEQUENTIAL
PROGRAMS 125 5.2.1 MEMORY ACCESS PATTERNS AND PERFORMANCE 126 5.2.2
TRANSLATION-LOOKASIDE BUFFER 128 5.2.3 LOOP OPTIMIZATIONS 129 5.2.4 USE
OF POINTERS AND CONTIGUOUS MEMORY IN C 136 5.2.5 USING COMPILERS 137 5.3
MEASURING OPENMP PERFORMANCE 138 5.3.1 UNDERSTANDING THE PERFORMANCE OF
AN OPENMP 140 PROGRAM 4.6 4.7 4.8 4.9 4.10 4.5.7 SCHEDULE CLAUSE OPENMP
SYNCHRONIZATION CONSTRUCTS 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 BARRIER
CONSTRUCT ORDERED CONSTRUCT CRITICAL CONSTRUCT ATOMIC CONSTRUCT LOCKS
MASTER CONSTRUCT INTERACTION WITH THE EXECUTION ENVIRONMENT MORE OPENMP
CLAUSES 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 IF CLAUSE NUMJIHREADS CLAUSE
ORDERED CLAUSE REDUCTION CLAUSE COPYIN CLAUSE COPYPRIVATE CLAUSE
ADVANCED OPENMP CONSTRUCTS 4.9.1 4.9.2 4.9.3 NESTED PARALLELISM FLUSH
DIRECTIVE THREADPRIVATE DIRECTIVE WRAP-UP X CONTENTS 5.3.2 OVERHEADS OF
THE OPENMP TRANSLATION 142 5.3.3 INTERACTION WITH THE EXECUTION
ENVIRONMENT 143 5.4 BEST PRACTICES 145 5.4.1 OPTIMIZE BARRIER USE 145
5.4.2 AVOID THE ORDERED CONSTRUCT 147 5.4.3 AVOID LARGE CRITICAL REGIONS
147 5.4.4 MAXIMIZE PARALLEL REGIONS 148 5.4.5 AVOID PARALLEL REGIONS IN
INNER LOOPS 148 5.4.6 ADDRESS POOR LOAD BALANCE 150 5.5 ADDITIONAL
PERFORMANCE CONSIDERATIONS 152 5.5.1 THE SINGLE CONSTRUCT VERSUS THE
MASTER CONSTRUCT 153 5.5.2 AVOID FALSE SHARING 153 5.5.3 PRIVATE VERSUS
SHARED DATA 156 5.6 CASE STUDY: THE MATRIX TIMES VECTOR PRODUCT 156
5.6.1 TESTING CIRCUMSTANCES AND PERFORMANCE METRICS 157 5.6.2 A MODIFIED
OPENMP IMPLEMENTATION 158 5.6.3 PERFORMANCE RESULTS FOR THE C VERSION
159 5.6.4 PERFORMANCE RESULTS FOR THE FORTRAN VERSION 164 5.7 FORTRAN
PERFORMANCE EXPLORED FURTHER 167 5.8 AN ALTERNATIVE FORTRAN
IMPLEMENTATION 180 5.9 WRAP-UP 189 6 USING OPENMP IN THE REAL WORLD 191
6.1 SCALABILITY CHALLENGES FOR OPENMP 191 6.2 ACHIEVING SCALABILITY ON
CC-NUMA ARCHITECTURES 193 6.2.1 MEMORY PLACEMENT AND THREAD BINDING: WHY
DO 193 WE CARE? 6.2.2 EXAMPLES OF VENDOR-SPECIFIC CC-NUMA SUPPORT 196
6.2.3 IMPLICATIONS OF DATA AND THREAD PLACEMENT ON 199 CC-NUMA
PERFORMANCE 6.3 SPMD PROGRAMMING 200 CASE STUDY 1: A CFD FLOW SOLVER 201
6.4 COMBINING OPENMP AND MESSAGE PASSING 207 6.4.1 CASE STUDY 2: THE NAS
PARALLEL BENCHMARK BT 211 CONTENTS XI 6.4.2 CASE STUDY 3: THE MULTI-ZONE
NAS PARALLEL 214 BENCHMARKS 6.5 NESTED OPENMP PARALLELISM 216 6.5.1 CASE
STUDY 4: EMPLOYING NESTED OPENMP FOR 221 MULTI-ZONE CFD BENCHMARKS 6.6
PERFORMANCE ANALYSIS OF OPENMP PROGRAMS 228 6.6.1 PERFORMANCE PROFILING
OF OPENMP PROGRAMS 228 6.6.2 INTERPRETING TIMING INFORMATION 230 6.6.3
USING HARDWARE COUNTERS 239 6.7 WRAP-UP 241 7 TROUBLESHOOTING 243 7.1
INTRODUCTION 243 7.2 COMMON MISUNDERSTANDINGS AND FREQUENT ERRORS 243
7.2.1 DATA RACE CONDITIONS 243 7.2.2 DEFAULT DATA-SHARING ATTRIBUTES 246
7.2.3 VALUES OF PRIVATE VARIABLES 249 7.2.4 PROBLEMS WITH THE MASTER
CONSTRUCT 250 7.2.5 ASSUMPTIONS ABOUT WORK SCHEDULING 252 7.2.6 INVALID
NESTING OF DIRECTIVES 252 7.2.7 SUBTLE ERRORS IN THE USE OF DIRECTIVES
255 7.2.8 HIDDEN SIDE EFFECTS, OR THE NEED FOR THREAD SAFETY 255 7.3
DEEPER TROUBLE: MORE SUBTLE PROBLEMS 259 7.3.1 MEMORY CONSISTENCY
PROBLEMS 259 7.3.2 ERRONEOUS ASSUMPTIONS ABOUT MEMORY CONSISTENCY 262
7.3.3 INCORRECT USE OF FLUSH 264 7.3.4 A WELL-MASKED DATA RACE 266 7.3.5
DEADLOCK SITUATIONS 268 7.4 DEBUGGING OPENMP CODES 271 7.4.1
VERIFICATION OF THE SEQUENTIAL VERSION 271 7.4.2 VERIFICATION OF THE
PARALLEL CODE 272 7.4.3 HOW CAN TOOLS HELP? 272 7.5 WRAP-UP 276 CONTENTS
8 UNDER THE HOOD: HOW OPENMP REALLY WORKS 277 8.1 INTRODUCTION 277 8.2
THE BASICS OF COMPILATION 278 8.2.1 OPTIMIZING THE CODE 279 8.2.2
SETTING UP STORAGE FOR THE PROGRAM'S DATA 280 8.3 OPENMP TRANSLATION 282
8.3.1 FRONT-END EXTENSIONS 283 8.3.2 NORMALIZATION OF OPENMP CONSTRUCTS
284 8.3.3 TRANSLATING ARRAY STATEMENTS 286 8.3.4 TRANSLATING PARALLEL
REGIONS 286 8.3.5 IMPLEMENTING WORKSHARING 291 8.3.6 IMPLEMENTING
CLAUSES ON WORKSHARING CONSTRUCTS 294 8.3.7 DEALING WITH ORPHAN
DIRECTIVES 297 8.3.8 OPENMP DATA ENVIRONMENT 298 8.3.9 DO IDLE THREADS
SLEEP? 300 8.3.10 HANDLING SYNCHRONIZATION CONSTRUCTS 302 8.4 THE OPENMP
RUNTIME SYSTEM 303 8.5 IMPACT OF OPENMP ON COMPILER OPTIMIZATIONS 304
8.6 WRAP-UP 304 9 THE FUTURE OF OPENMP 307 9.1 INTRODUCTION 307 9.2 THE
ARCHITECTURAL CHALLENGE 309 9.3 OPENMP FOR DISTRIBUTED-MEMORY SYSTEMS
311 9.4 INCREASING THE EXPRESSIVITY OF OPENMP 312 9.4.1 ENHANCING OPENMP
FEATURES 312 9.4.2 NEW FEATURES AND NEW KINDS OF APPLICATIONS 314 9.5
HOW MIGHT OPENMP EVOLVE? 317 9.6 IN CONCLUSION 318 A GLOSSARY 321
REFERENCES 331 INDEX |
any_adam_object | 1 |
any_adam_object_boolean | 1 |
author | Chapman, Barbara 1954- Jost, Gabriele Pas, Ruud van der |
author_GND | (DE-588)133853039 (DE-588)137238975 |
author_facet | Chapman, Barbara 1954- Jost, Gabriele Pas, Ruud van der |
author_role | aut aut aut |
author_sort | Chapman, Barbara 1954- |
author_variant | b c bc g j gj r v d p rvd rvdp |
building | Verbundindex |
bvnumber | BV023211665 |
callnumber-first | Q - Science |
callnumber-label | QA76 |
callnumber-raw | QA76.642 |
callnumber-search | QA76.642 |
callnumber-sort | QA 276.642 |
callnumber-subject | QA - Mathematics |
classification_rvk | ST 151 ST 185 ST 230 ST 250 |
ctrlnum | (OCoLC)263663151 (DE-599)BVBBV023211665 |
dewey-full | 005.2/75 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.2/75 |
dewey-search | 005.2/75 |
dewey-sort | 15.2 275 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
discipline_str_mv | Informatik |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>02391nam a2200565zc 4500</leader><controlfield tag="001">BV023211665</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20121114 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">080313s2008 xxuad|| |||| 00||| eng d</controlfield><datafield tag="010" ind1=" " ind2=" "><subfield code="a">2007026656</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780262533027</subfield><subfield code="c">paperback : alk. paper</subfield><subfield code="9">978-0-262-53302-7</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0262533022</subfield><subfield code="c">paperback : alk. paper</subfield><subfield code="9">0-262-53302-2</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780262033770</subfield><subfield code="c">hardcover : alk. paper</subfield><subfield code="9">978-0-262-03377-0</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0262033771</subfield><subfield code="c">hardcover : alk. paper</subfield><subfield code="9">0-262-03377-1</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)263663151</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV023211665</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">aacr</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">xxu</subfield><subfield code="c">US</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-703</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-706</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-634</subfield></datafield><datafield tag="050" ind1=" " ind2="0"><subfield code="a">QA76.642</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.2/75</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 151</subfield><subfield code="0">(DE-625)143595:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 185</subfield><subfield code="0">(DE-625)143606:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Chapman, Barbara</subfield><subfield code="d">1954-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)133853039</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Using OpenMP</subfield><subfield code="b">portable shared memory parallel programming</subfield><subfield code="c">Barbara Chapman ; Gabriele Jost ; Ruud van der Pas</subfield></datafield><datafield tag="246" ind1="1" ind2="0"><subfield code="a">Open MP</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Cambridge, Mass. [u.a.]</subfield><subfield code="b">MIT Press</subfield><subfield code="c">2008</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXII, 353 S.</subfield><subfield code="b">Ill., graph. Darst.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Scientific and engineering computation</subfield></datafield><datafield tag="650" ind1=" " ind2="7"><subfield code="a">Parallélisme (informatique)</subfield><subfield code="2">ram</subfield></datafield><datafield tag="650" ind1=" " ind2="7"><subfield code="a">Programmation parallèle (informatique)</subfield><subfield code="2">ram</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Parallel programming (Computer science)</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Application program interfaces (Computer software)</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">OpenMP</subfield><subfield code="0">(DE-588)4648816-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Parallelverarbeitung</subfield><subfield code="0">(DE-588)4075860-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">OpenMP</subfield><subfield code="0">(DE-588)4648816-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Parallelverarbeitung</subfield><subfield code="0">(DE-588)4075860-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Jost, Gabriele</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Pas, Ruud van der</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)137238975</subfield><subfield code="4">aut</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="q">text/html</subfield><subfield code="u">http://www.loc.gov/catdir/toc/ecip0721/2007026656.html</subfield><subfield code="3">Table of contents only</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">GBV Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=016397719&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-016397719</subfield></datafield></record></collection> |
id | DE-604.BV023211665 |
illustrated | Illustrated |
index_date | 2024-07-02T20:12:16Z |
indexdate | 2024-07-09T21:13:11Z |
institution | BVB |
isbn | 9780262533027 0262533022 9780262033770 0262033771 |
language | English |
lccn | 2007026656 |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-016397719 |
oclc_num | 263663151 |
open_access_boolean | |
owner | DE-703 DE-29T DE-706 DE-83 DE-634 |
owner_facet | DE-703 DE-29T DE-706 DE-83 DE-634 |
physical | XXII, 353 S. Ill., graph. Darst. |
publishDate | 2008 |
publishDateSearch | 2008 |
publishDateSort | 2008 |
publisher | MIT Press |
record_format | marc |
series2 | Scientific and engineering computation |
spelling | Chapman, Barbara 1954- Verfasser (DE-588)133853039 aut Using OpenMP portable shared memory parallel programming Barbara Chapman ; Gabriele Jost ; Ruud van der Pas Open MP Cambridge, Mass. [u.a.] MIT Press 2008 XXII, 353 S. Ill., graph. Darst. txt rdacontent n rdamedia nc rdacarrier Scientific and engineering computation Parallélisme (informatique) ram Programmation parallèle (informatique) ram Parallel programming (Computer science) Application program interfaces (Computer software) OpenMP (DE-588)4648816-9 gnd rswk-swf Parallelverarbeitung (DE-588)4075860-6 gnd rswk-swf OpenMP (DE-588)4648816-9 s Parallelverarbeitung (DE-588)4075860-6 s DE-604 Jost, Gabriele Verfasser aut Pas, Ruud van der Verfasser (DE-588)137238975 aut text/html http://www.loc.gov/catdir/toc/ecip0721/2007026656.html Table of contents only GBV Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=016397719&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Chapman, Barbara 1954- Jost, Gabriele Pas, Ruud van der Using OpenMP portable shared memory parallel programming Parallélisme (informatique) ram Programmation parallèle (informatique) ram Parallel programming (Computer science) Application program interfaces (Computer software) OpenMP (DE-588)4648816-9 gnd Parallelverarbeitung (DE-588)4075860-6 gnd |
subject_GND | (DE-588)4648816-9 (DE-588)4075860-6 |
title | Using OpenMP portable shared memory parallel programming |
title_alt | Open MP |
title_auth | Using OpenMP portable shared memory parallel programming |
title_exact_search | Using OpenMP portable shared memory parallel programming |
title_exact_search_txtP | Using OpenMP portable shared memory parallel programming |
title_full | Using OpenMP portable shared memory parallel programming Barbara Chapman ; Gabriele Jost ; Ruud van der Pas |
title_fullStr | Using OpenMP portable shared memory parallel programming Barbara Chapman ; Gabriele Jost ; Ruud van der Pas |
title_full_unstemmed | Using OpenMP portable shared memory parallel programming Barbara Chapman ; Gabriele Jost ; Ruud van der Pas |
title_short | Using OpenMP |
title_sort | using openmp portable shared memory parallel programming |
title_sub | portable shared memory parallel programming |
topic | Parallélisme (informatique) ram Programmation parallèle (informatique) ram Parallel programming (Computer science) Application program interfaces (Computer software) OpenMP (DE-588)4648816-9 gnd Parallelverarbeitung (DE-588)4075860-6 gnd |
topic_facet | Parallélisme (informatique) Programmation parallèle (informatique) Parallel programming (Computer science) Application program interfaces (Computer software) OpenMP Parallelverarbeitung |
url | http://www.loc.gov/catdir/toc/ecip0721/2007026656.html http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=016397719&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT chapmanbarbara usingopenmpportablesharedmemoryparallelprogramming AT jostgabriele usingopenmpportablesharedmemoryparallelprogramming AT pasruudvander usingopenmpportablesharedmemoryparallelprogramming AT chapmanbarbara openmp AT jostgabriele openmp AT pasruudvander openmp |