【并行算法】并行算法的设计技术和并行程序开发

并行算法的设计技术

目前普遍使用的并行算法的设计技术:
1).流水线技术
将任务分割成许多子任务,每个处理器完成其中一个,且第一个处理器完成第一个子任务后,第二个处理器可以开始完成第二个子任务…
2).分治策略
将原问题分成若干个特征相同的子问题,分别处理。(类似超线程技术)
常见的分治策略:任务分割;数据分割
3).平衡树方法
将输入元素作为叶子节点构造二叉平衡树。
4).倍增技术(指针跳跃技术)
适合处理链表、有向图等数据结构;经常应用于通信系统中。
5).加速级联策略
将最优算法(计算速度慢)和最快算法(不是最优)级联起来。

并行程序开发

一个软件开发环境主要由硬件平台、操作系统、支撑语言、软件开发工具、应用软件包等组成。并行程序开发主要在于并行程序的设计、调试、维护和监控。

一、并行程序开发环境

现在研究重点是扩充现有的编译系统的并行语言功能,主要为:
数据级并行(利用Fortran等开发);
任务级并行(利用MPI、Linda等开发)

二、并行语言和消息传递环境

现在大多并行开发语言为Fortran、Pascal和C语言。并行环境常用的有PVM(Parallel Virtual Machine并行虚拟机)、MPI(Message Passing Interface 消息传递接口)和Express

三、并行程序设计

并行程序的设计有多种方式,主要分为:
共享变量方法;消息传递方法;数据并行程序设计;面向对象的并行程序设计;函数程序设计方法;逻辑程序设计方法。
选择并实现一种并行编程方法前,需要重点考虑:成熟性、易编程性、灵活性、效率、可移植性和成本。
成熟性:主要指编译器和消息传递器的成熟性,有时也考虑开发工具的支持水平和完善程度。
易编程性:编程方法容易实现并容易产生维护代码。
效率:保持编译器和运行系统操作所有的进程通信和同步。

四、并行编程技术遇到的挑战

1.确定性:并行应用普遍会产生不可预知的结果,这类问题往往很难发现并有效修复。这就需要为并行编程提供一个可靠的、可预知的环境。
2.问题划分:不同的处理机有时需要运行不同的程序,如何对个各个处理机进行任务划分。
3.负载平衡:任务的分配可以是静态的,也可以是动态的,如何保证各个计算节点具有相当的工作量。
4.数据的分配和收集:编程时必须考虑数据的分配(初始数据和计算环节中的过程数据)以及回收(计算结果的返回)。
5.性能调整:未达到希望的效率是,必须对程序进行调整。
6.执行环境:一般情况下,并行程序要适应多种并行计算环境。
7.开销:并行程序需要哪些额外开销,如通信开销和程序管理开销等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章