目录
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 总结