CUDA编程08 - 并行编程思维
一:概述
到目前为止,我们集中于学习并行编程的实用知识,包括CUDA编程接口特性、GPU架构、性能优化技术、并行模式和应用案例研究。在本章中,我们将讨论更为抽象的概念。我们将并行编程概括为一种思维过程,即设计或选择并行算法,并将一个实际问题分解基本的工作单元,这些工作单元可以由所选的算法高效地执行。具备强大思维技能的程序员不仅会分析问题,还会转变实际问题的结构:哪些部分本质上是串行的,哪些部分适合并行执行,以及将前者的部分转移到后者所涉及的一些权衡。通过良好的算法选择和问题分解,程序员可以在并行性、工作效率和资源消耗之间取得适当的折中。如果要成功解决具有挑战性的实际问题,通常需要业务知识与并行思维技能相结合。本章将使读者对并行编程和计算思维有更深入的了解。
二:并行计算的目标
在讨论并行编程的基本概念之前,我们首先需要回顾人们追求并行计算的三个主要原因。第一个目标是在更短的时间内解决给定的问题。例如,一家投资公司可能需要在交易结束后对其所有投资组合运行金融投资组合场景风险分析程序。这种分析在顺序计算机上可能需要200小时。然而,投资组合管理过程可能要求在4小时内完成该分析,以便及时做出基于结果信息的重要决策。使用并行计算可以加快分析速度,使其在所需的时间窗口内完成。
使用并行计算的第二个目标是在给定的时间内解决更大的问题。在我们的金融投资组合分析示例中,投资公司可能能够在给定的时间窗口内使用顺序计算对其当前投资组合进行情景风险分析。然而,该公司计划扩大其投资组合中的持股数量。扩大后的问题规模将导致顺序分析超出允许的时间窗口。并行计算可以减少更大问题规模的运行时间,从而有助于适应对投资组合的计划扩展。
使用并行计算的第三个目标是为了在给定的问题和时间内获得更好的解决方案。投资公司可能在其投资组合场景风险分析中使