读书频道 > 网站 > 网页设计 > Visual C++并行编程实战:多核架构下分工与协作的设计模式
1.1 潜在并行化的重要意义
12-08-13    叶孤城
收藏    我要投稿   
这本书所介绍的并行模式库(Parallel Patterns Library,PPL)实际上是一个模式化的C++模版库,而且作为Visual Studio 2010开发系统的一部分,它已经完全被内置到了这一版本的C++语言中。这意味着你可以像使...立即去当当网订购
本书中提到的所有模式都旨在帮助我们发掘出程序中潜在的并行化。所谓的潜在并行性(potential parallelism),实质上是指,如果应用程序得到了并行硬件的支持,它就能运行得更快;即使硬件不支持并行化,它的性能也理应与其等价的串行程序相差无几。只要代码的架构设计正确,运行时环境就应该能根据计算机上具体的工作负载做出自动调整。当然,本书中的这些模式也只能对潜在并行化提供一般性的提示,毕竟谁也无法保证程序在任何情况下都能实现并行执行。但是,挖掘这种潜在并行化正是PPL编程模型的核心思想所在,值得我们为此进一步说明。 
这里说明了程序中的潜在并行化无论在多核还是单核的情况下,都可以让处理器中的所有内核保持有效负荷。 
在常见的并行应用程序中,有不少是为特定的硬件而编写的。以游戏控制平台为例,游戏程序员可能事先就对程序在运行时可用的硬件资源了如指掌,包括处理器内核数量和内存架构等细节。当然,对于硬件平台的全面掌握也是嵌入式应用程序开发的基本特征,例如工程进度控制(industrial process control)程序就是这样。不过,这也决定了这些程序的生命周期必须要和它们所依赖的硬件保持一致。注1 
相反,如果是在桌面工作站或者服务器这样的通用计算平台上编写程序,我们对硬件特性的估测能力就要打些折扣了。毕竟,我们不可能总能知道有多少内核可供使用,也不太可能预先知道会有什么其他软件将与程序共同运行。 
不要对应用程序的并行度进行硬编码(hard code),因为运行时可用的内核数量往往是无法预知的。 
即便应用程序最初的运行环境是确定的,随着时间推移,它也是会发生变化的。在过去,程序员总是假定自己的程序在下一代硬件中会运行得更快。你现在依然可以这样认为,因为处理器主频终究还是会越来越快的。不过,对于现在的多核处理器而言,主频增长的步伐已经开始慢了下来,取而代之的是处理器中的内核越来越多。如果想让我们的应用程序在多核世界中分享到硬件进步所带来的利益,就必须要对程序设计模型做出相应地调整,以便程序在今后能运行在多核计算机上。同时,我们还应该致力于发掘程序中潜在的并行计算能力,以便体现出某种“前瞻性”。 
处理器的发展趋势不再是主频速度越来越快,取而代之的是增加越来越多的内核。 
最后,我们还有必要为可能的意外情况做一些准备,毕竟,总会有些用户无法获得最新的硬件,这时候,我们需要确保并行程序在单核计算机上的性能至少和只用串行代码编写的程序相差无几,换句话说,就是要让应用程序在单核和多核之间保持性能的可扩展性,让其拥有更强的硬件适应能力,并保持前瞻性。而这正是发掘潜在并行化的目的所在。 
一个设计良好的并行程序在单核情况下的效率应该与相应的串行程序相差无几。 
例如,我们将在第2章中介绍并行循环模式就是一个发掘潜在并行化的典型示例。对于一个将要迭代100万次的for循环来说,如果能确定其中的每个迭代体都是彼此独立,我们就完全有理由将这些迭代分解为并行计算,把工作分配到各个闲置的处理器内核中。显然,具体的分配工作取决于可用内核的数量,多数情况下,该循环的速度将与内核数成正比
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站