1.4 SPEEDING UP REAL APPLICATIONS

发布时间:2024年01月06日

我们从并行化应用程序中可以期待什么样的速度,这取决于应用程序中可以并行化的部分。如果可并行化部分所花费时间的百分比为30%,则并行部分的100倍加速将使执行时间减少不超过29.7%。整个应用程序的加速速度将仅为1.4倍左右。事实上,即使在并行部分进行无限的加速,也只能减少30%的执行时间,实现不超过1.43倍的加速。通过并行执行可以达到的加速水平可能会受到应用程序的可并行部分的严重限制,这一事实被称为Amdahl定律。另一方面,如果99%的执行时间在并行部分,则将并行部分加速100倍将应用程序执行减少到原始时间的1.99%。这使整个应用程序速度提高了50倍。因此,对于大规模并行处理器来说,应用程序的绝大部分执行都在并行部分非常重要,以有效加快其执行速度。

研究人员在某些应用中实现了超过100倍的速度。然而,这通常只有在算法增强后进行广泛优化和调整后才能实现,以便超过99.9%的应用程序执行时间处于并行执行。在实践中,应用程序的直接并行化通常饱和内存(DRAM)带宽,导致速度仅提高约10倍。诀窍是弄清楚如何绕过内存带宽限制,这涉及进行许多转换之一,以利用专门的GPU片上存储器来大幅减少对DRAM的访问次数。然而,人们必须进一步优化代码,以绕过有限的芯片内存容量等限制。这本书的一个重要目标是帮助读者充分理解这些优化,并熟练掌握这些优化。

请记住,通过单核CPU执行实现的加速水平也可以反映CPU对应用程序的适用性:在某些应用程序中,CPU性能非常好,因此使用GPU更难加快性能。大多数应用程序都有部分可以由CPU更好地执行。因此,必须给CPU一个公平的执行机会,并确保编写代码,以便GPU补充CPU执行,从而正确利用组合CPU/GPU系统的异构并行计算能力。

图1.3说明了典型应用程序的主要部分。许多真实应用程序的代码往往是顺序的。这些顺序部分被说明为桃子的“坑”区域:试图将并行计算技术应用于这些部分就像咬进桃子坑一样——不是一种好感觉!这些部分很难并行。CPU的这些部分相当不错。好消息是,尽管这些部分可以占用大部分代码,但往往只占超级应用程序执行时间的一小部分。
在这里插入图片描述

其余的就是我们所说的“桃肉”部分。这些部分很容易并行化,一些早期的图形应用程序也很容易并行化。异构计算系统中的并行编程可以极大地提高这些应用程序的速度。如图1.3 所示,早期的GPGPU仅覆盖肉类部分的一小部分,这类似于一小部分最令人兴奋的应用程序。正如我们将看到的,CUDA编程模型旨在涵盖令人兴奋的应用程序中更大的桃子肉部分。事实上,正如我们将在第20章《关于CUDA和GPU计算的更多信息》中讨论的那样,这些编程模型及其底层硬件仍在快速发展,以便能够对更大的应用程序进行高效并行化。

文章来源:https://blog.csdn.net/wangyifan123456zz/article/details/135420204
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。