目录

1 MPI教程:消息传送接口 
2 课程纲要
3 背景
4 并行计算
5 并行计算类型
6 与其它进程通信
7 协作操作
8 单方操作
9 类示例
10 硬件模型
11 MPI是什么?
12 一个新的设计的动机
13 动机(继续)
14 MPI进程
15 谁设计MPI?
16 MPI特征
17 MPI特征(继续)
18 MPI中所没有的特征
19 MPI是大还是小?
20 哪里使用MPI
21 为什么学习MPI?
22 起始
23 编写MPI程序
24 注释
25 编译和链接
26 专门的编译命令
27 使用Makefile
28 Makefile.in样本
29 Makefile.in样本(继续)
30 运行MPI程序
31 寻找环境
32 一个简单的程序
33 警告
34 练习 - 起始
35 发送和接受消息
36 目前的消息传送
37 缓冲
38 将缓冲区描述通用化
39 类型通用化
40 使用库调用的样本程序
41 正确执行库调用
42 不正确使用库调用
43 正确执行将通信挂起的库调用
44 不正确执行将通信挂起的库调用
45 类型问题的解决
46 将通信范围限定
47 进程标识的通用化
48 MPI基本的发送/接受
49 得到有关消息的信息
50 简单的Fortran的例子
51 简单的Fortran的例子(继续)
52 六个函数的MPI
53 尝试所要进行的东西
54 广播和归约
55 Fortran例子:PI
56 Fortran例子(继续)
57 C 例子:PI
58 C 例子(继续)
59 练习 - PI
60 练习 - 环
61 拓扑
62 笛卡尔拓扑
63 定义一个笛卡尔拓扑
64 寻找邻居
65 我是谁?
66 划分
67 其它拓扑例程
68 为什么这些例程在MPI中
69 周期参数
70 周期性网格
71 非周期性网格
72 MPI中的集合通信
73 同步
74 可获得的集合模式
75 可获得的集合计算模式
76 MPI集合例程
77 内嵌集合计算操作
78 定义你自己的集合操作
79 用户函数样本
80 定义组
81 再分通信子
82 细分(继续)
83 操作组
84 创建组
85 缓冲论点
86 好的缓冲
87 阻塞和非阻塞通信
88 针对“不安全”问题的一些解决方法
89 MPI非阻塞操作
90 多个完成
91 公平性
92 消息传送中的公平性
93 提供公平性
94 提供公平性(Fortran)
95 练习 - 公平性
96 更多的有关非阻塞通信
97 通信模式
98 缓冲发送
99 重用同一缓冲区
100 其它点对点特征
101 数据类型和异构性
102 MPI中的数据类型
103 基本的数据类型(Fortran)
104 基本的数据类型(C)
105 向量
106 结构
107 例子:结构
108 步长
109 重访问向量
110 重访问结构
111 交叉数据
112 一个交叉数据类型
113 散播一个矩阵
114 练习 - 数据类型
115 编写库工具
116 私有通信子
117 属性
118 什么是一个属性?
119 使用属性的例子
120 串行部分
121 串行部分 II
122 串行部分 III
123 对串行部分的评述
124 例如:管理标识
125 在通信子上缓冲标识
126 在通信子上缓冲标识 II
127 在通信子上缓冲标识 III
128 在通信子上缓冲标识 IV
129 在通信子上缓冲标识 V
130 在通信子上缓冲标识 VI
131 注释
132 练习 - 编写库
133 MPI 对象
134 MPI 对象
135 什么时候应该释放对象?
136 引用计数
137 为什么引用计数
138 评价程序的工具
139 MPI 计时器
140 剖析
141 编写剖析例程
142 另一个剖析例程
143 另一个剖析例程(继续)
144 产生和观察日志文件
145 产生日志文件
146 将几个程序链接在一起
147 在不同的程序间发送消息
148 在程序间交换数据
149 集合操作
150 最终注释
151 可共享的MPI资源
152 可共享的MPI资源,继续
153 MPI-2
154 总结