资讯
安全
论坛
下载
读书
程序开发
数据库
系统
网络
电子书
微信学院
站长学院
QQ
手机软件
考试
安全
|
web开发
|
软件开发
|
移动开发
|
数据库
|
网络
|
系统
|
网站
|
考试认证
|
其他
|
读书频道
>
网站
>
网页设计
>
Visual C++并行编程实战:多核架构下分工与协作的设计模式
1.2.1 理解任务
12-08-13
叶孤城
收藏
我要投稿
本文所属图书 >
Visual C++并行编程实战:多核架构下分工与协作的设计模式
这本书所介绍的并行模式库(Parallel Patterns Library,PPL)实际上是一个模式化的C++模版库,而且作为Visual Studio 2010开发系统的一部分,它已经完全被内置到了这一版本的C++语言中。这意味着你可以像使...
立即去当当网订购
所谓任务(task),实质上是指一系列相互协作、共同完成某个较大操作的串行化操作序列。当我们设计一个并行程序的结构时,为任务找到一个合适的划分粒度,以便它能有效地利用硬件资源是一个十分重要的步骤。如果分得太精细,任务的管理成本将会成为程序的主要开销;而如果分得太粗糙,就可能会导致处理器的一些内核因无法分配到工作而被闲置,令程序失去了一些并行化的机会。一般情况下,任务应该分得尽可能大,确保它们彼此独立,并且让所有的内核都保持有效负荷。除了任务粒度之外,任务调度的方式也是一项不得不考虑的因素。要符合以上所有的目标,我们就必须在设计上做出一定权衡,而只有当我们对应用程序的算法和结构有了充分的认知,才能在分解问题过程中将任务划分得恰到好处。
任务是串行化的工作单元,它们应该被分得尽可能大,在彼此独立的基础上,数量也要足以让所有内核保持有效负荷。
为了让这些设计原则显得更具体一些,我们来看一个射线追踪程序实例。在这个应用中,射线追踪器(ray tracer)负责跟踪一个场景中的每条光线轨迹,并将这些轨迹合成一张轨迹图。在这个问题中,如果我们使用单个模拟射线本身作为这个并行计算的单位任务,粒度上是恰到好处的。如果任务粒度再小一些,比如将单个模拟器再进行分解,就只会增加程序的开销。因为模拟器的数量已经足以让所有内核保持有效负荷。而如果各个任务的持续时间差距过大,我们就需要划分出更多的任务来填补它们之间的空隙。
记住,任务不等同于线程(thread),任务和线程在程序调度方面有着很大的不同。任务比线程拥有更多的潜在并行化概念。一个新的线程必然会增加应用程序的并发性,而一个新的任务只是增加了这种可能性,这种可能性只有当程序获得足够多的内核资源时才能实现。
此外,将目标任务划分成这些大而少的子任务还有另一个优点,即较大的任务通常彼此间具有更多的独立性,拥有需要共享的局部变量和域的可能性也更小。然而,遗憾的是,在一些依赖于不稳定的、大型的对象图结构(object graph)注2的应用程序中,情况或许正好相反,这些程序中往往会存在一些拥有许多公开的类、方法以及属性的大型对象模型。这种情况下,任务越大,遇到意外的数据共享或其他副作用的可能性就越高。
总而言之,你的最终目标是问题分解成各个独立的任务,确保它们之间没有数据共享,并且任务的数量足以让处理器的所有内核保持有效负荷。此外,当你考虑内核数量的时候,也应该把下一代硬件中可能拥有更多内核的因素考虑进去
点击复制链接 与好友分享!
回本站首页
分享到:
更多
您对本文章有什么意见或着疑问吗?请到
论坛讨论
您的关注和建议是我们前行的参考和动力
上一篇:
1.3 功能
下一篇:
1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
112 |
2.6 总结
112 |
2.5 unordered container无序容器
112 |
2.4 emplace_back减少内存拷贝和移动
112 |
2.3 forward和完美转发
112 |
2.2 move语义
112 |
2.1.2 右值引用优化性能,避免深拷贝
112 |
2.1.1 &&的特性
112 |
2.1 右值引用
3.2.3 Bootstrap栅格系统
3.4.4 自适应显示/隐藏页面内容
3.3.1 固定式布局
2.1.1 下载Bootstrap
3.3.2 流式布局
3.4.6 响应式Bootstrap
3.4.2 设计响应式图片
3.2.4 响应式Bootstrap栅格系统
文章
下载
读书
·
Win2000下关闭无用端口
·
禁止非法用户登录综合设置 [win9x篇]
·
关上可恶的后门——消除NetBIOS隐患
·
网络入侵检测系统
·
潜伏在Windows默认设置中的陷井
·
调制解调器的不安全
·
构建Windows 2000服务器的安全防护林
·
SQL Server 2000的安全配置
·
Windows优化大师注册机源码
·
Aspcode动画教程
·
WIN 2000服务器防止ICMP数据包攻击教程
·
实现网络隐身的简单方法
·
手工进行克隆帐号
·
用W32DASM破解网页合并器的密码
·
注册表操作动画教程
·
冰河陷阱v1.2
·
黑客攻防技术宝典:Web实战篇(第2版)
·
超级网管员——网络安全
·
代码大全(第二版)
·
软件之道:软件开发争议问题剖析
·
CSS插件工具箱
·
CSS入门经典(第3版)
·
C#并行编程高级教程:精通.NET 4 Pa
·
CMMI+敏捷整合开发
关于我们
|
联系我们
|
广告服务
|
投资合作
|
版权申明
|
在线帮助
|
网站地图
|
作品发布
|
Vip技术培训
版权所有:
红黑联盟
--致力于做最好的IT技术学习网站