分布存储并行数值计算通信库界面设计熊玉庆中科院计算所摘要 指出了应用程序界面是分布存储并行数值计算通信库设计中的一个主要方面
分析了从进程抽象命名,基于源的消息选择和非堵塞点到点通信三个方面提高通信库的应用程序界面
关键词: 并行数值计算 通信库 应用程序界面分布存储并行计算系统是目前高性能计算机的主流
通信库是分布存储并行计算系统的关键部分之一
目前,较常见的通信库有 MPI[1],PVM[2]等
它们是面对一般应用的,通用的消息传递界面
对于面对某一特别领域的大型数值计算,这些库的界面较低,不适合大型数值程序的开发[3][4]
为快速方便地开发高性能,高可靠的大型数值软件,研制直接面对某一计算领域的通信库是十分必要和有价值的
这样,通信库界面设计就成为通信库设计的一个重要方面
这样的通信库界面应该是自然,简洁,方便,使程序编写更方便,编制的程序易于维护
本文从进程抽象命名,基于源的消息选择和非堵塞点到点通信三个方面讨论如何提高通信库的界面
并举例说明它们的实现方法
进程抽象命名在 MPI,PVM 等通信库中,一个进程组中的进程标记(在 MPI 中进程标记的英文为rank)是线性的
但在许多数值计算中线性的进程标记不能充分反映进程的逻辑通信模式
如在线性代数和油藏模拟计算中,二维的进程网格常常是方便的
而在有的 FFT 计算中蝶型的进程拓扑结构则更方便
由于进程的拓扑结构反映了进程的逻辑关系,因而,它对程序的编写及阅读带来极大方便
这里举例说明进程抽象命名的实现
一般地,设进程的拓扑结构为
假设所要设计的数值计算通信库是建立在 MPI 上
由于一个进程组中的通信总是在一定的通信上下文中进行,因此,必须将嵌入通信上下文中
在 MPI 中可实现如下:MPI_COMM_GROUP (comm, grp); /* 找出初始进程组,进程的拓扑结构为线性 */MPI_GROUP