Atjaunināt sīkdatņu piekrišanu

E-grāmata: Parallel Programming with Co-arrays

(Minnesota Supercomputing Institute, Minneapolis, USA)
Citas grāmatas par šo tēmu:
  • Formāts - PDF+DRM
  • Cena: 56,34 €*
  • * ši ir gala cena, t.i., netiek piemērotas nekādas papildus atlaides
  • Ielikt grozā
  • Pievienot vēlmju sarakstam
  • Šī e-grāmata paredzēta tikai personīgai lietošanai. E-grāmatas nav iespējams atgriezt un nauda par iegādātajām e-grāmatām netiek atmaksāta.
Citas grāmatas par šo tēmu:

DRM restrictions

  • Kopēšana (kopēt/ievietot):

    nav atļauts

  • Drukāšana:

    nav atļauts

  • Lietošana:

    Digitālo tiesību pārvaldība (Digital Rights Management (DRM))
    Izdevējs ir piegādājis šo grāmatu šifrētā veidā, kas nozīmē, ka jums ir jāinstalē bezmaksas programmatūra, lai to atbloķētu un lasītu. Lai lasītu šo e-grāmatu, jums ir jāizveido Adobe ID. Vairāk informācijas šeit. E-grāmatu var lasīt un lejupielādēt līdz 6 ierīcēm (vienam lietotājam ar vienu un to pašu Adobe ID).

    Nepieciešamā programmatūra
    Lai lasītu šo e-grāmatu mobilajā ierīcē (tālrunī vai planšetdatorā), jums būs jāinstalē šī bezmaksas lietotne: PocketBook Reader (iOS / Android)

    Lai lejupielādētu un lasītu šo e-grāmatu datorā vai Mac datorā, jums ir nepieciešamid Adobe Digital Editions (šī ir bezmaksas lietotne, kas īpaši izstrādāta e-grāmatām. Tā nav tas pats, kas Adobe Reader, kas, iespējams, jau ir jūsu datorā.)

    Jūs nevarat lasīt šo e-grāmatu, izmantojot Amazon Kindle.

Parallel Programming with Co-Arrays describes the basic techniques used to design parallel algorithms for high-performance, scientific computing. It is intended for upper-level undergraduate students and graduate students who need to develop parallel codes with little or no previous introduction to parallel computing. It is also intended as a reference manual for researchers active in the field of scientific computing. All the algorithms in the book are based on partition operators. These operators provide a unifying principle that fits seemingly disparate techniques into an overall framework for algorithm design. The book uses the co-array programming model to illustrate how to write code for concrete examples, but it emphasizes that the important concepts for algorithm design are independent of the programming model. With these concepts in mind, the reader can write algorithms in different programming models based on personal taste and comfort.
Preface ix
1 Prologue
1(2)
2 The Co-array Programming Model
3(6)
2.1 A co-array program
3(4)
2.2 Exercises
7(2)
3 Partition Operators
9(10)
3.1 Uniform partitions
9(3)
3.2 Non-uniform partitions
12(2)
3.3 Row-partitioned matrix-vector multiplication
14(2)
3.4 Input/output in the co-array model
16(1)
3.5 Exercises
17(2)
4 Reverse Partition Operators
19(8)
4.1 The partition of unity
19(2)
4.2 Column-partitioned matrix-vector multiplication
21(2)
4.3 The dot-product operation
23(1)
4.4 Extended definition of partition operators
24(1)
4.5 Exercises
25(2)
5 Collective Operations
27(12)
5.1 Reduction to root
27(3)
5.2 Broadcast from root
30(1)
5.3 The sum-to-all operation
31(1)
5.4 The max-to-all and min-to-all operations
32(1)
5.5 Vector norms
33(1)
5.6 Collectives with array arguments
33(1)
5.7 The scatter and gather operations
34(3)
5.8 A cautionary note about functions with side effects
37(1)
5.9 Exercises
37(2)
6 Performance Modeling
39(18)
6.1 Execution time for the sum-to-all operation
40(1)
6.2 Execution time for the dot-product operation
41(2)
6.3 Speedup and efficiency
43(1)
6.4 Strong scaling under a fixed-size constraint
43(4)
6.5 Weak scaling under a fixed-time constraint
47(2)
6.6 Weak scaling under a fixed-work constraint
49(1)
6.7 Weak scaling under a fixed-efficiency constraint
50(2)
6.8 Some remarks on computer performance modeling
52(2)
6.9 Exercises
54(3)
7 Partitioned Matrix Classes
57(10)
7.1 The abstract matrix class
57(2)
7.2 Sparse matrix classes
59(2)
7.3 The compressed-sparse-row matrix class
61(3)
7.4 Matrix-vector multiplication for a CSR matrix
64(2)
7.5 Exercises
66(1)
8 Iterative Solvers for Sparse Matrices
67(12)
8.1 The conjugate gradient algorithm
67(3)
8.2 Other Krylov solvers
70(1)
8.3 Performance analysis for the conjugate gradient algorithm
71(3)
8.4 Strong scaling
74(2)
8.5 Weak scaling
76(2)
8.6 Iso-efficiency
78(1)
8.7 Exercises
78(1)
9 Blocked Matrices
79(20)
9.1 Partitioned dense matrices
80(1)
9.2 An abstract class for dense matrices
80(1)
9.3 The dense matrix class
81(3)
9.4 Matrix-matrix multiplication
84(3)
9.5 LU decomposition
87(5)
9.6 Partial pivoting
92(2)
9.7 Solving triangular systems of equations
94(4)
9.8 Exercises
98(1)
10 The Matrix Transpose Operation
99(12)
10.1 The transpose operation
99(3)
10.2 A row-partitioned matrix transposed to a row-partitioned matrix
102(3)
10.3 The Fast Fourier Transform
105(1)
10.4 Performance analysis
106(2)
10.5 Strong scaling
108(1)
10.6 Weak scaling
109(1)
10.7 Exercises
110(1)
11 The Halo Exchange Operation
111(8)
11.1 Finite difference methods
111(3)
11.2 Partitioned finite difference methods
114(2)
11.3 The halo-exchange subroutine
116(2)
11.4 Exercises
118(1)
12 Subpartition Operators
119(8)
12.1 Subpartition operators
119(2)
12.2 Assigning blocks to images
121(1)
12.3 Combined effect of the two partition operations
122(1)
12.4 Permuted distributions
122(2)
12.5 The cyclic distribution
124(1)
12.6 Load balancing
125(1)
12.7 Exercises
126(1)
13 Blocked Linear Algebra
127(14)
13.1 Blocked matrices
127(3)
13.2 The block matrix class
130(6)
13.3 Optimization of the LU-decomposition algorithm
136(2)
13.4 Exercises
138(3)
14 The Finite Element Method
141(18)
14.1 Basic ideas from finite element analysis
142(1)
14.2 Nodes, elements and basis functions
143(4)
14.3 Mesh partition operators
147(3)
14.4 The mesh class
150(4)
14.5 Integrating the heat equation
154(2)
14.6 Exercises
156(3)
15 Graph Algorithms
159(12)
15.1 Graphs
159(2)
15.2 The breadth-first search
161(3)
15.3 The graph class
164(1)
15.4 A parallel breadth-first-search algorithm
165(2)
15.5 The Graph 500 benchmark
167(2)
15.6 Exercises
169(2)
16 Epilogue
171(2)
A A Brief Reference Manual for the Co-array Model 173(24)
A.1 The image index
174(1)
A.2 Co-arrays and co-dimensions
175(2)
A.3 Relative co-dimension indices
177(1)
A.4 Co-array variables with multiple co-dimensions
178(1)
A.5 Co-array variables of derived type
179(3)
A.6 Allocatable co-array variables
182(1)
A.7 Pointers
182(1)
A.8 Procedure interfaces
183(1)
A.9 Execution control
183(1)
A.10 Full barriers
184(1)
A.11 Partial barriers
185(2)
A.12 Critical segments and locks
187(2)
A.13 Input/output
189(1)
A.14 Command line arguments
190(1)
A.15 Program termination
191(1)
A.16 Inquiry functions
191(1)
A.17 Image index functions
192(1)
A.18 Execution control statements
192(5)
Bibliography 197(10)
Index 207
Robert Numrich's professional career has been a study of computational methods for high-performance, scientific computing, starting with his PhD. thesis in theoretical chemistry at the University of Minnesota, continuing at Control Data Corporation designing vector algorithms for the Cyber-205, then at Cray Research developing performance models for the Cray-2 and Cray-3 computers. As a member of the core design team for the Cray-T3D and Cray-T3E, he developed the co-array parallel programming model. After Cray, he held a senior research position at the Minnesota Supercomputing Institute, where he continued work on parallel algorithms and developed performance models using the methods of dimensional analysis. He continued this work as Senior Scientist at the High-Performance Computing Center, City University of New York, and currently holds a position as Adjunct Professor of Computer Science at the CUNY Graduate Center. This book is a summary of the important ideas he has learned, developed, and used throughout his career.