论文部分内容阅读
本文以Chirp Scaling算法为例,从串行算法入手构造并行Chirp Scaling算法,研究了并行算法的粒度问题,以及针对SGI系统的分布式共享内存结构,讨论了用不同的编程模型实现高效、稳定的并行算法。
文中讨论了用消息传递模型(MPI)和共享存储模型(OpenMP)两种并行编程模型实现阶段并行Chirp Scaling算法的方法,并比较了这两种实现方法各自的优缺点。
针对上述两种实现方案的不足之处,提出了基于进程的共享变量ForkPara并行模型,并开发出了相应的并行库。其基本方法是:使用共享内存作为进程间通信的方式,消除了通信开销;在进程级上来构造并行,利用操作系统的调度来保证负载的均衡。我们详细讨论了ForkPara中并行构造、进程分组、负载分配和同步这些问题,并给出了共享内存创建、进程组创建和同步机制实现的方法。
最后给出了用OpenMP和ForkPara实现的并行FFT算法在SGI 系统上试验结果。分析结果认为,使用OpenMP实现的并行程序效率较高,可以在系统负载较低的时候使用,在负载较大时,ForkPara是一种高效、稳定的并行方案。