Nothing Special   »   [go: up one dir, main page]

skip to main content
article

Tpetra, and the use of generic programming in scientific computing

Published: 01 April 2012 Publication History

Abstract

We present Tpetra, a Trilinos package for parallel linear algebra primitives implementing the Petra object model. We describe Tpetra's design, based on generic programming via C++ templated types and template metaprogramming. We discuss some benefits of this approach in the context of scientific computing, with illustrations consisting of code and notable empirical results.

References

[1]
D.H. Bailey, High-precision software directory, http://crd.lbl. gov/~dhbailey/mpdist/, 2011.
[2]
D.H. Bailey, Y. Hida, X.S. Li and O. Thompson, ARPREC: an arbitrary precision computation package, LBNL Technical Report 53651, 2002.
[3]
C.G. Baker, Developing large-scale scientific software for generic multi-core nodes, in: SIAM Conference on Parallel Processing for Scientific Computing, February 2010, available at: http://info.ornl.gov/sites/publications/Files/Pub23325.pptx.
[4]
C.G. Baker, Parallel programming with Kokkos and Tpetra, Trilinos User Group 2010, November 2010, available at: http://info.ornl.gov/sites/publications/Files/Pub27346.pdf.
[5]
C.G. Baker, Tpetra conjugate gradient RTI example, available at: http://trilinos.sandia.gov/packages/docs/dev/packages/tpetra/doc/html/RTIInlineCG_8hpp_source.html or source file Trilinos/packages/tpetra/example/RTInterface/RTIInlineCG. hpp, 2011.
[6]
C.G. Baker, Tpetra recursive mixed-precision conjugate gradient example, file:///Users/ogb/Trilinos/packages/tpetra/doc/html/MultiPrecCG_8hpp_source.html or source file Trilinos/- packages/tpetra/example/MultiPrec/MultiPrecCG.hpp, 2011.
[7]
C.G. Baker, H.C. Edwards, M.A. Heroux and A.B. Williams, An abstract model for programming multi-core nodes, in: SIAM Annual Meeting, July 2009 (contact author for slides).
[8]
C.G. Baker, H.C. Edwards, M.A. Heroux and A.B. Williams, A light-weight API for multicore programming, in: Proc. 18th Euromicro International Conference on Parallel, Distributed and Network-Based Computing, February 2010, available at: http://info.ornl.gov/sites/publications/Files/Pub23109.pdf.
[9]
C.G. Baker, U.L. Hetmaniuk, R.B. Lehoucq and H.K. Thornquist, Anasazi software for the numerical solution of largescale eigenvalue problems, ACM Trans. Math. Softw. 36 (2009), 13:1-13:23.
[10]
S. Balay, J. Brown, K. Buschelman, V. Eijkhout, W.D. Gropp, D. Kaushik, M.G. Knepley, L.C. McInnes, B.F. Smith and H. Zhang, PETSc users manual, Technical Report ANL-95/11, Revision 3.1, Argonne National Laboratory, 2010.
[11]
S. Balay, J. Brown, K. Buschelman, W.D. Gropp, D. Kaushik, M.G. Knepley, L.C. McInnes, B.F. Smith and H. Zhang, PETSc homepage, http://www.mcs.anl.gov/petsc, 2011.
[12]
S. Balay, W.D. Gropp, L.C. McInnes and B.F. Smith, Efficient management of parallelism in object oriented numerical software libraries, in: Modern Software Tools in Scientific Computing, E. Arge, A.M. Bruaset and H.P. Langtangen, eds, Birkhäuser, New York, 1997, pp. 163-202.
[13]
R. Bartlett, Teuchos C++ memory management classes, idioms, and related topic, SNL Technical Report SAND2010- 2234, 2010.
[14]
E. Boman, K. Devine, R. Heaphy, B. Hendrickson, M. Heroux and R. Preis, Ldrd report: parallel repartitioning for optimal solver performance, SNL Technical Report SAND2004-0365, 2004.
[15]
T.A. Davis and Y. Hu, The University of Florida sparse matrix collection, available at: http://www.cise.ufl.edu/research/sparse/matrices.
[16]
Epetra 10.6 release notes, http://trilinos.sandia.gov/changelog- 10.6.html, 2010.
[17]
M.A. Heroux, R.A. Bartlett, V.E. Howle, R.J. Hoekstra, J.J. Hu, T.G. Kolda, R.B. Lehoucq, K.R. Long, R.P. Pawlowski, E.T. Phipps, A.G. Salinger, H.K. Thornquist, R.S. Tuminaro, J.M. Willenbring, A. Williams and K.S. Stanley, An overview of the trilinos project, ACM Trans. Math. Softw. 31 (2005), 397-423.
[18]
Y. Hida, X.S. Li and D.H. Bailey, Algorithms for quad-double precision floating point arithmetic, in: Proc. 15th IEEE Symposium on Computer Arithmetic, IEEE Computer Society, Washington, DC, USA, 2001, pp. 155-162.
[19]
J. Hoberock and N. Bell, Thrust: a parallel template library, Version 1.3.0, available at: http://www.meganewtons.com, 2010.
[20]
Intel Corporation, Intel threading building blocks homepage, http://www.threadingbuildingblocks.org, 2006.
[21]
R.B. Lehoucq, D.C. Sorensen and C. Yang, Arpack Users' Guide, Soc. Industr. Appl. Math., Philadephia, PA, 1998.
[22]
R.B. Lehoucq, D.C. Sorensen and C. Yang, ARPACK homepage, http://www.caam.rice.edu/software/ARPACK, 2011.
[23]
NVIDIA Corporation, NVIDIA CUDA homepage, http://www.nvidia.com/cuda, 2009.
[24]
OpenMP ARB, OpenMP official homepage, http://openmp. org/wp, 1997.
[25]
E.T. Phipps, R.A. Bartlett, D.M. Gay and R.J. Hoekstra, Large-scale transient sensitivity analysis of a radiationdamaged bipolar junction transistor via automatic differentiation, in: Advances in Automatic Differentiation, C.H. Bischof, H.M. Bcker, P. Hovland, U. Naumann and J. Utke, eds, Lecture Notes in Computational Science and Engineering, Vol. 64, Springer, Berlin, 2008, pp. 351-362.
[26]
J. Reinders, Intel Threading Building Blocks, 1st edn, O'Reilly & Associates, Sebastopol, CA, 2007.
[27]
A. Stathopoulos and J.R. McCombs, PRIMME: preconditioned iterative multimethod eigensolver-methods and software description, ACM Trans. Math. Softw. 37 (2010), 21:1- 21:30.
[28]
A. Stathopoulos and J.R. McCombs, PRIMME homepage, http://www.cs.wm.edu/~andreas/software, 2011.
[29]
B. Stroustrup, The C++ Programming Language: Special Edition, 3rd edn, Addison-Wesley, Reading, MA, 2000.
[30]
The Khronos Group, OpenCL overview, available at: http://www.khronos.org/opencl, 2008.
[31]
The Open Group, ¿pthread.h¿, http://www.opengroup.org/onlinepubs/007908799/xsh/pthread.h.html, 1997.
[32]
Trilinos homepage, http://trilinos.org, 2012.
[33]
Trilinos packages list, http://trilinos.sandia.gov/packages/.
[34]
Wikipedia, C++ classes - Wikipedia, the free encyclopedia, available at: http://en.wikipedia.org/w/index.php?title= C%2B%2B_classes, 2012 (online; accessed 18 April 2012).
[35]
Wikipedia, Template (C++) - Wikipedia, the free encyclopedia, http://en.wikipedia.org/w/index.php?title=Template_ (C%2B%2B) (online; accessed 18 April 2012).

Cited By

View all
  1. Tpetra, and the use of generic programming in scientific computing

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image Scientific Programming
    Scientific Programming  Volume 20, Issue 2
    A New Overview of the Trilinos Project --Part 1
    April 2012
    138 pages

    Publisher

    IOS Press

    Netherlands

    Publication History

    Published: 01 April 2012

    Author Tags

    1. Distributed-Memory Programming
    2. Generic Programming
    3. Many-Core Computing
    4. Scientific Computing
    5. Shared-Memory Programming
    6. Template Metaprogramming

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 23 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Performance portable ice-sheet modeling with MALIInternational Journal of High Performance Computing Applications10.1177/1094342023118368837:5(600-625)Online publication date: 1-Sep-2023
    • (2023)PyAlbanyJournal of Computational and Applied Mathematics10.1016/j.cam.2022.115037425:COnline publication date: 1-Jun-2023
    • (2022)TauschParallel Computing10.1016/j.parco.2022.102973114:COnline publication date: 1-Dec-2022
    • (2019)A Parallel Graph Algorithm for Detecting Mesh Singularities in Distributed Memory Ice Sheet SimulationsProceedings of the 48th International Conference on Parallel Processing10.1145/3337821.3337841(1-10)Online publication date: 5-Aug-2019
    • (2018)Performance of preconditioned iterative solvers in MFiX---Trilinos for fluidized bedsThe Journal of Supercomputing10.1007/s11227-018-2415-574:8(4104-4126)Online publication date: 1-Aug-2018
    • (2017)GHOSTInternational Journal of Parallel Programming10.1007/s10766-016-0464-z45:5(1046-1072)Online publication date: 1-Oct-2017
    • (2015)STAPL-RTSProceedings of the 29th ACM on International Conference on Supercomputing10.1145/2751205.2751233(425-434)Online publication date: 8-Jun-2015
    • (2015)A Numerical Soft Fault Model for Iterative Linear SolversProceedings of the 24th International Symposium on High-Performance Parallel and Distributed Computing10.1145/2749246.2749254(271-274)Online publication date: 15-Jun-2015
    • (2013)Template metaprogramming techniques for concept-based specializationScientific Programming10.1155/2013/58139721:1-2(43-61)Online publication date: 1-Jan-2013

    View Options

    View options

    Login options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media