并行编程语言环境
并行编程语言环境分为共享存储编程环境和分布式编程环境两种。共享存储并行编程系统采用共享变量模型,驻留在各个处理器上的进程通过读写公共存储器中的共享变量实现相互通信。分布存储系统与共享存储系统不同,从并行程序设计的角度来看有以下两个特点:
(1)系统通过互联网络将每个处理器连接起来,每个处理器均有自己独立的局部存储器,所有的局部存储器构成了整个地址空间。
(2)整个地址空间有局部和全局两种编址方式,前者是系统中各局部存储器单独编址,所以用户程序空间是多地址的,远程存储器访问要通过调用消息传递库来实现;后者是系统中所有局部存储器统一编址,所以用户程序空间是一个统一单地址空间,远程存储器访问和局部存储器的访问一样用指令来完成,其指令地址由处理器地址和局部存储器地址组成。2
并行语言OpenMPOpenMP是由OpenMP Architecture Review Board牵头提出的,并已被广泛接受的,用于共享内存并行系统的多线程程序设计的一套指导性的编译处理方案(Compiler Directive)。
OpenMP支持的编程语言包括C语言、C++和Fortran;而支持OpenMP的编译器包括SunCompiler,GNU Compiler和Intel Compiler等。OpenMP对于并行描述的高层抽象降低了并行编程的难度和复杂度,这样程序员可以把更多的精力投入到并行算法本身,而非其具体实现细节。对基于数据分集的多线程程序设计,OpenMP是一个很好的选择。同时,使用OpenMP也提供了更强的灵活性,可以较容易的适应不同的并行系统配置。线程粒度和负载平衡等是传统多线程程序设计中的难题,但在OpenMP中,OpenMP库从程序员手中接管了这两方面的部分工作。
MPIMPI是一种消息传递模型。1994年5月1.0版的MPI标准诞生。该标准提出了一种基于消息传递的函数接口描述。目前,MPI已发展到2.0版,成为高性能计算的一种公认标准。MPI本身并不是一个具体的实现,而只是一种标准描述。MPI最为著名且被广泛使用的一个具体实现是由美国Argoone国家实验室(argonne national laboratory)开发小组完成的MPICH,MPICH是一个免费软件,它提供对Fotran和C语言等的绑定支持,以函数库的形式提供给开发者使用。MPI理论上可以工作在任何多处理器的并行环境下,并且具有较好的可移植性。MPI已在IBM PC机上、MS Windows上、所有主要的Unix工作站上和所有主流的并行机上得到实现。使用MPI作消息传递的C或Fortran并行程序可不加改变地运行在IBM PC、MS Windows、Unix工作站、以及各种并行机上。3