本节书摘来自华章出版社《多核与GPU编程:工具、方法及实践》一书中的第2章,第2.1节, 作 者 Multicore and GPU Programming: An Integrated Approach[阿联酋]杰拉西莫斯·巴拉斯(Gerassimos Barlas) 著,张云泉 贾海鹏 李士刚 袁良 等译, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
第2章
多核和并行程序设计
本章目标
学习设计并行程序的PCAM方法。
使用任务图和数据依赖图来识别可以并行执行的计算部分。
学习将问题的解法分解为可并发执行部分的流行的分解模式。
学习编写并行软件的主要程序结构模式,如主/从和fork/join。
理解分解模式的性能特点,如流水线。
学习如何结合分解模式和合适的程序结构模式。
2.1 引言
即使是对于经验丰富的专业程序员,向多核编程的过渡也并不简单。多核和并行编程往往会打破语句按严格顺序执行的串行程序的传统风格。当许多事情在同一时间发生时,正如并行程序的情况,语句的可能顺序远非唯一。除非程序经过仔细设计,否则像数据误改或者阻塞程序运行的异步通信之类的问题就可能悄然而至。
本章将通过解决问题最根本的方面——设计,来探究多核软件的开发。
本章的目标有两个:
正确性
性能
将一个串行程序转变为并行程序并不一定能走得通。并行执行可能需要全新的算法。事实上,为了挖掘程序的潜能,GPU给程序结构带来了诸多限制,一般都需要全新的程序设计。