一般来说。mimd并行系统主要分为两种,多计算机和多处理器,集群系统属于多计算机,片上多核属于多处理器(共享内存的)。而mpi是在多计算机间进行消息传递的编程接口(mpi,message passing interface)标准,其是通过消息传递来进行数据传输、同步等一系列并行操作的,而在本机上结合c或fortran运行,所以其更加适合在多台机器之间的并行计算,每台机器上开启一个进程,当然你也可以在一台多核机器上跑好几个mpi进程(比如4核跑4个),这样其也能通过编程抽象成多计算机编程,不过还是通过消息传递,所以效率相对比较低。多核(多处理器)最好的并行编程模型还是openMP,其是通过对内存中的共享变量进行操作来完成数据传输、同步等操作的,效率相对较高。
跑mpi程序最好在linux下,windows下限制较多(防火墙等,且效率低),linux下现在比较流行openmpi。
希望对你有所帮助。
MPI是Message Passing Interface的简称,它是一种并行计算的标准接口,而不是库或者程序语言。目前广泛使用的MPI实现包括MPICH,OpenMPI,MVAPICH,IntelMPI等。这些MPI接口实现都支持多核计算机,推荐使用Linux操作系统上运行和使用,效率更高。
单机内并行不需要用到mpich,只会用到其中的openmpi。openmpi的兼容性相对比较好,因此普通网络它即可以满足单机也可以满足垮节点并行,但是兼容性好的东西,一般特点不突出,所以垮节点并行很少使用到openmpi,很多商用软件其实自带HP和Intel MPI,后者编译相对更复杂些。.针对时下流行的Infiniband网络,并行环境的编译就需要考虑Intel MPI或者开源的mvapich了,两者的编译效率差别不大,只是前者要收费。
如果你的单个算例计算规模不大,我分析是需要改变参数同时测试多个算例的话,建议可以选择多核的塔式服务器,计算对CPU的占有率又不高的话,也可以打开超线程,这样可以同时多测试几个算例。个人意见,欢迎交流。