应用简介:
Profile:
许多代码使用相对较少的代码完成了大部分工作。 使用探查器,开发人员可以识别这些热点,并开始编译并行化候选列表。
创建配置文件:
有很多可能的方法来分析代码,但在所有情况下,目标都是一样的:识别应用程序花费其大部分执行时间的函数或函数。
(高优先级:为了最大限度地提高开发人员的生产力,应用程序可以确定热点和瓶颈。)
任何分析活动最重要的考虑是确保工作负载是现实的 - 即从测试中获得的信息和基于该信息的决定与真实数据相关。 使用不切实际的工作负载可能会导致次优的结果和浪费的工作量,它们会导致开发人员针对不切实际的问题大小进行优化,并导致开发人员专注于错误的功能。
有许多工具可用于生成配置文件。 以下示例基于gprof,它是GNU Binutils集合中用于Linux平台的开源分析器。
识别热点:
在上面的例子中,我们可以清楚地看到函数genTimeStep()占用了应用程序总运行时间的三分之一。 这应该是我们第一个并行化的候选功能。 了解缩放比例讨论了我们可能从这种并行化中获得的潜在收益。
值得注意的是,上面例子中的其他几个函数也占用了整个运行时间的很大一部分,比如calcStats()和calcSummaryData()。 并行化这些功能也会增加我们的加速潜力。 但是,由于APOD是一个循环过程,因此我们可能选择在随后的APOD过程中将这些功能并行化,从而将任何给定过程中我们的工作范围限制为较小的一组增量更改。
了解缩放(scaling):
通过在CUDA上运行,应用程序将实现的性能优势的数量完全取决于它可以并行化的程度。 无法充分并行化的代码应该在主机上运行,除非这样做会导致主机和设备之间的过度传输。
高优先级:为了从CUDA中获得最大收益,请首先着眼于寻找并行化顺序代码的方法。
通过理解应用程序如何扩展,可以设置期望值并计划增量并行策略。 强大的缩放和Amdahl定律描述了强大的缩放,这使我们能够为固定问题大小的加速设置上限。 弱缩放和Gustafson定律描述了弱缩放,其中通过增大问题大小来实现加速。 在许多应用中,强弱比例的组合是可取的。
阿姆达尔定律是计算机系统设计的重要定量原理之一,于1967年由IBM360系列机的主要设计者阿姆达尔首先提出。该定律是指:系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频率,或所占总执行时间的比例。阿姆达尔定律实际上定义了采取增强(加速)某部分功能处理的措施后可获得的性能改进或执行时间的加速比。简单来说是通过更快的处理器来获得加速是由慢的系统组件所限制。
Gustafson 定律
–Gustafson假设随着处理器个数的增加,并行与串行的计算总量也是可以增加的。Gustafson定律认为加速系数几乎跟处理器个数成正比,如果现实情况符合Gustafson定律的假设前提的话,那么软件的性能将可以随着处理个数的增加而增加。