几种并行模型比较

广义上讲,并行可以分为几类,1. 共享内存并行(明确的线程,比如Pthreads和Java threads);2.共享内存并行(任务/数据的并行,比如OpenMP); 2. 分布式并行(明确的通信,比如MPI, SHMEM, 和Global Arrays); 3. 分布式并行(特殊的全局访问,比如Co-Array Fortran, UPC)。

十多年的承德网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整承德建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“承德网站设计”,“承德网站推广”以来,每个客户项目都认真落实执行。

具体说来,

Pthreads 是一个共享内存的编程模型,并行化通过并行调用函数来实现。一个并行函数体被多个线程同步的执行,这些线程都可以访问共享的全局数据。Pthreads是许多并行模型的底层实现。

Java是一个通用的编程语言,它通过线程的形式来支持并行化。并行Java程序运行在共享内存处理器上,它非常类似于Pthreads程序。Pthreads和Java仅仅在共享内存处理器上存在。

OpenMP也是共享内存模型,它的并行化是通过为循环和函数定义并行注释(parallel directives)来实现。OpenMP注释可以指出哪些循环部分可以并行执行,以及可以并行起来的函数。其它的一些注释用于指出针对某一进程的共享或私有的数据。编译器可以将OpenMP程序翻译成像Pthreads一样的程序,其中并行的循环体都会被翻译成并行函数的形式。OpenMP是一个工业标准的并行化库,被多种语言和平台所支持。OpenMP目前仅仅应用于共享内存处理器。

MPI是分布式内存模型,其线程需要明确的进行通信,这些通信基于MPI运行时库来发送和接受数据。MPI被广泛采纳,任何并行平台都能找到它。它的性能也已经被调优。尽管需要一定的编程才能实现,MPI由于其可移植性和性能表现,是目前最受欢迎的并行模式。

许多科学应用具有非常规则的内存访问模式,因此可以很容易的并行起来。三种典型的应用是,1. 不规则的表访问,涉及到许多并行数据库操作;2.不规则的动态访问,涉及到稀疏的数据结构,比如共轭梯度法求n阶稀疏矩阵的主特征值;3. 内存排序 in-memory sorting。

来源:

Evaluating the Imapct of Programming Language Features on the Performance of Parallel Applications on Cluster Architectures (by Konstantin Berlin, et al.)


文章名称:几种并行模型比较
链接分享:http://hbruida.cn/article/gsdoce.html