并行算法讲义 联系客服

发布时间 : 星期六 文章并行算法讲义更新完毕开始阅读d6ac36768e9951e79b8927da

中科院数学与系统科学研究院 “并行计算” 课程讲义 (草稿)” 张林波

计算数学与科学工程计算研究所 科学与工程计算国家重点实验室 2003 年1月 29

目 录

第一部分 MPI消息传递编程 第一章 预备知识 §1.1 高性能并行计算机系统简介 §1.1.1 微处理器的存储结构 §1.1.2 Cache 结构对程序性能的影响 §1.1.3 共享内存 SMP 型并行计算机 §1.1.4 分布式内存 MP P 型并行计算机 §1.1.5 DSM 型并行计算机 §1.1.6 SMP/D SM 机群 §1.1.7 微机/1.4.作站机群 §1.1.8 TOP500 §1.2 并行编程模式 §1.2.1 自动并行与手1.4.并行 §1.2.2 0penMP §1.2.3 DSM 编程模式 §1.2.4 高性能 Fortran: HPF §1.2.5 消息传递并行编程模式 §l.3 Unix 程序开发简介 §l.3.1 Unix中常用的编译系统 §1.3.2 实用1.4.具make §1.4 消息传递编程平台 MPI §1.4.1 MPI 程序的编译与运行 §1.4.2 利用 MPICH 建立 MPI 程序开发与调试环境 第二章 MPI 基础知识 §2.1 下载 MPI标准的 PS 文档 §2.2 一些名词与概念 §2.3 编程模式 §2.4 MPI 函数的一般形式 §2.5 MPI 的原始数据类型 §2.5.1 Fortran 77 原始数据类型 §2.5.2 C 原始数据类型 §2.6 MPI 的几个基本函数 §2.6.1 初始化 MPI 系统 §2.6.2 检测 MPI 系统是否已经初始化

§2.6.3 得到通信器的进程数及进程在通信器中的序号 §2.6.4 退出 MPI 系统 §2.6.5 异常终止 MPI 程序的执行 §2.6.6 查询处理器名称 §2.6.7 莸取墙上时间及时钟精度 §2.7 MPI 程序的基本结构 §2.7.1 Fortran 77 程序 §2.7.2 C 程序 第三章 点对点通信 §3.1 标准阻塞型点对点通信函数 §3.1.1 标准阻塞发送 §3.1.2 阻塞接收 §3.1.3 阻塞型消息传递实例 §3.1.4 其它一些阻塞型消息传递函数 §3.2 消息发送模式 §3.2.1 阻塞型缓冲模式消息发送函数 §3.3 阻塞型与非阻塞型函数 §3.4 非阻塞型点对点通信函数 §3.4.1 非阻塞发送 §3.4.2 非阻塞接收 §3.4.3 通信请求的完成与检测 §3.4.4 通信请求的释放 §3.5 消息探测与通信请求的取消 §3.5.1 消息探测 §3.5.2 通信请求的取消 §3.6 点对点通信函数汇总 §3.7 持久通信请求 §3.7.1 创建持久消息发送请求 §3.7.2 创建持久消息接收请求

§3.7.3 开始基于持久通信请求的通信 §3.7.4 持久通信请求的完成与释放 第四章 数据类型 §4.1 与数据类型有关的一些定义 §4.1.1 数据类型定义 §4.1.2 数据类型的大小 §4.1.3 数据类型的下界、 上界与域 §4.1.4 MPI_LB 和 MPI_UB §4.1.5 数据类型查询函数 §4.2 数据类型创建函数 §4.2.1 MPI_Type_contiguous §4.2.2 MPI_Type_vector §4.2.3 MPI_Type_hvector §4.2.4 MPI_Type_indexed §4.2.5 MPI_Type_hindexed

§4.2.6 MPI_Type_struct §4.2.7 地址函数 MPI_Address §4.3 数据类型的使用 §4.3.1 数据类型的提交 §4.3.2 数据类型的释放 §4.3.3 MPI_Get_elements §4.4 数据的打包与拆包 §4.4.1 数据打包 §4.4.2 数据拆包 §4.4.3 得到打包后的数据大小 §4.5 MPI l.l 中位移与数据大小的限制

第五章 聚含通信 (Collective Communications) §5.1 障碍同步 §5.2 广播 §5.3 数据收集 §5.3.1 收集相同长度数据块 MPI_Gather §5.3.2 收集不同长度数据块 MPI_Gatherv §5.3.3 全收集 MPI_Allgather §5.3.4 不同长度数据块的全收集 MPI_Allgatherv §5.4 数据散发 §5.4.1 散发相同长度数据块 MPI_Scatter §5.4.2 散发不同长度数据块 MPI_Scatterv §5.5 全部进程对全部进程的数据散发收集 §5.5.1 相同数据长度的全收集散发 MPI_Alltoall §5.5.2 不同数据长度的全收集散发 MPI_Alltoallv §5.6 归约 §5.6.1 归约函数 MPI_Reduce §5.6.2 全归约 MPI_Allreduce §5.6.3 归约散发 MPI_Reduce_scatter §5.6.4 前缀归约 MPI_Scan §5.6.5 归约与前缀归约中用户自定义的运算 §5.7 两个程序实例 §5.7.1 π值计算 §5.7.2 Jacobi 迭代求解二维 Poisson 方程 第六章 进程组与通信器 §6.1 基本概念 §6.1.1 进程组 §6.1.2 上下文 (Context) §6.1.3 域内通信器 (Intracommunicator) §6.1.4 域间通信器 (Intercommunicator) §6.2 进程组操作函数 §6.2.1 查询进程组大小和进程在组中的序号 §6.2.2 两个进程组间进程序号的映射 §6.2.3 比较两个进程组

§6.2.4 进程组的创建与释放 §6.3 域内通信器操作函数 §6.3.1 比较两个通信器 §6.3.2 通信器的创建与释放 §6.4 通信器的附加属性 (Caching) §6.5 域间通信器 (Intercommunicator) §6.6 进程拓扑结构 §6.6.1 迪卡尔拓扑结构 §6.6.2 一般拓扑结构 §6.6.3 底层支持函数 第七章 文件输入输出 §7.1 基本术语 §7.2 基本文件操作 §7.2.1 打开 MPI 文件 §7.2.2 关闭 MPI 文件 §7.2.3 删除文件 §7.2.4 设定文件长度 §7.2.5 为文件预留空间 §7.2.6 查询文件长度 §7.3 查询文件参数 §7.3.1 查询打开文件的进程组 §7.3.2 查询文件访问模式 §7.4 设定文件视窗 §7.4.1 文件中的数据表示格式 §7.4.2 可移植数据类型 §7.4.3 查询数据类型相应于文件数据表示格式的域 §7.5 文件读写操作 §7.5.1 使用显式位移的阻塞型文件读写 §7.5.2 使用独立文件指针的阻塞型文件读写 §7.5.3 使用共享文件指针的阻塞型文件读写 §7.5.4 非阻塞型文件读写函数 §7.5.5 分裂型文件读写函数 §7.6 文件指针操作 §7.6.1 独立文件指针操作 §7.6.2 共享文件指针操作 §7.6.3 文件位移在文件中的绝对地址 §7.7 不同进程对同一文件读写操作的相容性 §7.7.1 设定文件访问的原子性 §7.7.2 查询 atomicity 的当前值 §7.7.3 文件读写与存储设备间的同步 §7.8 子数组数据类型创建函数

本讲义仅供课程学员及其他感兴趣者个人参考用,尚处于逐步修改完善的过程中,许多内容代表的是作者的个人观点。未经作者同意,不得擅自散播、 印刷、 转引讲义中的部分或全部内容。