前言
写这本书的念头源自Michael在慕尼黑工业大学讲的一门课。你知道,这纯粹是出于兴趣。那门课叫“并行编程系统”,教的是将并行编程模型引入并行机器的基础知识。完全就是本书主题,真巧!
并行运行时系统是非常有趣的主题。我们平时的工作就是解决不同处理器上的各种性能及底层机器细节的问题。但是,对应用程序代码性能的考虑,相对于对软件栈底层及支持并行编程模型的运行时库内部的性能的考虑,是不一样的。在底层有很多机器细节,为了尽可能获得高性能,开发者必须考虑这些细节。
学生们在上了几节课以后,似乎对关于底层的部分很感兴趣,所以Michael认为可以写一本书!随着Jim加入作者团队,一切准备就绪。Jim不仅有多年的经验,还具有丰富的并行性知识,对底层机器细节非常感兴趣。
我们希望你能和我们一样喜欢该主题。写这本书(及附带代码)确实非常有趣,我们也希望你能读得开心。我们使用了大量代码示例和图表来阐释各种概念,帮助你理解编写运行时系统关键部分的细节。大多数代码示例使用C和C++编写。我们还使用了一些汇编语言,以演示现代编译器处理源代码的方式。
熟悉Fortran或其他语言的程序员不必感到失望,你依然能从本书学到很多知识,而且你能将关键概念转换到你所选用的语言。我们选用C/C++,不是因为我们认为其他语言无趣或不相关,而是因为我们认为,无论上层用户代码使用何种语言编写,对于非常贴近机器的底层实现而言,C和C++依然处于统治地位。所以请保持开放的心态,即使这种开放心态会带来一个小麻烦————总有人想向你的观念里塞点东西。
感谢出版商De Gruyter出版本书,以及在我们忙于写书时给予我们耐心。感谢De Gruyter的Ute Skambraks耐心地与我们一起整理文稿。感谢那些在阅读了本书早期版本后没有“逃跑”的审稿人。他们是Mark Bull、Barbara Chapman、Florina M. Ciorba、Chris Dahnken、Alex Duran、Wooyoung Kim、Will Lovett、Larry Meadows、Jennifer Pittman、Carsten Trinitis和Terry Wilmarth。感谢我们的校对人Matthew Robertson(https://checkmatteditorial.com)和Randall Munroe。Randall是https://xkcd.com网站的创始人,他授权我们使用他的创意。如果书中依然遗留错误,那肯定就是我们自己的疏忽了。最后,本书使用了由GW4与UK Met Office运营的、由EPSRC(EP/P020224/1)资助的Isambard UK National Tier-2 HPC Service(http://gw4.ac.uk/isambard/),还使用了一些位于布里斯托大学的机器。衷心感谢所有人。
现在,废话不多说,希望你能喜欢本书!
Michael&Jim