高等数值分析(高性能计算,并行计算) (Parallel and High Performance Computing)

发布时间 2023-12-19 18:21:06作者: abaelhe

https://github.com/OpenMP

https://math.ecnu.edu.cn/~jypan/Teaching/ParaComp/

Parallel and High Performance Computing(高等数值分析(高性能计算,并行计算))

基本信息:
教材:本课程主要讲授数值并行计算,内容以课堂讲义为主
主要参考资料:
并行计算与实现技术,迟学斌等,科学出版社,2015
并行计算导论,张林波等, 清华大学出版社,2006
Parallel Programming: Concepts and Practice, Schmidt et al, 2018 (并行程序设计: 概念与实践, 张常有等译, 2020)
Parallel and High Performance Computing, Robey & Zamora, 2021 (并行计算与高性能计算, 殷海英译, 2022)
The Art of High Performance Computing, Eijkhout, 2023
远程客户端: SSH Secure Shell Client-3.2.9, SecureCRT
电子课件:
02.27,并行计算介绍
网络资源: Introduction to Parallel Computing Tutorial (Lawrence Livermore National Lab)
计算机体系结构基础
课外阅读: 第60届全球超级计算机TOP500排名及分析,2022.11
03.06,Linux 操作系统介绍
参考资料: Linux Command Quick Reference, Vi 简介, Vi 小结, vim cheat sheet
Linux 就该这么学 (第 2 版), 刘遄, 2021
Linux命令行与shell脚本编程大全 (第 4 版), Blum 等著, 2020, 门佳译, 2022
网络资源: Linux 教程, Shell 教程, Linux 常用命令, Linux 命令搜索
vim 入门基础, vi/vim 菜鸟教程
CentOS/Ubuntu 下载: 上海交大FTP, 清华开源软件镜像, 阿里巴巴开源镜像, 网易开源镜像
03.13,C 语言编程介绍 (示例代码)
参考资料: C 语言程序设计笔记, C Reference Card, 常用头文件
C Primer Plus (第 6 版), Prata 著, 2014, 姜佑译 2016, 涵盖 C11
零基础学 C 语言 (第 4 版), 康莉等著, 2019
网络资源: C 语言入门, C 语言教程, C reference, C 语言运算优先级, GCC docs online
编译器: https://gcc.gnu.orghttps://clang.llvm.org
03.20,C 语言编程介绍 (续)
应用举例: 矩阵乘积快速计算
课外阅读: Why GEMM is at the heart of deep learning
作业:用 C 语言编程实现矩阵乘积的各种不同算法, 并比较这些算法的计算效率.
03.27,OpenMP并行编程(一)
参考资料: Quick Card 4.0, Quick Card 5.0, Specification 4.0, Specification 5.0, OpenMP Examples 4.0.2
网络资源: OpenMP 主页, OpenMP Tutorial (Lawrence Livermore National Lab)
示例代码: OMP_hello.c, OMP_parallel_01.c, OMP_parallel_02.c
OMP_for.c, OMP_parallel_for.c, OMP_for_schedule.c
OMP_pi.c, OMP_pi_critical.c, OMP_pi_for.c
04.03,OpenMP并行编程(二)
示例代码: OMP_sections.c, OMP_critical_pi.c, OMP_atomic_01.c, OMP_atomic_02.c
04.10,OpenMP并行编程(三)
示例代码: OMP_lock.c, OMP_lock_pi.c, OMP_lock_atomic_critical.c
作业:实现 Jacobi 迭代算法的 OpenMP 并行计算.
04.17,矩阵-向量乘积并行算法, 矩阵-矩阵乘积并行算法
示例代码: C_MatVec_for.c, OMP_MatVec_for.c, OMP_MatVec_row.c
OMP_MatMul_for.c, OMP_MatMul_row.c
04.24,线性方程组直接法并行计算
示例代码: C_LU.c
作业:实现部分选主元 LU 分解的串行算法和 OpenMP 并行算法.
05.01,五一放假
05.08,消息传递编程接口 MPI:(一)编程基础
参考资料: MPI 3.1 Report (2015), MPI 4.0 Report (2021), 被替换的 MPI 旧函数 (2021)
网络资源: MPI-Forum, mpitutorial
MPI 实现: MPICH, OpenMPI
示例代码: MPI_hello.c, MPI_pi.c
MPI_Sendrecv_01.c, MPI_Sendrecv_02.c, MPI_Sendrecv_03.c, MPI_Sendrecv_04.c
05.15,消息传递编程接口 MPI:(二)消息传递
示例代码: MPI_pi_reduce.c
作业:使用 reduce 计算 pi 的值,连续分配计算小区间.
05.22/29,基于 MPI 的矩阵向量乘积, 基于 MPI 的矩阵矩阵乘积
示例代码: MPI_matvec.c, MPI_matvec_v.c, MPI_matvec_swap.c
MPI_matmul.c, MPI_matmul_swap.c
06.05,消息传递编程接口 MPI:(三)MPI 数据类型
消息传递编程接口 MPI:(四)进程与通信器操作
基于 MPI 的 LU 分解
06.12,基于 MPI 的二维 Poisson 方程求解
示例代码: jacobi.c, MPI_jacobi.c
参考资料:
Pacheco 著,邓倩妮等译,并行程序设计导论(An Introduction to Parallel Programming),机械工业出版社,2012
李晓梅等著,数值并行算法与软件,科学出版社,2014
陈国良, 《并行计算: 结构、算法与编程》第二版, 高等教育出版社, 2003
陈国良, 安虹等,《并行算法实践》, 高等教育出版社, 2004.
J. Dongarra等著, 莫则尧等译, 《并行计算综论》, 电子工业出版社, 2005(英文版2003)
Introduction To Parallel Computing (中文翻译)
OpenMP/MPI
M. Quinn著, 陈文光等译, 《MPI与OpenMP并行程序设计(C语言版)》, 清华大学出版社, 2004
秋明等著, OpenMP编译原理及实现技术, 清华大学出版社, 2012.
张武生等, 《MPI并行程序设计实例教程》, 清华大学出版社, 2009.
M. Snir, et al, 《MPI: The Complete Reference》, 1996, 2nd 2001.
W. Gropp, et al, 《MPI: The Complete Reference, Vol.2, MPI-2 Extensions》, 1998.
W. Gropp, et al, 《Using MPI: Portable Parallel Programming With the Message-passing Interface》, 2nd, 1999.
MPI Turorial
MPI2 介绍(中文)
Fortran
S.J. Chapman 著, 《Fortran 95/2003程序设计》(第3版), 中国电力出版社, 2009.
I. Chivers, J. Sleightholme, Introduction to Programming with Fortran, 2nd, 2012
(中译本, Fortran权威指南, 第一版, 2009)
GPU
J. Sander 等著, 《GPU高性能编程CUDA实战》, 机械工业出版社, 2012.
R. Farber 著, 《高性能CUDA应用设计与开发:方法与最佳实践》, 机械工业出版社, 2013.
A. Munshi 等著, 《OpenCL编程指南》, 机械工业出版社, 2012.
并行程序编程实现:
MPI: MPI Forum, MPICH, Open MPI (原 LAM)
MVAPICH -- MPI over InfiniBand and iWARP
PVM - Parallel Virtual Machine
OpenMP 一个共享存储并行系统上的应用编程接口
HPF - High Performance Fortran
中科院超级计算中心 (超级计算环境基础并行软件平台建设与应用)
Top 500 supercomputer (浮点运算性能)
Graph 500 supercomputer (在数据密集型应用上的性能)
Netlib (国内镜像) Collection of Mathematical Software, Papers and Database
PETSc: Portable, Extensible Toolkit for Scientific Computation
Last modified: Sep. 1, 2019