● 摘要
对于很多现存的MPI程序而言,将其向MPI/CUDA程序的转化并不容易。首先是由于GPU并行编程本身十分复杂。虽然随着CUDA的加入,GPU编程得到了一定程度的简化,但相较于普通的CPU程序而言其实现依旧十分困难。同时,已有的MPI代码一般规模较大,重新开发的代价过于昂贵。所以,我们必须研究一条有效可行的途径使得MPI程序能在CPU-GPU异构集群中得到再利用。本文在这种的情况下提出了一个MPI程序向MPI/CUDA程序变换的通用框架,同时设计了一门基于制导性语句的语言来半自动的实现这个过程。当然我们也针对我们设计的基于制导性语句的语言实现了一个源到源的编译器。这样,通过输入一个原始的MPI源程序,最终可以获得自动生成的MPI/CUDA代码。本文主要工作为:分析MPI程序的特点以及CUDA编程特性。同时,研究了MPI与CUDA的结合方式。从中总结规律,并提炼出一个通用的MPI程序向MPI/CUDA程序的转化框架。根据我们所涉及的框架,寻找一种可自动或者半自动实现这种转化的途径。通过各方面研究,我们决定设计一门基于制导性语句的语言来指导程序自动实现这个过程。实现我们设计基于制导性语句的语言的编译器。这个源到源的编译器可以通过在原始MPI程序中加入的制导性语句自动生成相应的MPI/CUDA程序。测试所设计系统的正确性和效率。