图书前言

数学科学不仅是自然科学的基础,也是一切重要技术

发展的基础。电子计算机的发明及计算技术的发展都以数学为其理论基础。计算机技术

的发展使得数学的应用更加直接和广泛,同时也正在改变人们对数学的传统认识。数学素质已成为今天培养高层次创新人才的重要基础。

计算数学是一门随着计算机发展而形成的学科,研究如何应用计算机有效地求解各类计算问

题的方法和理论,其中涉及的计算问题主要来源于科学研究和工程设计,因此人们又称这

门学科为科学计算。今天,计算和实验、理论分析一起成为当今科学活动的主

要方式。在物理、化学、力学、材料科学、环境科学、信息科学和生物科学

等领域,计算方法和技术已经成为被广泛接受的科学研究手段,这一系列计算性的分支学科统称为计算科学。现在,计算在科学研

究和工程设计中几乎无处不在,对科技的发展起到举足轻重的作用。由于计算数学的发展已有50多年的历史,在教学科研方面有着深厚的积累,传统的教材建设也相对比较规范。伴随着计算机技术突飞猛进的发展,特别是超大规模计算机平

台的建立和使用,以及科学研究中不断增长的对计算方法和技术的需求,传统的计算数学教材已不能满足教学的需要。

信息化已成为当今世界发展的重要趋势,也是衡量一个国家现代化水平的重要

标志。信息科学可以理解为信息获取、传输、处理与控制的科学。我国信息科学发展的时

间相对较短,但发展迅猛。发展信息科学需要数学基础,当然也离不开计算机科学。由于信息科学的

多学科交叉的特点,在不同院校和专业,信息科学都得到了一定的发展。但也正是这些原因,使得信息科学

的学科定位,尤其是教材建设百家争鸣,缺乏统一的规范,为教学带来了很大的实际困难。

教育部1998年颁布的普通高等院校专业目录中,“信息与计算科学专业”被列为数学类

下的一个新专业。这一新专业的设置很好地适应了新世纪以信息和计算技术为核心的数学人才

的培养。然而,作为一个新专业,对其专业内涵、专业规范、教学内容与课程体系等有一个认识与探索

的过程。教育部数学与统计学教学指导委员会经过多年艰苦细致的工作,对一些问题有了比较明确的指导意

见,发表了《关于信息与计算科学专业办学现状与专业建设相关问题的调查报告》及《信息与计算科学专业教学规范》

(讨论稿)(见《大学数学》第19卷1期(2003))。按照新的教学规范,信息与计算

科学专业是以信息技术和计算技术的数学基础为研究对象的理科类专业。其目标是培养具有良好的数学基础和数学思

维能力,掌握信息与计算科学基础理论、方法与技能,能解决信息技术和科学与工程计算中实际问题的高级专门人才。

近年来在教育部领导下,高等院校每年大量扩大招生,从而使得我国的高等教育从精英化向大众化转变。现在全国大

约有400所高校开办了“信息与计算科学专业”,每年招收3万名左右的本科生。其中大部分学校缺乏从事该领域教学科研经

验的教师,对专业的定位和课程设置也不明确。即使是全国一流的高校,也是偏向于单一学科,新专业没有一个完整的切实可行

的教学大纲,适合交叉学科专业的教材极其匮乏。

``信息与计算科学专业''属于数学类,前两年的课程基本上是明确的,教材也很多。本套系列教材重点建

设后两年的专业课。由于重点高校大部分有自己的课程体系和教材建设,本系列教材主要针对普通高等院校开办

的该专业。依据教育部``强基础,宽口径,重实际,有侧重,创特色''的办学指导思想,清华大

学出版社~《高等院校信息与计算科学专业系列教材》编委会成员对专业定位、课程设置、教材内涵等进行了深

入的探讨,并邀请有多年教学和科研经验的教师编写系列教材。特别是北京大学姜明教授等对涉及信息科学的教材建设

花费了大量心血,在此对他们表示感谢。

为适应不同类型院校和不同层次要求的课程需求,教材建设也需要多样化、层次化。我们相信,该系列教材的

出版对缓解本专业教材的紧缺局面,逐步形成专业定位与课程设置,推动信息与计算科学的

发展,培养适应时代发展的交叉学科人才,提高中国数学教育水平会起到一定的作用。

张平文

2005 年9月6日

前  言

随着高性能并行计算机,尤其是Linux微机机群在我国应用部门、大学和科研机构的

普及,并行计算已经成为许多科研和工程技术人员亟待掌握的一项研究开发手段。

但是,在我国,对并行计算的基本原理、并行算法设计、并行程序的设计与实现、

并行性能优化,以及一些成熟的科学计算软件工具箱、库等的普及教育和推广应用

还明显不够,大大制约了并行计算技术在科学研究与工程设计中应有作用的发挥。

本书是并行计算,特别是分布式并行计算环境及消息传递并行编程的入门教材。

它侧重于介绍利用现有的微机条件建立并行计算的软硬件环境,以及并行算法设计、

MPI消息传递并行编程的基本概念与方法。作者希望通过本书,一方面加

强和规范普通高校的并行计算课程,另一方面在科学研究与工程应用领域普及并行计

算技术,推进高性能计算技术的应用。

全书分为3部分,共包括9章和2个附录。

第1部分包括第1章至第4章,

主要介绍并行计算的基础知识。第1章讲述并行计算机

的发展历史、并行计算机体系结构以及并行计算、并行算法设计的基本名词和概念。

第2章介绍Linux操作系统的安装、Linux操作系统的基本命令和工具,

以及Linux操作系统中的程序开发、调试。第3章讲述标准消息传递并行编

程接口MPI,并介绍如何利用目前流行的免费MPI软件MPICH和Linux系统在局域网

上建立实用的并行计算平台。考虑到本书的篇幅限制,并鉴于国内已有一些专门关于

MPI编程的书,本书中关于MPI编程部分仅限于讲述MPI编程的基本概念和介绍一些

MPI的重要函数,同时在附录B中提供MPI变量和函数的完整参考,方便读者查询。第4章讲述程序性能评价与优化方面的有关知识。

第2部分包括第5章至第9章。在这部分中,

通过一些典型并行算法设计及并行程序实现的实例,介绍并行算法设计的基本思想

与MPI并行程序实现的基本技巧。第5章介绍一个自适应数值积分

算法的并行算法设计与MPI并行程序实现。第6章介绍矩阵计算的并行

算法与程序。第7章介绍快速傅里叶变换(FFT)的并行算法及在消息传递

并行环境中的实现方法。第8章以二维Poisson方程5点差分

格式的点Jacobi迭代算法为例,介绍基于区域分解方法的并行算法设计与并行程序编制。

第9章通过二维热传导方程的ADI格式介绍基于流水线方法的并行算法设计

的基本思想及实现方法。

第3部分由2个附录构成。附录A介绍一些

重要的高性能计算、并行计算的工具和平台,包括BLAS, \allowbreak

LAPACK, \allowbreak ScaLAPACK, \allowbreak FFTW 和

PETSc。附录B是一个为方便读者速查而整理的较完整 的MPI参考手册。

本书最后是MPI函数、变量索引和名词、概念索引。大部分章后面

附有习题,一部分习题是为了巩固、加深对该章内容的理解,而另一部分习题

则是对正文内容的扩充。

本书可作为一本课堂使用或者自学使用的教材,在编写过程中考虑了

适应尽可能广的读者群体,以便读者不需要很多的预备知识,

就能够在逐步的使用过程中掌握利用并行计算技术解决自己学习和工作领域中的

计算问题的知识和技术。本书的特点是:注重实效性,使读者能够学

到具体有用的知识和技术,而不必首先建立对整个知识系统结构的认识;强调实践性,

读者应该一边学习一边操作,认真分析和重复书中提供的具体例子,将介绍的知识应用

于各自的专业领域中;强调普适性,侧重于科学计算领域面临的一些共性问题的并行

计算方法与技术,并注意介绍一些国际流行的库、软件和工具箱。希望读者能够

结合自己的实际情况,练习简单微机机群环境建立的实际操作及Linux系统的管理和

使用,与自己的工作领域相结合,编写具体模型问题的例子程序,举一反三,

学以致用。通过本书的学习,迅速掌握并行计算机的使用与编程,并且能够利用已有条件

采用微机机群技术自行建立实验性或实用的并行计算环境,用于解决实际问题。

本书的目的是介绍运用高性能并行计算机,深入解决科学计算问题所必须掌握的并行计算

原理、并行算法设计、并行程序设计和性能优化等方面的基本知识和技术手段。鉴于此,

本书写作过程中尽量避免枯燥的系统介绍,而是侧重于培养读者解决实际问题的能力,

并注意介绍编著者在这方面的经验。

限于作者的学识以及时间,书中错误与片面之处在所难免,恳请读者不吝指正。

在本书的作者中,

张林波(中国科学院数学与系统科学研究院)编写了第3章、第5章、

第9章和附录B,以及第2章、 第4章和附录A中的部分内容;

迟学斌(中国科学院计算机网络信息中心)编写了第6章、第7章及附录A

中的部分内容; 莫则尧(北京应用物理与计算数学研究所)编写了第1章、

第4章和第8章; 李若(北京大学数学科学学院)编写了第2章。

本书中的程序实例可以从下面的网址下载:

ftp://ftp.cc.ac.cn/pub/home/zlb/bxjsbook/code/

下述人员提供了附录A中的部分内容:程强(A.5)、

陈江(A.3)、赵韬(A.2)、谷同祥(A.4), 在此一并致谢。\\

作  者

2006年3月8日于北京