并行语言产生的几种方式
1、设计全新的并行语言; 2、扩展原来的串行语言的语法成分,使它支持并行特征; 3、不改变串行语言,仅为串行语言提供可调用的并行库。 设计全新的并行语言 设计一种全新的并行语言的优点是可以完全摆脱串行语言的束缚,从语言成分上直接支持并行,这样就可以使并行程序的书写更方便,更自然,相应的并行程序也更容易在并行机上实现。 设计全新的并行语言,实现起来难度和工作量都很大,目前还没有一个统一的标准可以遵循。 扩充串行语言 一种重要的对串行语言的扩充方式就是标注,即将对串行语言的并行扩充作为原来串行语言的注释。 对于这样的并行程序,若用原来的串行编译器来编译,标注的并行扩充部分将不起作用,仍将该程序作为一般的串行程序处理,若使用扩充后的并行编译器来编译,则该并行编译器就会根据标注的要求,将原来串行执行的部分转化为并行执行。对串行语言的并行扩充,相对于设计全新的并行语言,显然难度有所降低,但需要重新开发编译器,使它能够支持扩充的并行部分。 提供并行库 仅仅提供并行库,是一种对原来的串行程序设计改动最小的并行化方法。 原来的串行编译器也能够使用,不需要任何修改,编程者只需要在原来的串行程序中加入对并行库的调用,就可以实现并行程序设计,本书所介绍的MPI并行程序设计,就属于这种方式。 对于这三种并行语言的实现方法,目前最常使用的是第二种和第三种方法,特别是第三种方法。 三者间的关系 下图给出了并行语言的实现方式和实现难度之间的关系。
这里从对并行语言的实现以及对原来串行语言改动多少两个方面,对并行语言进行了划分和讨论,对于任何一种并行语言,只要知道了它的相对于串行语言的改动方法和具体的实现方法,就可以知道它实现的难度和改语言的一些特点 。 |
|||