第0章 引言 1
第1章 CUDA使用初步 7
1.1GPU介绍 7
1.2CUDA介绍 9
1.2.1CUDA特性 9
1.2.2CUDA编程模型 10
1.2.3CUDA语法简单介绍 13
1.3CUDA安装和使用 16
1.3.1安装 16
1.3.2配置 18
1.3.3编译 20
1.3.4执行 21
1.4第一个CUDA程序——矩阵相加 21
1.4.1CPU计算 22
1.4.2改编成CUDA算法 23
1.4.3CUDA程序代码matrixAdd.cu详细解释 27
1.5调试和优化 29
1.5.1调试查错 29
1.5.2性能优化 32
第2章 基于CUDA的CT图像重建 34
2.1CT介绍 34
2.2CT扫描及重建原理 37
2.2.1投影 37
2.2.2傅里叶切片定理 39
2.2.3滤波反投影(FBP)重建算法 41
2.3FBP图像重建算法的CUDA实现 42
2.3.1单GPU重建 43
2.3.2多GPU重建 51
2.3.3结果及性能 52
2.3.4优化 55
2.3.5重建图像的显示 58
2.4总结 59
第3章 分子动力学模拟的GPU并行实现 60
3.1建立适合GPU计算的分子动力学模拟算法 60
3.1.1分子动力学模拟简介 60
3.1.2单个GPU上的算法 61
3.1.3多个GPU并行算法 67
3.1.4多相分子动力学的GPU算法 72
3.2GPU-MD算法的应用 74
3.2.1单相流动——方腔流 74
3.2.2多相流动 78
3.3GPU性能发挥 81
第4章 基于GPU的原子间多体作用计算及其在材料领域的应用 84
4.1材料计算领域的原子间多体相互作用模型 85
4.1.1对势 85
4.1.2多体相互作用势 87
4.2模拟算法 90
4.2.1原子初始生成与布置 90
4.2.2时间步长积分方法 91
4.2.3邻近粒子搜索算法 92
4.2.4边界条件 94
4.2.5对系统的控制方法 95
4.2.6统计分析结果的提取 95
4.2.7CPU上的算法 96
4.2.8单GPU算法 96
4.2.9多GPU并行计算算法 102
4.3实例应用 107
4.3.1单GPU计算实例 108
4.3.2多GPU并行计算实例 110
4.4性能分析 111
4.4.1单GPU不同算法的比较 112
4.4.2多GPU并行计算 114
4.5一些GPU程序开发调试经验 117
第5章 长链分子分子动力学模拟的GPU实现 119
5.1长链分子分子动力学模拟的常用模型和算法 119
5.2算法的GPU实现 121
5.2.1粒子信息的存储 121
5.2.2邻居列表的建立 123
5.2.3非成键力的计算 126
5.2.4成键力的计算 128
5.2.5迭代算法的选择 131
5.3模拟体系和GPU程序性能 132
5.3.1非成键力的计算 133
5.3.2成键力的计算 134
5.3.3迭代算法和网格的更新 136
第6章 颗粒流体系统宏观粒子模拟的GPU实现 138
6.1宏观粒子方法(MaPM) 138
6.2MaPM的算法实现 141
6.2.1粒流体系统MaPM模拟在CPU上的单机实现 141
6.2.2CPU上的并行实现 142
6.2.3GPU上的单机实现 143
6.2.4GPU上的并行实现 145
6.3并行程序性能分析 149
6.4体会与展望 150
第7章 基于GPU的格子玻尔兹曼方法计算 153
7.1格子玻尔兹曼方法 153
7.1.1LBM方法简介 153
7.1.2LBM方法理论基础 154
7.2格子玻尔兹曼方法在GPU上的实现 156
7.2.1单GPU的LBM计算 157
7.2.2多GPU的LBM计算 162
7.3LBM在GPU上的计算实例及结果分析 168
7.3.1LBM模拟多孔介质流动 168
7.3.2GPU上LBM计算的性能分析 171
7.4结语 173
第8章 其他非CPU编程 174
8.1流计算平台的基本结构 174
8.1.1流计算平台的硬件 175
8.1.2流计算平台的软件 177
8.2Brook+编程 179
8.2.1Brook+程序的编译过程 179
8.2.2Brook+程序的结构 182
8.2.3Brook+中的数据类型 183
8.2.4流和流操作 185
8.2.5内核 186
8.2.6注意事项 188
8.3欧拉粒子体系模拟 189
8.3.1CPU代码 189
8.3.2GPU代码 190
结束语 194
参考文献 195
附录 203
附录A CUDA profiler的使用与配置 203
附录B符号说明 205