附录C高性能计算-科学计算软件介绍 C.1科学计算发展 本节内容摘自Predictions for scientific computing50 years from now,byN.Trefethen in200 ·Before1940 -Newton's method -Gaussian elimination Gauss quadrature -Least-squares fitting -Adams and Runge-Kutta formulas -Richardson extrapolation ·1940-1970 -Floating point arithmetic -Fortran -Finite differences -Finite elements Monte Carlo -Orthogonal linear algebra -Splines -FFT ·1970-2000 -Quasi-Newton iterations Adaptivity -Stiff ODE solvers -Software libraries -MATΠIAB -Multigrid Sparse and iterative linear algebra -Spectral methods -Interior point method -Wavelets ·2000- 277
附录 C 高性能计算 – 科学计算软件介绍 C.1 科学计算发展 本节内容摘自 Predictions for scientific computing 50 years from now, by N. Trefethen in 2000. • Before 1940 – Newton’s method – Gaussian elimination – Gauss quadrature – Least-squares fitting – Adams and Runge-Kutta formulas – Richardson extrapolation • 1940 – 1970 – Floating point arithmetic – Fortran – Finite differences – Finite elements – Simplex algorithm – Monte Carlo – Orthogonal linear algebra – Splines – FFT • 1970 – 2000 – Quasi-Newton iterations – Adaptivity – Stiff ODE solvers – Software libraries – MATLAB – Multigrid – Sparse and iterative linear algebra – Spectral methods – Interior point method – Wavelets • 2000 – 277
.278. 附录C高性能计算-科学计算软件介绍 -Multipole methods -Breakthroughs in preconditioners,spectral methods,time stepping for PDE C.1.1数值分析经典论文 这里是Trefethen建议的I3篇论文阅读列表: Classic Papers in Numerical Analysis,by N.Trefethen,1993) (1)Cooley Tukey(1965)the Fast Fourier Transform James W.Cooley and John W.Tukey."An algorithm for the machine calculation of comple Fourier series, Mathematics of Computation,19(1965),297-301. (2)Courant,Friedrichs&Lewy(1928)finite difference methods for PDE R.Courant,K.O.Friedrichs and H.Lewy,"Ueber die partiellen Differenzengleichungen der mathema- tischen Physik,Mathematische Annalen,100(198),32-74.Translated as:"On the partial difference equations of mathematical physics,"IBM Journal of Resarch and Development,11(1967).215-234. (3)Houscholder(1958) QR factorization of matrices A.S.Householder,"Unitary triangularization of a nonsymmetric matrix,"Journal of the Association of Computing Machinery,5(1958),339-342. (4)Curtiss Hirschfelder(1952)stiffness of ODEs:BD formulas C.F Curtiss and J.O.Hirschfelder,"Integration of stiff equations,"Proceedings of the National Academy of Sciences.38(1952).235243. (5)de Boor(1972)calculations with B-splines C.de Boor,"On calculating with B-splines,"Journal of Approximation Theory.6(1972),50-62. (6)Courant(1943)finite element methods for PDE R.Courant,"Variational methods for the solution of problems of equilibrium and vibrations,"Bulletin of the American Mathematical Society,49(1943),1-23. (7)Golub&Kahan (1965)the singular value decomposition G.Golub and W.Kahan,"Calculating the singular values and pseudo-inverse of a matrix,"SIAM Journal on Numerical Analysis,(965),205-224. (8)Brandt(l977))→multigrid algorithms A.Brandt,"Multi-level adaptive solutionsto boundary-value problems,"Mathematics of Computation 31(1977).333-390. (9)Hestenes&Stiefel (195)the conjugate gradient iteration Magnus R.Hestenes and Eduard Stiefel,"Methods of conjugate gradients for solving linear systems,"Jour- nal of Research of the National Bureau of Standards,49(1952),409-436. (10)Fletcher Powell(1963)optimization via quasi-Newton updates R.Fletcher and M.J.D.Powell,"A rapidly convergent descent method for minimization,"Compute Journal,,6(1963),163-168. (11)Wanner,Hairer&Norset(1978)order stars and applications to ODE G.Wanner,E.Hairer and S.P.Norsett,"Order stars and stability theorems,"BIT,18(1974),475-489
· 278 · 附录 C 高性能计算 – 科学计算软件介绍 – Multipole methods – Breakthroughs in preconditioners, spectral methods, time stepping for PDE – · · · · · · C.1.1 数值分析经典论文 这里是 Trefethen 建议的 13 篇论文阅读列表: (见 Classic Papers in Numerical Analysis, by N. Trefethen, 1993) (1) Cooley & Tukey (1965) → the Fast Fourier Transform James W. Cooley and John W. Tukey, “An algorithm for the machine calculation of complex Fourier series,” Mathematics of Computation, 19 (1965), 297–301. (2) Courant, Friedrichs & Lewy (1928) → finite difference methods for PDE R. Courant, K. O. Friedrichs and H. Lewy, “Ueber die partiellen Differenzengleichungen der mathematischen Physik,” Mathematische Annalen, 100 (1928), 32–74. Translated as: “On the partial difference equations of mathematical physics,” IBM Journal of Resarch and Development, 11 (1967), 215–234. (3) Householder (1958) → QR factorization of matrices A. S. Householder, “Unitary triangularization of a nonsymmetric matrix,” Journal of the Association of Computing Machinery, 5 (1958), 339–342. (4) Curtiss & Hirschfelder (1952) → stiffness of ODEs; BD formulas C. F. Curtiss and J. O. Hirschfelder, “Integration of stiff equations,” Proceedings of the National Academy of Sciences, 38 (1952), 235–243. (5) de Boor (1972) → calculations with B-splines C. de Boor, “On calculating with B-splines,” Journal of Approximation Theory, 6 (1972), 50–62. (6) Courant (1943) → finite element methods for PDE R. Courant, “Variational methods for the solution of problems of equilibrium and vibrations,” Bulletin of the American Mathematical Society, 49 (1943), 1–23. (7) Golub & Kahan (1965) → the singular value decomposition G. Golub and W. Kahan, “Calculating the singular values and pseudo-inverse of a matrix,” SIAM Journal on Numerical Analysis, 2 (1965), 205–224. (8) Brandt (1977) → multigrid algorithms A. Brandt, “Multi-level adaptive solutions to boundary-value problems,” Mathematics of Computation, 31 (1977), 333–390. (9) Hestenes & Stiefel (1952) → the conjugate gradient iteration Magnus R. Hestenes and Eduard Stiefel, “Methods of conjugate gradients for solving linear systems,” Journal of Research of the National Bureau of Standards, 49 (1952), 409–436. (10) Fletcher & Powell (1963) → optimization via quasi-Newton updates R. Fletcher and M. J. D. Powell, “A rapidly convergent descent method for minimization,” Computer Journal, 6 (1963), 163–168. (11) Wanner, Hairer & Norsett (1978) → order stars and applications to ODE G. Wanner, E. Hairer and S. P. Norsett, “Order stars and stability theorems,” BIT, 18 (1974), 475–489
C1科学计算发展 ·279 (12)Karmarkar(1984)interior point methods for linear programming N.Karmarkar,A new polynomial-time algorithm for linear programming."Combinatorica,4(1984). 373-395. (13)Greengard Rokhlin(1987)multipole methods for particles L.Greengard and V.Rokhlin,"A fast algorithm for particle simulations,"Journal of Computational Physics, 72(1987),325-348. C.1.2 Longer list of papers 一个更长的阅读论文列表N.Trefethen,1993) LINEAR ALGEBRA-SYSTEMS OF EQUATIONS AND LEAST-SQUARES -Frankel (1950)optimal omega for SOR iteration Hestenes&Sticfel (1952)the conjugate gradient iteratior -Young (1954)theory of classical iterative methods -Householder(1958)QR decomposition -Wilkinson(1961)error analysis for systems of eqs -Golub(1965)least-squares problems Strassen(19)Gaussian eimination is not optimal George (1973)nested dissection Gill,Golub,Murray Saunders (1974)updating matrix factorizations -Concus,Golub&OLeary (197)preconditioned conjugate gradicents -Meijerink van der Vorst(1977)incomplete LU preconditioning Skeel(180)iterative refinement and stability Saad Schultz(1986)GMRES for nonsymmetric systems LINEAR ALGEBRA-EIGENVALUES AND SVD -Jacobi(1846)Jacobi's method for matrix cigenvalues -Henrici(1958)convergence of the Jacobi method -Rutishauser(1958)the LR algorithm -Kublanovskaya(1961)the QR algorithm -Francis(1961)the QR algorithm -Golub&Kahan(1965)computation of the SVD -Moler Stewart(1973)QZ algorithm for gen'd eigenvalues -Cuppen(1981)divide and conquer for eigenvalues ·OPTIMIZATION -Dantzig(1951)simplex method for linear programming -Davidon (1959)variable metric methods -Fletcher&Powell (1963)DFP quasi-Newton update formul -Broyden,Fletcher,Goldfarb Shanno(1970)BFGS quasi-Newton update formula -Karmarkar(1984)interior pt methods for linear prog
C.1 科学计算发展 · 279 · (12) Karmarkar (1984) → interior point methods for linear programming N. Karmarkar, “A new polynomial-time algorithm for linear programming,” Combinatorica, 4 (1984), 373–395. (13) Greengard & Rokhlin (1987) → multipole methods for particles L. Greengard and V. Rokhlin, “A fast algorithm for particle simulations,” Journal of Computational Physics, 72 (1987), 325–348. C.1.2 Longer list of papers 一个更长的阅读论文列表 (N. Trefethen, 1993) • LINEAR ALGEBRA – SYSTEMS OF EQUATIONS AND LEAST-SQUARES – Frankel (1950) optimal omega for SOR iteration – Hestenes & Stiefel (1952) the conjugate gradient iteration – Young (1954) theory of classical iterative methods – Householder (1958) QR decomposition – Wilkinson (1961) error analysis for systems of eqs. – Golub (1965) least-squares problems – Strassen (1969) Gaussian elimination is not optimal – George (1973) nested dissection – Gill, Golub, Murray & Saunders (1974) updating matrix factorizations – Concus, Golub & O’Leary (1976) preconditioned conjugate gradients – Meijerink & van der Vorst (1977) incomplete LU preconditioning – Skeel (1980) iterative refinement and stability – Saad & Schultz (1986) GMRES for nonsymmetric systems • LINEAR ALGEBRA - EIGENVALUES AND SVD – Jacobi (1846) Jacobi’s method for matrix eigenvalues – Henrici (1958) convergence of the Jacobi method – Rutishauser (1958) the LR algorithm – Kublanovskaya (1961) the QR algorithm – Francis (1961) the QR algorithm – Golub & Kahan (1965) computation of the SVD – Moler & Stewart (1973) QZ algorithm for gen’d eigenvalues – Cuppen (1981) divide and conquer for eigenvalues • OPTIMIZATION – Dantzig (1951) simplex method for linear programming – Davidon (1959) variable metric methods – Fletcher & Powell (1963) DFP quasi-Newton update formula – Broyden, Fletcher, Goldfarb & Shanno (1970) BFGS quasi-Newton update formula – Karmarkar (1984) interior pt methods for linear prog
·280· 附录C高性能计算-科学计算软件介绍 ·NTEGRATION -Golub Welsch (1969)Gauss quadrature rules -de Boor(1971)adaptive quadrature algorithms ·APPROXIMATION -Remes(1934)Remes algorithm for Chebyshev approx. -Schoenberg (1946)splines -Powell(1967)near-optimality of Chebyshev interp. -Reinsch(1967)smoothing with splines -Cox(1972)calculation with B-splines -de Boor(1972)calculation with B-splines ·OTHER -Aitken(193)Aitken extrapolation -Cooley Tukey (1965)the fast Fourier transform -Greengard&Rokhlin (1987)fast multipole methods ODEs -Curtiss Hirschfelder(1952)stiffness and BD formulas -Dahlquist (156)stability and convergence -Dahlquist(1963)A-stability -Butcher(1965)Runge-Kutta methods Gear(1969)stiff ODEs -Wanner,Hairer Norsett(1978)order stars and stability theorems ·ELLIPTIC PDEs -Peaceman Rachford (1955)ADI Douglas(1955)ADI -Strang(1971 or 1973)finite elements and approx.theory -Buzbee,Golub&Nielsen(1970)fast Poisson via cyclic reduction -Hockney(1965)fast Poisson via FFT -Fedorenko(1961)multigrid methods -Brandt(1977)multigrid methods PARABOLIC AND HYPERBOLIC PDEs -Courant,Friedrichs&Lewy (1928)the CFL condition -Crank Nicolson (1947)finite differences for parabolic PDE O'Brien,Hyman Kaplan(1951)Von Neumann stability analysis -Lax&Richtmyer(196)general stability theory -Lax Wendroff (1960,1962,1964)methods for solving conservation laws -Kreiss(1962)more general stability theory -Orszag (1971)spectral methods -Kreiss Oliger(1972)spectral methods
· 280 · 附录 C 高性能计算 – 科学计算软件介绍 • INTEGRATION – Golub & Welsch (1969) Gauss quadrature rules – de Boor (1971) adaptive quadrature algorithms • APPROXIMATION – Remes (1934) Remes algorithm for Chebyshev approx. – Schoenberg (1946) splines – Powell (1967) near-optimality of Chebyshev interp. – Reinsch (1967) smoothing with splines – Cox (1972) calculation with B-splines – de Boor (1972) calculation with B-splines • OTHER – Aitken (1932) Aitken extrapolation – Cooley & Tukey (1965) the fast Fourier transform – Greengard & Rokhlin (1987) fast multipole methods • ODEs – Curtiss & Hirschfelder (1952) stiffness and BD formulas – Dahlquist (1956) stability and convergence – Dahlquist (1963) A-stability – Butcher (1965) Runge-Kutta methods – Gear (1969) stiff ODEs – Wanner, Hairer & Norsett (1978) order stars and stability theorems • ELLIPTIC PDEs – Peaceman & Rachford (1955) ADI – Douglas (1955) ADI – Strang (1971 or 1973) finite elements and approx. theory – Buzbee, Golub & Nielsen (1970) fast Poisson via cyclic reduction – Hockney (1965) fast Poisson via FFT – Fedorenko (1961) multigrid methods – Brandt (1977) multigrid methods • PARABOLIC AND HYPERBOLIC PDEs – Courant, Friedrichs & Lewy (1928) the CFL condition – Crank & Nicolson (1947) finite differences for parabolic PDE – O’Brien, Hyman & Kaplan (1951) Von Neumann stability analysis – Lax & Richtmyer (1956) general stability theory – Lax & Wendroff (1960,1962,1964) methods for solving conservation laws – Kreiss (1962) more general stability theory – Orszag (1971) spectral methods – Kreiss & Oliger (1972) spectral methods
C.2矩阵运算的复杂度 ·281 -Gustafsson,Kreiss&Sundstrom(1972)stability of boundary conditions -Chorin(1973)vortex methods for CFD -Engquist Majda(1977)absorbing boundary conditions C.2矩阵运算的复杂度 算法的执行效率依赖于算法中所涉及的运算类型和运算次数。一般来说,数值算法所涉及的运算主 要是加减乘除,以及开根号运算.开根号运算依赖于具体的实现算法,一般最终也可以归结为加减乘除 运算,而且开根号运算次数往往比加减乘除运算具有更低的数量级.因此,评价算法的一个重要标准就 是加诚乘除运算的次数 一般情况下,加减运算次数与乘法运算次数具有相同的数量级,而除法运算次数往往比乘法运算具 有更低的数量级。 常见数值运算的计算量 0(n)量级 0(m2)量级 O(n3)量级 x←0x x←Ax B←-aAB y←y+ax u←-aAx+Bu C←aAB+BC s←x(内积 x←Alx(A三角矩阵 s←-lx2 A←A+axy(秩1修正) s←zl A←A+ay°+ayr*(对称秩2修正) 向量的交换,复制,比较 ↑为了提高程序执行效率,节约程序开发成本,建议尽可能地使用现有的高性能优秀程序库,如BLAS, LAPACK等 C.3数值线性代数程序库 BLAS,LAPACK,ARPACK是当前数值计算中优秀程序库的典型代表,许多科学计算软件都是基于 这些程序库,如著名的MATLAB. C.3.1 BLAS BLAS(Basic Linear Algebra Subprograms))是一组高质量的子程序,用于实现基本的向量和矩阵运算, 最初发布于1979年.在BLS中,所有的子程序都经过精心的优化以确保其高效性,同时,程序的书写 和语句的选择都很规范,以便于移植。 长期以来,专家们一直呼吁使用BLAS来建立和开发自己的线性代数软件包.这样做,不仅可以缩 短开发周期,而且便于形成统一的调用接口.在高性能计算领域,BLAS被广泛使用.合理的调用BLAS 子程序,可以大大提高程序的性能, 目前BLAS库有多种不同的优化实现,如BLAS,Goto BLAS,.ATLAS等.为提高性能,各软硬件厂商 都会对其产品的BLAS接口实现进行高度优化
C.2 矩阵运算的复杂度 · 281 · – Gustafsson, Kreiss & Sundstrom (1972) stability of boundary conditions – Chorin (1973) vortex methods for CFD – Engquist & Majda (1977) absorbing boundary conditions C.2 矩阵运算的复杂度 算法的执行效率依赖于算法中所涉及的运算类型和运算次数. 一般来说, 数值算法所涉及的运算主 要是加减乘除, 以及开根号运算. 开根号运算依赖于具体的实现算法, 一般最终也可以归结为加减乘除 运算, 而且开根号运算次数往往比加减乘除运算具有更低的数量级. 因此, 评价算法的一个重要标准就 是加减乘除运算的次数. 一般情况下, 加减运算次数与乘法运算次数具有相同的数量级, 而除法运算次数往往比乘法运算具 有更低的数量级. 常见数值运算的计算量: O(n) 量级 O(n 2 ) 量级 O(n 3 ) 量级 x ← αx x ← Ax B ← αAB y ← y + αx y ← αAx + βy C ← αAB + βC s ← y ∗x (内积) x ← A−1x (A 三角矩阵) s ← ∥x∥2 A ← A + αxy∗ (秩 1 修正) s ← ∥x∥1 A ← A + αxy∗ + αyx∗ (对称秩 2 修正) 向量的交换, 复制, 比较 † 为了提高程序执行效率, 节约程序开发成本, 建议尽可能地使用现有的高性能优秀程序库, 如BLAS, LAPACK 等. C.3 数值线性代数程序库 BLAS, LAPACK, ARPACK 是当前数值计算中优秀程序库的典型代表, 许多科学计算软件都是基于 这些程序库, 如著名的 MATLAB. C.3.1 BLAS BLAS (Basic Linear Algebra Subprograms) 是一组高质量的子程序, 用于实现基本的向量和矩阵运算, 最初发布于 1979 年. 在 BLAS 中, 所有的子程序都经过精心的优化以确保其高效性, 同时, 程序的书写 和语句的选择都很规范, 以便于移植. 长期以来, 专家们一直呼吁使用 BLAS 来建立和开发自己的线性代数软件包. 这样做, 不仅可以缩 短开发周期, 而且便于形成统一的调用接口. 在高性能计算领域, BLAS 被广泛使用. 合理的调用 BLAS 子程序, 可以大大提高程序的性能. 目前 BLAS 库有多种不同的优化实现, 如 BLAS, Goto BLAS, ATLAS 等. 为提高性能, 各软硬件厂商 都会对其产品的 BLAS 接口实现进行高度优化
.282· 附录C高性能计算-科学计算软件介绍 在BLAS中,向量和矩阵运算被分为三个层次.第一层次Lcv1)BLAS是指标量与向量,向量与向 量之间的运算.第二层次(Levl2)BLAS是指矩阵与向量的运算.而第三层次(Lvl3)BLAS是指矩阵与 矩阵之间的运算 BLAS主页为http:/nww.net1ib.org/blas/. C3.2 LAPACK LAPACK (Linear Algebra PACKage)是由美国Tennessee大学,加州大学Berkeley分校,科罗拉多大学 丹佛分校和NAG(Numerical Algorithms Group)公司联合开发的线性代数子程序库.用于在不同高性能 计算环境上高效求解数值线性代数问题,包含了求解科学与工程计算中最常见的数值线性代数的计算 问题,如线性方程组,线性最小二乘问题,特征值问题,奇异值问题等。 LAPACK主页为http:/w.netlib.org/1 apack/ C.3.3ARPACK ARPACK (Arnoldi PACKage))是由Rice大学开发,用于求解大规模特征值问题.该软件包基于Implic i山Restarted Arnoldi算法,非常适合求解大型稀疏或结构化矩阵的特征值问题, ARPACK主页为http:/ww.caam.rice,edu/software/,ARPACK/ C.3.4其它 ·Ct+符号计算库GiNaC:http:/nww.ginac.de/ ·C+线性代数库Eigen:http:/eigen..tuxfamily..org/ ·C+线性代数库Armadillo:http:/arma.sourceforge,net/ ·多精度整数和有理数MPIR(Multiple Precision Integers and Rationals):http:/www.mpir.org/ C.4交互式数学软件 本小节介绍几个优秀的交互式数学软件: MATLAB,Maple,Mathematica,Sage. 其中MATLAB是数值计算功能最强的,而Maple和Mathematica则是符号计算软件中的佼佼者.这三个 都是商业软件,而且价格不菲.Sag©则是2005年新开发出来的开源免费数学软件,其日标就是创建一个 有活力的自由开源软件以替代MATLAB,Maple和Mathematica. 关于这四个软件的更多介绍,可以参考其使用手册,或其它相关资料,如[42
· 282 · 附录 C 高性能计算 – 科学计算软件介绍 在 BLAS 中, 向量和矩阵运算被分为三个层次. 第一层次 (Level 1) BLAS 是指标量与向量, 向量与向 量之间的运算. 第二层次 (Level 2) BLAS 是指矩阵与向量的运算. 而第三层次 (Level 3) BLAS 是指矩阵与 矩阵之间的运算. BLAS 主页为 http://www.netlib.org/blas/. C.3.2 LAPACK LAPACK (Linear Algebra PACKage) 是由美国 Tennessee 大学, 加州大学 Berkeley 分校, 科罗拉多大学 丹佛分校和 NAG (Numerical Algorithms Group) 公司联合开发的线性代数子程序库. 用于在不同高性能 计算环境上高效求解数值线性代数问题, 包含了求解科学与工程计算中最常见的数值线性代数的计算 问题, 如线性方程组, 线性最小二乘问题, 特征值问题, 奇异值问题等. LAPACK 主页为 http://www.netlib.org/lapack/ C.3.3 ARPACK ARPACK (Arnoldi PACKage) 是由 Rice 大学开发, 用于求解大规模特征值问题. 该软件包基于 Implicitly Restarted Arnoldi 算法, 非常适合求解大型稀疏或结构化矩阵的特征值问题. ARPACK 主页为 http://www.caam.rice.edu/software/ARPACK/ C.3.4 其它 • C++ 符号计算库 GiNaC : http://www.ginac.de/ • C++ 线性代数库 Eigen : http://eigen.tuxfamily.org/ • C++ 线性代数库 Armadillo : http://arma.sourceforge.net/ • 多精度整数和有理数 MPIR (Multiple Precision Integers and Rationals): http://www.mpir.org/ C.4 交互式数学软件 本小节介绍几个优秀的交互式数学软件: MATLAB, Maple, Mathematica, Sage. 其中 MATLAB 是数值计算功能最强的, 而 Maple 和 Mathematica 则是符号计算软件中的佼佼者. 这三个 都是商业软件, 而且价格不菲. Sage 则是 2005 年新开发出来的开源免费数学软件, 其目标就是创建一个 有活力的自由开源软件以替代 MATLAB, Maple 和 Mathematica. 关于这四个软件的更多介绍, 可以参考其使用手册, 或其它相关资料, 如 [42]
C.4交互式数学软件 ·283 C.4.1MATLAB MATLAB是由美国Mathworks公司开发的科学计算软件,集数值计算, 数据可视化和交互式程序设计于一身,为科学研究和工程设计的众多科学 领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程 序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的 先进水平. MATLAB起源于20世纪七十年代末.时任新墨西哥大学计算机科学 系主任的Cleve Moler教授,在给学生开设线性代数课程时,为了给学生」 机提供方便,减轻学生编程负担,编写了一组LINPACK和EISPACK程序 MATLAB 库的“通俗易用”的程序接口,并取名为MATLAB,即MATrix LABoratory. Computing 几年后,工程师John Little与Moler,.Steve Bangert一起开发了第二代MATLAB,.所有内核政用C语 言编写,除原有的数值计算功能外,还新增了数据可视化功能,并于1984年成立Mathworks公司,推出 第一个商业版MATLAB. MATLAB以出现后的短短几年,就以其良好的开放性和运行的可靠性,非常受欢迎.到了20世纪九 十年代,在国际上数学类科技应用软件中,MATLAB在数值计算方面独占鳌头. 在欧美大学里,诸如应用代数,数理统计,自动控制,数字信号处理,模拟与数字通信,时间序列分析, 动态系统仿真等课程的教科书都把MATLAB作为内容.这几乎成了九十年代教科书与旧版书籍的区别 性标志.在那里,MATLAB是攻读学位的大学生,硕士生,博士生必须学握的基本工具. 现在的MATLAB软件主要包括MATLAB和Simulink两大部分,以及各种工具箱.每年更新两次, 并以年份作为版本号.最新版本中的矩阵计算主要是基于LAPACK程序库 MATLAB的主要优势:()友好的工作平台和编程环境:(2)简单易用的程序语言:()强大的科学计 算和数据处理能力:(④出色的绘图功能,以及(5⑤)实用的程序接口和发布平台.因而深受广大科技工作 者的欢迎 MATLAB官方主页为http:/,mathworks.com C.4.2 Mathematica Mathematica是一款符号计算软件,美国Wolfram Research公司 开发,很好地结合了符号计算,数值计算,图形系统,编程语言,文本 系统等.很多功能在相应领域内处于世界领先地位,是使用最广泛 fram mathe 的数学软件之一,与MATLAB和Maple并称三大数学软件. Mathematica自1988发布以来,已经对如何在科技和其它领域 运用计算机产生了深刻的影响.人们常说,Mathematica的发布标志着现代科技计算的开始.Mathematica 的基本概念是用一个连贯和统一的方法创造一个能适用于科技计算各个领域的软件系统。实现这一点 的关键之处是发明了一种新的计算机符号语言,这种语言能仅仅用很少量的基本元素制造出广泛的物 体,满足科技计算的广泛性.这在人类历史上还是第一次.当Mathematica刚发布时,纽约时代报写道 “这个软件的重要性不可忽视”.紧跟着,商业周刊又将Mathematica评为当年十大最重要产品.在科技 界,Mathematica被形容为智能和实践的革命
C.4 交互式数学软件 · 283 · C.4.1 MATLAB MATLAB 是由美国 Mathworks 公司开发的科学计算软件, 集数值计算, 数据可视化和交互式程序设计于一身, 为科学研究和工程设计的众多科学 领域提供了一种全面的解决方案, 并在很大程度上摆脱了传统非交互式程 序设计语言 (如 C、Fortran) 的编辑模式, 代表了当今国际科学计算软件的 先进水平. MATLAB 起源于 20 世纪七十年代末. 时任新墨西哥大学计算机科学 系主任的 Cleve Moler 教授, 在给学生开设线性代数课程时, 为了给学生上 机提供方便, 减轻学生编程负担, 编写了一组 LINPACK 和 EISPACK 程序 库的 “通俗易用” 的程序接口, 并取名为 MATLAB, 即 MATrix LABoratory. 几年后, 工程师 John Little 与 Moler, Steve Bangert 一起开发了第二代 MATLAB, 所有内核改用 C 语 言编写, 除原有的数值计算功能外, 还新增了数据可视化功能, 并于 1984 年成立 Mathworks 公司, 推出 第一个商业版 MATLAB. MATLAB 以出现后的短短几年, 就以其良好的开放性和运行的可靠性, 非常受欢迎. 到了 20 世纪九 十年代, 在国际上数学类科技应用软件中, MATLAB 在数值计算方面独占鳌头. 在欧美大学里, 诸如应用代数, 数理统计, 自动控制, 数字信号处理, 模拟与数字通信, 时间序列分析, 动态系统仿真等课程的教科书都把 MATLAB 作为内容. 这几乎成了九十年代教科书与旧版书籍的区别 性标志. 在那里, MATLAB 是攻读学位的大学生, 硕士生, 博士生必须掌握的基本工具. 现在的 MATLAB 软件主要包括 MATLAB 和 Simulink 两大部分, 以及各种工具箱. 每年更新两次, 并以年份作为版本号. 最新版本中的矩阵计算主要是基于 LAPACK 程序库. MATLAB 的主要优势: (1) 友好的工作平台和编程环境; (2) 简单易用的程序语言; (3) 强大的科学计 算和数据处理能力; (4) 出色的绘图功能, 以及 (5) 实用的程序接口和发布平台. 因而深受广大科技工作 者的欢迎. MATLAB 官方主页为 http://www.mathworks.com C.4.2 Mathematica Mathematica 是一款符号计算软件, 美国 Wolfram Research 公司 开发, 很好地结合了符号计算, 数值计算, 图形系统, 编程语言, 文本 系统等. 很多功能在相应领域内处于世界领先地位, 是使用最广泛 的数学软件之一, 与 MATLAB 和 Maple 并称三大数学软件. Mathematica 自 1988 发布以来, 已经对如何在科技和其它领域 运用计算机产生了深刻的影响. 人们常说, Mathematica 的发布标志着现代科技计算的开始. Mathematica 的基本概念是用一个连贯和统一的方法创造一个能适用于科技计算各个领域的软件系统. 实现这一点 的关键之处是发明了一种新的计算机符号语言, 这种语言能仅仅用很少量的基本元素制造出广泛的物 体, 满足科技计算的广泛性. 这在人类历史上还是第一次. 当 Mathematica 刚发布时, 纽约时代报写道: “这个软件的重要性不可忽视”. 紧跟着, 商业周刊又将 Mathematica 评为当年十大最重要产品. 在科技 界, Mathematica 被形容为智能和实践的革命
.284. 附录C高性能计算-科学计算软件介绍 Mathematica分为两部分:内核和前端.内核负责对代码进行解释,并且返回结果.前端提供了一个 GUL,使得用户可以创建并且编辑一个“笔记本文档”.该笔记本文档可以包含程序代码和其它格式化的 文本,如公式,图像,表格,声音等,并且支持标准文字处理功能.所有的内容和格式都可以通过算法生成 或者通过交互式方法进行编辑。 文档可以使用层次式单元进行结构化处理,这样便于对文档划分章节.文档也可以表示为幻灯片形 式,便于进行演讲.笔记本与其内容均以Mathematica表达式的形式存储,并且可用使用Mathematica程 序进行创建,编辑和修改,而且还可以转化为其它格式,比如或者ML 前端还包括其它一些功能,如程序调试,输入自动补全,自动语法着色等.默认情况下,Mathematica 使用一个标准前端,但也有其它前端可供选择.此外,Mathematica还包括一个命令行前端(Mathematica Kernel). Mathematica的官方主页为http:/www.wolfram.com C.4.3Maple Maple是目前世界上最为通用的数学和工程计算软件之一,在 数学和科学领域享有盛誉,以符号运算为主,有“数学家的软件”之 称.Maple被广泛地应用于科学,工程和教育等领域.Maple系统包 Maplesoft 括强大的符号计算,无限精度数值计算,创新的互联网连接等.其数 学和分析功能几乎覆盖所有的数学分支,如微积分,微分方程,特殊 函数,线性代数,图像声音处理,统计,动力系统等。 Maple最初由加拿大滑铁卢大学的Symbolic Computation Group于1980年开发.1988年成立W%aer loo Maple公司,负责Maple的商业运营. Maple不仅仅是编程工具,更能提供数学知识.用户通过Maple可以在单一的环境中完成多领域建 模和仿真,符号计算,数值计算,程序设计报告演示,算法开发,外部程序连接等功能,满足各个层次用 户的需要 Maple的官方主页为http:/ww.maplesoft.com C.4.4 Sage Sage(也称为SageMath)是一个基于GPL协议的开源数学软件 它使用Python作为通用接口,将现有的许多开源软件包整合在一起, SD9巳 构建一个统一的计算平台 Sage的第一个版本发布于20o5年,由华盛顿大学William Stein教授领导开发.其使命是“Creating a viable free open source alterative to Magma,Maple,Mathematica and Matlab". Sage有Linux和MacOS版本,在Windows下可以通过虚拟Linux环境来实现.不过用户也可以通过 浏览器直接在线使用。 Sage的官方主页为www.sagemath.org,有中文版的入门手册,http:/w.sagemath.org/zh/
· 284 · 附录 C 高性能计算 – 科学计算软件介绍 Mathematica 分为两部分: 内核和前端. 内核负责对代码进行解释, 并且返回结果. 前端提供了一个 GUI, 使得用户可以创建并且编辑一个 “笔记本文档”. 该笔记本文档可以包含程序代码和其它格式化的 文本, 如公式, 图像, 表格, 声音等, 并且支持标准文字处理功能. 所有的内容和格式都可以通过算法生成 或者通过交互式方法进行编辑。 文档可以使用层次式单元进行结构化处理, 这样便于对文档划分章节. 文档也可以表示为幻灯片形 式, 便于进行演讲. 笔记本与其内容均以 Mathematica 表达式的形式存储, 并且可用使用 Mathematica 程 序进行创建, 编辑和修改, 而且还可以转化为其它格式, 比如 LATEX 或者 XML. 前端还包括其它一些功能, 如程序调试, 输入自动补全, 自动语法着色等. 默认情况下, Mathematica 使用一个标准前端, 但也有其它前端可供选择. 此外, Mathematica 还包括一个命令行前端 (Mathematica Kernel). Mathematica 的官方主页为 http://www.wolfram.com C.4.3 Maple Maple 是目前世界上最为通用的数学和工程计算软件之一, 在 数学和科学领域享有盛誉, 以符号运算为主, 有 “数学家的软件” 之 称. Maple 被广泛地应用于科学, 工程和教育等领域. Maple 系统包 括强大的符号计算, 无限精度数值计算, 创新的互联网连接等. 其数 学和分析功能几乎覆盖所有的数学分支, 如微积分, 微分方程, 特殊 函数, 线性代数, 图像声音处理, 统计, 动力系统等. Maple 最初由加拿大滑铁卢大学的 Symbolic Computation Group 于 1980 年开发. 1988 年成立 Waterloo Maple 公司, 负责 Maple 的商业运营. Maple 不仅仅是编程工具, 更能提供数学知识. 用户通过 Maple 可以在单一的环境中完成多领域建 模和仿真, 符号计算, 数值计算, 程序设计, 报告演示, 算法开发, 外部程序连接等功能, 满足各个层次用 户的需要. Maple 的官方主页为 http://www.maplesoft.com C.4.4 Sage Sage (也称为 SageMath) 是一个基于 GPL 协议的开源数学软件. 它使用 Python 作为通用接口, 将现有的许多开源软件包整合在一起, 构建一个统一的计算平台. Sage 的第一个版本发布于 2005 年, 由华盛顿大学 William Stein 教授领导开发. 其使命是 “Creating a viable free open source alternative to Magma, Maple, Mathematica and Matlab”. Sage 有 Linux 和 MacOS 版本, 在 Windows 下可以通过虚拟 Linux 环境来实现. 不过用户也可以通过 浏览器直接在线使用. Sage 的官方主页为 www.sagemath.org, 有中文版的入门手册, http://www.sagemath.org/zh/
C5集群管理 285 C.5集群管理 HPC(High-Performance Computing.高性能计算):分成若干可以并行的子任务,并行的子任务间联 系很紧密,并需要大量的数据交换.作业管理软件:OpenPBS,Torque,Surm HTC(High-Throughput Computing.高吞吐量计算):分成若干可以并行的子任务,但各个子任务彼 此间没有什么关联.作业管理软件:HTCondor 集群管理软件比较:https:/en.m,wikipedia.org/wiki/Comparison_of_cluster_software
C.5 集群管理 · 285 · C.5 集群管理 HPC (High-Performance Computing, 高性能计算): 分成若干可以并行的子任务, 并行的子任务间联 系很紧密, 并需要大量的数据交换. 作业管理软件: OpenPBS, Torque,Slurm HTC (High-Throughput Computing, 高吞吐量计算): 分成若干可以并行的子任务, 但各个子任务彼 此间没有什么关联. 作业管理软件: HTCondor 集群管理软件比较: https://en.m.wikipedia.org/wiki/Comparison_of_cluster_software