高性能并行运行时系统:设计与实现
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 本书结构

为了更好地理解本书结构,请参见图1.1。它展示了并行运行时系统的典型层次结构。(并行)应用程序代码位于并行运行时库之上,该库实现了支持应用程序中的并行性的关键功能。并行运行时库通常依赖于本地库,本地库通过操作系统来提供线程概念(例如POSIX线程库pthreads[34])。栈的底层是多核处理器,它执行并行运行时系统和应用程序的代码。在很多情况下,线程库和并行运行时系统会使用由多核处理器提供的功能,以获得更高效率。

本书剩余部分大体上以自顶向下的方式论述各个主题。我们从(应用程序)程序员能接触到的并行编程模型层开始。我们将讨论一些设计选择,以及它们对实现并行编程模型的软件栈通用结构的影响。第2章将简要介绍本书用到的并行编程模型的关键概念。这不是对并行编程的深入介绍,但请不要因此失望,而要想到:你对并行编程仅接触了一点点,就对它有了基础的了解。

图1.1 并行运行时系统的典型层次结构

第3章将描述多核架构的基础。虽然多核架构位于上述层次结构的底层(甚至位于软件栈之下!),但提早讲解机器级别的细节是很有益的,原因是现代处理器的工作方式和它们执行并行应用的行为方式激发了我们将介绍的一些实现选择和算法。

第4章将解释并行编程模型和运行时系统之间通过编译器和运行时入口点进行交互的方式。第5章将讨论并行运行时系统通常需要的横切方面,例如如何管理并行性,以及如何管理内存。

第6章到第9章涵盖了各种细节!这几章将深入探讨关键概念的具体方面和实现,例如互斥、原子操作、同步障、归约和任务池。这几章全都聚焦于实现的算法与机器之间的交互方式,以及它们对现代处理器造成的影响。这可以让你清晰地了解,为了榨取并行性能都需要掌握什么。理想情况下,这会使你更好地使用运行着并行运行时系统(及其上的并行应用程序)的昂贵机器。