一:概述
到目前为止,我们集中于学习并行编程的实用知识,包括CUDA编程接口特性、GPU架构、性能优化技术、并行模式和应用案例研究。在本章中,我们将讨论更为抽象的概念。我们将并行编程概括为一种思维过程,即设计或选择并行算法,并将一个实际问题分解基本的工作单元,这些工作单元可以由所选的算法高效地执行。具备强大思维技能的程序员不仅会分析问题,还会转变实际问题的结构:哪些部分本质上是串行的,哪些部分适合并行执行,以及将前者的部分转移到后者所涉及的一些权衡。通过良好的算法选择和问题分解,程序员可以在并行性、工作效率和资源消耗之间取得适当的折中。如果要成功解决具有挑战性的实际问题,通常需要业务知识与并行思维技能相结合。本章将使读者对并行编程和计算思维有更深入的了解。
二:并行计算的目标