000 06958nam a2200685 i 4500
001 6813266
003 IEEE
005 20200413152904.0
006 m eo d
007 cr cn |||m|||a
008 120215s2012 caua foab 000 0 eng d
020 _a9781608458424 (electronic bk.)
020 _z9781608458417 (pbk.)
024 7 _a10.2200/S00340ED1V01Y201201CAC019
_2doi
035 _a(CaBNVSL)swl00400480
035 _a(OCoLC)777009395
040 _aCaBNVSL
_cCaBNVSL
_dCaBNVSL
050 4 _aQA76.58
_b.M532 2012
082 0 4 _a004.35
_223
100 1 _aMidkif, Samuel P.
245 1 0 _aAutomatic parallelization
_h[electronic resource] :
_ban overview of fundamental compiler techniques /
_cSamuel P. Midkif.
260 _aSan Rafael, Calif. (1537 Fourth Street, San Rafael, CA 94901 USA) :
_bMorgan & Claypool,
_cc2012.
300 _a1 electronic text (xii, 157 p.) :
_bill., digital file.
490 1 _aSynthesis lectures on computer architecture,
_x1935-3243 ;
_v# 19
538 _aMode of access: World Wide Web.
538 _aSystem requirements: Adobe Acrobat Reader.
500 _aPart of: Synthesis digital library of engineering and computer science.
500 _aSeries from website.
504 _aIncludes bibliographical references (p. 133-156).
505 0 _a1. Introduction and overview -- 1.1 Parallelism and independence -- 1.2 Parallel execution -- 1.2.1 Shared and distributed memory parallelism -- 1.2.2 Structures of parallel computation -- 1.3 Compiler fundamentals -- 1.3.1 Compiler phases -- 1.3.2 Parsing -- 1.3.3 Intermediate representations -- 1.4 Compiler support for parallel machines --
505 8 _a2. Dependence analysis, dependence graphs and alias analysis -- 2.1 Dataflow analysis -- 2.1.1 Constant propagation -- 2.1.2 Alias analysis -- 2.2 Abstract interpretation -- 2.3 Data dependence analysis -- 2.3.1 Determining references to test for dependence -- 2.3.2 Testing for dependence -- 2.3.3 Arrays of arrays and dependence analysis -- 2.4 Control dependence -- 2.5 Use-def chains and dependence -- 2.6 Dependence analysis in parallel programs --
505 8 _a3. Program parallelization -- 3.1 Simple loop parallelization -- 3.2 Parallelizing loops with acyclic and cyclic dependence graphs -- 3.3 Targeting vector hardware -- 3.4 Parallelizing loops using producer/consumer synchronization -- 3.4.1 Producer and consumer synchronization -- 3.4.2 Optimizing producer/consumer synchronization -- 3.5 Parallelizing recursive constructs -- 3.6 Parallelization of while loops -- 3.6.1 Determining iterations to be executed by a thread -- 3.6.2 Dealing with the effects of speculation -- 3.7 Software pipelining for instruction level parallelism --
505 8 _a4. Transformations to modify and eliminate dependences -- 4.1 Loop peeling and splitting -- 4.2 Loop skewing -- 4.3 Induction variable substitution -- 4.4 Forward substitution -- 4.5 Scalar expansion and privatization -- 4.6 Array privatization -- 4.7 Node splitting -- 4.8 Reduction recognition -- 4.9 Which transformations are most important? --
505 8 _a5. Transformation of iterative and recursive constructs -- 5.1 Loop blocking or strip mining -- 5.2 Loop unrolling -- 5.3 Loop fusion and fission -- 5.4 Loop reversal -- 5.5 Loop interchange -- 5.6 Tiling -- 5.7 Unimodular transformations --
505 8 _a6. Compiling for distributed memory machines -- 6.1 Data distribution -- 6.1.1 Replicated distribution -- 6.1.2 Block distribution -- 6.1.3 Cyclic distribution -- 6.1.4 Block-cyclic distribution -- 6.2 Computing the reference set -- 6.3 Computation partitioning -- 6.3.1 Bounds of replicated array dimensions -- 6.3.2 Bounds of block distributed array dimensions -- 6.3.3 Bounds of cyclically distributed array dimensions -- 6.3.4 Bounds of block-cyclically distributed array dimensions -- 6.3.5 Subscripts with multiple loop indices -- 6.3.6 Generating loop bounds for multi-dimensional arrays -- 6.3.7 Generating loop bounds with multiple references -- 6.4 Generating communication -- 6.4.1 The shift communication pattern -- 6.4.2 The broadcast communication pattern -- 6.5 Distributed memory programming languages -- 6.5.1 High performance Fortran (HPF) -- 6.5.2 Co-array Fortran -- 6.5.3 Unified parallel C (UPC) --
505 8 _a7. Solving diophantine equations -- 7.1 Solving single diophantine equations -- 7.2 Solving multiple diophantine equations -- 7.3 Extreme values of integer functions --
505 8 _a8. A guide to further reading -- 8.1 Compiler fundamentals -- 8.2 Dependence analysis, dependence graphs and alias analysis -- 8.3 Program parallelization -- 8.4 Transformations to modify and eliminate dependences -- 8.5 Reduction recognition -- 8.6 Transformation of iterative and recursive constructs -- 8.7 Tiling -- 8.8 Compiling for distributed memory machines -- 8.9 Current and future directions in parallelizing compilers -- Author's biography.
506 1 _aAbstract freely available; full-text restricted to subscribers or individual document purchasers.
510 0 _aCompendex
510 0 _aINSPEC
510 0 _aGoogle scholar
510 0 _aGoogle book search
520 3 _aCompiling for parallelism is a longstanding topic of compiler research. This book describes the fundamental principles of compiling "regular" numerical programs for parallelism.We begin with an explanation of analyses that allow a compiler to understand the interaction of data reads and writes in different statements and loop iterations during program execution. These analyses include dependence analysis, use-def analysis and pointer analysis. Next, we describe how the results of these analyses are used to enable transformations that make loops more amenable to parallelization, and discuss transformations that expose parallelism to target shared memory multicore and vector processors. We then discuss some problems that arise when parallelizing programs for execution on distributed memory machines. Finally, we conclude with an overview of solving Diophantine equations and suggestions for further readings in the topics of this book to enable the interested reader to delve deeper into the field.
530 _aAlso available in print.
588 _aTitle from PDF t.p. (viewed on February 15, 2012).
650 0 _aParallelizing compilers.
653 _acompilers
653 _aautomatic parallelization
653 _adata dependence analysis
653 _adata flow analysis
653 _aintermediate representations
653 _atransformations
653 _aoptimization
653 _ashared memory
653 _adistributed memory
776 0 8 _iPrint version:
_z9781608458417
830 0 _aSynthesis digital library of engineering and computer science.
830 0 _aSynthesis lectures in computer architecture ;
_v# 19.
_x1935-3243
856 4 2 _3Abstract with links to resource
_uhttp://ieeexplore.ieee.org/servlet/opac?bknumber=6813266
999 _c561894
_d561894