读书频道 > 网站 > 网页设计 > Visual C++并行编程实战:多核架构下分工与协作的设计模式
并行循环
12-08-13    叶孤城
收藏    我要投稿   
这本书所介绍的并行模式库(Parallel Patterns Library,PPL)实际上是一个模式化的C++模版库,而且作为Visual Studio 2010开发系统的一部分,它已经完全被内置到了这一版本的C++语言中。这意味着你可以像使...立即去当当网订购
并行循环模式一般适用于执行一些具有独立性的迭代操作,例如遍历某集合(collection)中的元素或者执行一些限定次数的迭代。但前提是这些操作是彼此独立的,即循环步骤中不存在对本地内存或磁盘文件的共同写操作。 
在语法方面,并行循环与我们所熟悉的for和for_each并无多大的区别,只不过它们在多核环境中往往会完成得更快而已。此外,另一个不同于串行循环的是,并行循环的执行顺序是不确定的,这意味着在并行条件下各步骤的操作通常会同步进行,有时候,甚至两个步骤的操作顺序会与它们在串行循环中的情况完全相反。这里唯一能保证的是:当循环完成时其中所有的步骤都会被执行到。 
我们可以轻而易举地将一个串行循环(sequential loop)改为并行循环(parallel loop)。但是,你可千万不能就此认为简单就不会出错。毕竟,判断循环步骤之间是否具有独立性是一件非常困难的事。这需要在具体的实践中不断地学习并总结经验。有时候,如果我们不幸在一个具有某种依赖关系的循环中误用了并行循环模式,很可能就会导致某些不可预测的行为,程序有可能会就此停止响应,有时甚至还会出现那种运行100万次才出现一次的诡异bug。总而言之,“独立性”是我们能否使用并行循环模式的关键,而这也是本章接下来要介绍的重点内容。 
并行循环模式一般用于处理基于多组数据的独立性操作。同时,这也是数据并行化(data parallelism)技术的一个标准应用。 
对于并行循环来说,决定它并行度的通常不是代码,而是运行时环境(run-time environment)。也就是说,它取决于运行时环境能同时调用多少内核来完成这些循环步骤。然而,无论我们有多少内核可用,循环都应该能够始终正确地运行。即使在单核处理器上,只要该循环的每次迭代操作所执行的工作量不是太小,它的性能就理应与相应的串行代码相差无几(也许只相差几个百分点);一旦有了多核处理器,性能就会立即得到改善。毕竟在多数情况下,性能与内核数之间还是会存在着一定的比例关系的
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

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