读书频道 > 网站 > 网页设计 > Visual C++并行编程实战:多核架构下分工与协作的设计模式
1.5 并行的局限
12-08-13    叶孤城
收藏    我要投稿   
这本书所介绍的并行模式库(Parallel Patterns Library,PPL)实际上是一个模式化的C++模版库,而且作为Visual Studio 2010开发系统的一部分,它已经完全被内置到了这一版本的C++语言中。这意味着你可以像使...立即去当当网订购
根据阿姆达尔定律(Amdahl誷law)注4得出的结论,并行化所能带来的性能改善受到了应用程序中串行化处理所占分量的限制。是的,这乍看之下几乎有点儿违反直觉。 
但你并没有看错。根据阿姆达尔定律的说法,无论我们有多少内核可用,程序所能得到的最大速度增长率也只能符合(1/串行化处理所消耗的时间)函数关系。图1-1对此做了说明。 


图1-1   当一个应用程序中的串行化处理占25%时的阿姆达定律 
例如,当内核达到11个时,应用程序的运行速度只比完全串行化运行提高了三倍略多一些。 
即使在更少量内核的情况下,运行速率也不是线性增长的,图1-2对此做了说明。 




图1-2   一个拥有25%串行性的程序性能增长与内核数量增长之间的关系 
如图1-2所示,随着内核数量(及整个应用程序的速度)的增加,应用程序的串行化部分所耗费时间所占的比例也会随即增加(注意,串行化处理时间本身的值并没有受到影响)。这几乎也说明了一个问题,或许我们应该对该程序能在四核计算机上得到两倍的速率增长感到满足。更重要的问题是,如何才能让应用程序维持这样的可扩展性,这取决于具体工作本身所拥有的天然串行性(inherently sequential)时间。 
阿姆达尔定律给予我们的另一个提示是:或许应用程序中确实有可能会发现一些符合并行计算的特性,以至于我们想利用它为程序添加一些额外的功能。例如,电脑游戏开发员可能会发现,如果新型多核平台的并行硬件的支持,就可以画出更为精美复杂的图像,即使游戏的逻辑(人工智能引擎)并不适用于并行化执行。但是,对程序整体性能来说,最终发挥影响的可能还是应用程序中各功能模块的具体组合方式。 
而就具体的实践来说,我们所能得到的速度增长率通常会比阿姆达尔定律所预计的情况还要糟糕一些。因为随着处理器内核数的增加。访问共享内存的成本也会跟着增加。同时,并行算法中包含的协调性成本,也不是相应串行方案中所必需的。对此,你可以求助于Visual Studio中的并发可视化工具,借助其中的分析工具来了解自己所采用的并行化方案的最终效率。 
总而言之,因为应用程序是由并行化部分和一些必要的串行化部分共同组成的,所以,程序整体性能的增长率不太可能会与处理器的内核数形成某种线性关系,尽管在某些局部,程序确实能获得近似的线性增长。正因为如此,我们在分析性能需求时就有一个不能忽略的步骤,即我们在程序中发掘适于并行执行的部分,必须建立在充分理解应用程序结构及其算法的基础之上
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

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