发布网友 发布时间:2022-04-29 02:35
共3个回答
热心网友 时间:2022-04-12 13:10
一般来说。mimd并行系统主要分为两种,多计算机和多处理器,集群系统属于多计算机,片上多核属于多处理器(共享内存的)。而mpi是在多计算机间进行消息传递的编程接口(mpi,message passing interface)标准,其是通过消息传递来进行数据传输、同步等一系列并行操作的,而在本机上结合c或fortran运行,所以其更加适合在多台机器之间的并行计算,每台机器上开启一个进程,当然你也可以在一台多核机器上跑好几个mpi进程(比如4核跑4个),这样其也能通过编程抽象成多计算机编程,不过还是通过消息传递,所以效率相对比较低。多核(多处理器)最好的并行编程模型还是openMP,其是通过对内存中的共享变量进行操作来完成数据传输、同步等操作的,效率相对较高。追答openmp是一个标准,现在已基本集成到各编译器中,不需要安装的了,例如visual studio、gcc、icc都支持了,其可以通过编译选项进行开启操作,gcc的好像是-fopenmp,vs里可以设置的。
另外openmp和openmpi不是一个东西,一个是标准,后一个是mpi的一个软件。
热心网友 时间:2022-04-12 14:28
MPI是Message Passing Interface的简称,它是一种并行计算的标准接口,而不是库或者程序语言。目前广泛使用的MPI实现包括MPICH,OpenMPI,MVAPICH,IntelMPI等。这些MPI接口实现都支持多核计算机,推荐使用Linux操作系统上运行和使用,效率更高。热心网友 时间:2022-04-12 16:03
单机内并行不需要用到mpich,只会用到其中的openmpi。openmpi的兼容性相对比较好,因此普通网络它即可以满足单机也可以满足垮节点并行,但是兼容性好的东西,一般特点不突出,所以垮节点并行很少使用到openmpi,很多商用软件其实自带HP和Intel MPI,后者编译相对更复杂些。.针对时下流行的Infiniband网络,并行环境的编译就需要考虑Intel MPI或者开源的mvapich了,两者的编译效率差别不大,只是前者要收费。