|
ABSTRACT
We present case studies that apply generic programming to the development of high-performance parallel code for solving two archetypal PDEs. We examine the overall structure of the example scientific codes and consider their generic implementation. With a generic approach it is a straight-forward matter to reuse software components from different sources; implementations with components from ITL, MTL, Blitz++, A++/P++, and Fortran BLAS are presented. Our newly-developed Generic Message Passing framework is used for communication. We compare the generic implementations to equivalent implementations developed with alternative libraries and languages and discuss not only performance but software engineering issues as well.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
C. Ashcraft and R. Grimes. SPOOLES: An Object-Oriented sparse matrix library. In Proceedings of the 1999 SIAM Conference on Parallel Processing for Scientific Computing, 1999.
|
| |
2
|
|
| |
3
|
|
| |
4
|
Boost. Boost Graph Library.
|
| |
5
|
|
| |
6
|
K. Briggs. The doubledouble library.
|
| |
7
|
|
| |
8
|
X.-C. Cai, W. D. Gropp, D. E. Keyes, and M. D. Tidriri. Newton-Krylov-Schwarz methods in CFD. In F. Hebeker and R. Rannacher, editors, The International workshop on Numerical Methods for the Navier-Stokes Equations, 1994.
|
| |
9
|
O. Coulaud and E. Dillon. Para++: C++ binding for message passing. Technical report, Institut National De Recherche En Informatique Et En Automatique, 1997.
|
 |
10
|
|
| |
11
|
|
 |
12
|
|
 |
13
|
|
| |
14
|
|
| |
15
|
W. D. Gropp and B. Smith. PETSc: Portable extensible tools for scientific computation. Technical report, Argonne National Laboratory, Argonne, IL, 1994.
|
| |
16
|
M. E. Hayder, C. Ierotheou, and D. E. Keyes. Three parallel programming paradigms: Comparisons on an archetypal PDE computation. Parallel and Distributed Computing Practices, (2):35--53, 2000.
|
| |
17
|
|
| |
18
|
M. Heroux, T. Barth, D. Day, R. Hoekstra, R. Lehoucq, K. Long, R. Pawlowski, R. Tuminaro, and A. Williams. The Trilinos project.
|
| |
19
|
|
| |
20
|
M. R. Hestenes and E. Stiefel. Methods of conjugate gradients for solving linear systems. J. Res. Nat. Bur. Standards, 49(6):409--436, December 1952.
|
| |
21
|
|
 |
22
|
|
| |
23
|
L.-Q. Lee and A. Lumsdaine. The generic message-passing framework. In preparation.
|
| |
24
|
|
| |
25
|
W. Liu and A. Sherman. Comparative analysis of the Cuthill-McKee and the reverse Cuthill-McKee ordering algorithnms for sparse matrices. SIAM J. Numerical Analysis, pages 198--213, 1976.
|
| |
26
|
A. Lumsdaine, L.-Q. Lee, and J. Siek. The iterative template library home page. http://ww.osl.iu.edu/research/itl.
|
| |
27
|
A. Lumsdaine, J. Siek, and L.-Q. Lee. The matrix template library home page. http://ww.osl.iu.edu/research/mtl.
|
| |
28
|
N. C. Myers. Traits: a new and useful template technique. C++ Report, June 1995.
|
| |
29
|
D. Quinlan. A++/P++ Manual. Lawrence Livermore National Laboratory.
|
| |
30
|
|
| |
31
|
J. Siek and A. Lumsdaine. Concept checking: Binding parametric polymorphism in C++. In First Workshop on C++ Template Programming, Erfurt, Germany, October 2000.
|
| |
32
|
J. Siek, A. Lumsdaine, and L.-Q. Lee. Generic programming for high performance numerical linear algebra. In Proceedings of the SIAM Workshop on Object Oriented Methods for Inter-operable Scientific and Engineering Computing (OO'98). SIAM Press, 1998.
|
| |
33
|
A. Skjellum, D. G. Wooley, A. Lumsdaine, and J. M. Squyres. Object-oriented analysis and design of the message passing interface. Concurrency: Theory and Practice, 13(4):245--292, April 2001.
|
| |
34
|
A. A. Stepanov and M. Lee. The Standard Template Library. Technical Report X3J16/94-0095, WG21/N0482, ISO Programming Language C++ Project, May 1994.
|
| |
35
|
The ESI technical forum. Equation Solver Interface (ESI) standards multi-lab working group. http://z.ca.sandia.gov/esi.
|
| |
36
|
R. S. Tuminaro, M. Heroux, S. A. Hutchinson, and J. N. Shadid. Official Aztec User's Guide: Version 2.1, November 1999.
|
| |
37
|
T. Veldhuizen. Blitz++ home page. http://oonumerics.org/blitz.
|
|