一,为大规模多核处理器设计应用程序
如果有成百个或上千个并发执行的线程或进程,如何设计或如何管理IPC则是一件非常令人生畏的事情。“应用程序设计” 本身就是一个非常宽泛的术语。对于不同类型和级别的开发人员这个术语有着不同的含义。其实软件和应用程序也有着各种各样的分类。下表是美国计算机协会(Association of Computing Machinery ACM)的 CCS(Computing Classification System)的一部分的摘录。
本章更为注重分析的方式,但所有的分析方式都有一定的适用场景和自己相应的不足,所以这章内容可以在开发过程中有所借鉴,完全照搬并不一定可取。
ACM分类号 | 软 件 | 多 用 户 | 单 用 户 |
H.4.1 | 办公自动化 | 群软件 项目管理 时间管理 |
字处理 电子表格 |
H.4.3 | 通信应用程序 | 远程会议 电视会议 计算机会议 |
电子邮件 信息浏览 |
D.2.2 | 软件开发 | 软件库 | 编辑器 |
D.2.3 | 编码工具和技术 | 软件代码维护 | 编译器 链接器 |
D.2.4 | 软件可靠性验证 | ||
I.3.3 | 图像生成 | 高级可视化 虚拟环境 |
数字化合扫描 图形包 |
I.3.4 | 图形实用工具 | 虚拟现实系统 | 动画 |
I.3.5 | 3D图形 | 3D渲染 |
软件分类可以帮助我们对于同一类的软件在设计阶段就可以考虑并行设计方式。并且使用相对成熟的模型来提高开发的效率和可靠性。
二,并行应用程序设计层 (Parallel Application Design Layer )PADL
PADL是一个并行软件的
分析模型。可以帮助组织软件的分解工作。共分5层,从顶向下逐步接近操作系统和编译原语的细节。
这本身是一种分析方式,不一定适用于所有的项目,但是一个不错的参考。
PADL的应用程序并行设计层
第五层是应用程序框架的选择,在开发过程中这是一个最关键的决定之一,其他的设计开发工作都将围绕框架展开。框架一旦决定,更改的代价将是非常昂贵的。
第四层确定了应用程序将要使用的并发模型。架构必须有足够的灵活性来使用所需要的并发模型。并发模型也需要有足够的灵活性来支持架构。
第三层开始确定应用程序的框架,模板类的层次,组件,谓词库和算法模板。
第二层表示应用程序到操作系统的接口。第三