搞并行计算,mpi和pvm哪个更好

搞并行计算,mpi和pvm哪个更好,第1张

基于消息传递的并行计算环境: MPI 与 PVM 的比较

邵子立 宋杰 (电子科技大学计算机系 成都610054)

对于MPI

(1)MPI通信方便,可以直接在进程组内进行矩阵的运算操作,十分有利于科学计算。

(2)MPI不提供容错的机制,仅能保证当一个错误发生后,整个应用全部失败。

对于PVM,

(1)PVM相对通信差一些。

(2)在大规模的科学计算中,计算环境提供容错能力是很重要的。例如在一个计算机群上运行一个需几周才能完成的算法,当其中某个计算机结点因某种原因而失败,若不提供相应的容错机制,用户将不能确定当前的应用程序已经停止或失败。在PVM下,当虚拟机中增删结点或任务失败时,已登记的任务将收到相应的消息,从而能够采取相应的策略,重新调度任务的分配或重新生成一个相应的任务。

后面这一点还蛮吸引人的,比如自己搭的网,也不是那种服务器,什么ECC的,当然断电也很可怕。

我想还是用MPI吧。快点算完了到完事了。真有机会,到超级计算机去,自会有人决定。自己搭网,钱少也只是一种玩吧。

OpenMP和MPI是并行编程的两个手段,对比如下:

OpenMP:线程级(并行粒度);共享存储;隐式(数据分配方式);可扩展性差。

MPI:进程级;分布式存储;显式;可扩展性好。OpenMP采用共享存储,意味着它只适应于SMP,DSM机器,不适合于集群。MPI虽适合于各种机器,但它的编程模型复杂。

需要分析及划分应用程序问题,并将问题映射到分布式进程集合。需要解决通信延迟大和负载不平衡两个主要问题。

延伸论述:

我认为,要理解OpenMP和MPI,首先要有一些操作系统知识和系统编程基础——OpenMP对应的实际上是单进程多线程的并发编程模型,可以将一个单线程的程序按for循环拆分成多线程——相当于pthread_create。

对于同一个进程的多个线程来说,由于它们只是独占自己的栈内存,堆内存是共享的,因此数据交换十分地容易,直接通过共享变量就可以进行交换,编程模型非常简单易用,并且对于操作系统来说,线程的上下文切换成本也比进程低很多。

然而另一方面,由于线程不能脱离进程独立存在,而一个进程不能存在于多台机器上,所以OpenMP只适用于拥有多个CPU核心的单台电脑。并且多线程编程存在临界区(Critical Section),需要你自己去加锁,解决Race Condition问题,否则的话很容易导致不可预知的后果。

而MPI则是多进程的并发编程模型,相当于你自己调用fork——每一个进程的内存地址空间都是独立的,它们彼此之间几乎什么都不共享,只能通过进程间通信(IPC)来交换彼此的数据,因此编程难度明显要大很多。

MPI有一个非常显著的优点,那就是对于一个分布式系统来说,进程是可以在分布式系统的每一台电脑之间转移的,因此对于拥有多台电脑的分布式系统来说,其并发性要明显好于OpenMP。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/761873.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-08-18
下一篇2023-08-18

发表评论

登录后才能评论

评论列表(0条)

    保存