Abstract
The tri-diagonal system comes from dynamic problems such as fluid simulation, and high efficiency is important for the success of these applications. In this paper, we develop completely GPU shared memory-based chunked cyclic reduction under the constraint of the capacity of the shared memory. Computational results show that GPU shared memory chunked cyclic reduction exhibits high efficiency by Nvidia TITAN with 48k shared memory, and GPU shared memory chunked cyclic reduction can solve a tri-diagonal system with 262,144-by-262,144 coefficient matrix in 1.768 ms. Computational results also show that GPU shared memory chunked cyclic reduction scales well to the sizes of coefficient matrix and the reduced systems. Altogether, since building completely on GPU shared memory, our solver may be faster than existing GPU solvers because of the efficiency of GPU shared memory, though the solubility of our solver is smaller than existing GPU solvers because of the capacity constraint of shared memory, where solubility means the solvable tri-diagonal system with the maximum size of the coefficient matrix by our solver.
Similar content being viewed by others
References
Golub GH, Van Loan CF (1996) Matrix computations. Johns Hopkins University Press, Baltimore
Niemeyer K, Sung C-J (2014) Recent progress and challenges in exploiting graphics processors in computational fluid dynamics. J Supercomput 67(2):528–564
Wang Y et al (2013) A parallel solver for incompressible fluid flows. Procedia Comput Sci 18:439–448
Wei Z et al (2013) Parallelizing alternating direction implicit solver on GPUs. Procedia Comput Sci 18:389–398
Curnier A (1994) Computational methods in solid mechanics. Kluwer Academic, Dordrecht
Fung Y, Tong P (2001) Classical and computational solid mechanics. World Scientific, Singapore
Bathe KJ (2001) Computational fluid and solid mechanics. Elsevier, Amsterdam
Rylander T, Bondeson A, Ingelström P (2012) Computational electromagnetics. Springer, Berlin
Sheng XQ, Song W (2012) Essentials of computational electromagnetics. Wiley, New York
Levy G (2004) Computational finance: numerical methods for pricing financial instruments. Elsevier Butterworth-Heinemann, Oxford
Los CA (2001) Computational finance: a scientific perspective. World Scientific, Singapore
Duan JC, Härdle W, Gentle JE (2011) Handbook of computational finance. Springer, Berlin
Levy G (2008) Computational finance using C and C#. Elsevier, Amsterdam
Lyuu YD (2002) Financial engineering and computation: principles, mathematics, algorithms. Cambridge University Press, Cambridge
Nguyuen H, Corporation N (2008) GPU Gems 3. Addison Wesley Professional, Reading
Pharr M, Fernando R (2005) GPU Gems 2: programming techniques for high-performance graphics and general-purpose computation. Pearson Addison Wesley Professional, Reading
Hockney RW, Jesshope CR (1988) Parallel computers 2: architecture, programming, and algorithms. A. Hilger, London
Sweet R (1988) A parallel and vector variant of the cyclic reduction algorithm. SIAM J Sci Stat Comput 9(4):761–765
Amodio P, Mastronardi N (1993) A parallel version of the cyclic reduction algorithm on a hypercube. Parallel Comput 19(11):1273–1281
Mattor N, Williams TJ, Hewett DW (1995) Algorithm for solving tri-diagonal matrix problems in parallel. Parallel Comput 21(11):1769–1782
Stone HS (1975) Parallel tri-diagonal equation solvers. ACM Trans Math Softw 1(4):289–307
Schwandt H (1989) Cyclic reduction for tri-diagonal systems of equations with interval coefficients on vector computers. SIAM J Numer Anal 26(3):661–680
Allmann S, Rauber T, Runger G (2001) Cyclic reduction on distributed shared memory machines. In: Proceedings of ninth Euromicro workshop on parallel and distributed processing, 2001
Bekakos MP, Evans DJ (1993) Parallel cyclic odd–even reduction algorithms for solving Toeplitz tri-diagonal equations on MIMD computers. Parallel Comput 19(5):545–561
Gallopoulos E, Saad Y (1989) A parallel block cyclic reduction algorithm for the fast solution of elliptic equations. Parallel Comput 10(2):143–159
Sweet R (1977) A cyclic reduction algorithm for solving block tri-diagonal systems of arbitrary dimension. SIAM J Numer Anal 14(4):706–720
Seal SK, Perumalla KS, Hirshman SP (2013) Revisiting parallel cyclic reduction and parallel prefix-based algorithms for block tri-diagonal systems of equations. J Parallel Distrib Comput 73(2):273–280
Wang HH (1981) A parallel method for tri-diagonal equations. ACM Trans Math Softw 7(2):170–183
Stone HS (1973) An efficient parallel algorithm for the solution of a tri-diagonal linear system of equations. J ACM 20(1):27–38
Bondeli S, Gander W (1994) Cyclic reduction for special tri-diagonal systems. SIAM J Matrix Anal Appl 15(1):321–330
Xian-he S, Zhang H, Ni LM (1992) Efficient tri-diagonal solvers on multicomputers. IEEE Trans Comput 41(3):286–296
Argüello F et al (2012) The split-and-merge method in general purpose computation on GPUs. Parallel Comput 38(6–7):277–288
Owens JD et al (2008) GPU computing. Proc IEEE 96(5):879–899
Volkov V, Demmel JW (2008) Benchmarking GPUs to tune dense linear algebra. In: Proceedings of the 2008 ACM/IEEE conference on supercomputing. IEEE Press, Austin, pp 1–11
Zhang Y, Cohen J, Owens JD (2010) Fast tri-diagonal solvers on the GPU. In: Proceedings of the 15th ACM SIGPLAN symposium on principles and practice of parallel programming. ACM, Bangalore, pp 127–136
Zhang Y, Cohen J, Davidson AA, Owens JD (2011) A hybrid method for solving tri-diagonal systems on the GPU. In: W-mW Hwu (ed) GPU computing gems, vol 2, chap 11. Morgan Kaufmann, Los Altos, pp 117–132
Zhang Y (2009) Fast tridiagonal solvers on GPU. In: GPU technology conference. San Jose, California
Davidson A, Yao Z, Owens JD (2011) An auto-tuned method for solving large tri-diagonal systems on the GPU. In: IEEE international symposium on parallel and distributed processing (IPDPS), 2011
Davidson A, Owens JD (2011) Register packing for cyclic reduction: a case study. In: Proceedings of the fourth workshop on general purpose processing on graphics processing units. ACM, Newport Beach, pp 1–6
Chang L-W et al (2012) A scalable, numerically stable, high-performance tri-diagonal solver using GPUs. In: Proceedings of the international conference on high performance computing, networking, storage and analysis. IEEE Computer Society Press, Salt Lake City, pp 1–11
Hee-Seok K et al. (2011) A scalable tri-diagonal solver for GPUs. In: International conference on parallel processing (ICPP), 2011
Cuda C Programming, Version Guide, 5.5. (2013) Nvidia, Santa Clara
Sanders J, Kandrot E (2010) CUDA by example: an introduction to general-purpose GPU programming. Pearson Education, Boston
Cook S (2013) CUDA programming: a developer’s guide to parallel computing with GPUs. Morgan Kaufmann, Los Altos
Farber R (2011) CUDA application design and development. Morgan Kaufmann, Los Altos
Wilt N (2013) The CUDA handbook: a comprehensive guide to GPU programming. Pearson Education, Boston
Goeddeke D, Strzodka R (2011) Cyclic reduction tri-diagonal solvers on GPUs applied to mixed-precision multigrid. IEEE Trans Parallel Distrib Syst 22(1):22–32
Karniadakis GE, Kirby RM (2003) Parallel scientific computing in c++ and mpi: a seamless approach to parallel algorithms and their implementation. Cambridge University Press, Cambridge
Swarztrauber PN (1979) A parallel algorithm for solving general tri-diagonal equations. Math Comput 33(145):185–199
Lin HX (2001) A unifying graph model for designing parallel algorithms for tri-diagonal systems. Parallel Comput 27(7):925–939
Acknowledgments
We thank Exxact Corporation for providing usage time of Tesla K20 GPU through Nvidia’s program of GPU Test Drive. We thank reviewers for their valuable suggestions.
Author information
Authors and Affiliations
Corresponding author
Appendix
Appendix
Rights and permissions
About this article
Cite this article
Zhao, D., Yu, J. Efficiently solving tri-diagonal system by chunked cyclic reduction and single-GPU shared memory. J Supercomput 71, 369–390 (2015). https://doi.org/10.1007/s11227-014-1299-2
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11227-014-1299-2