回 帖 发 新 帖 刷新版面

主题:关于Openmp和Mpi的选取

现在要做并行计算,只在一台双核电脑上进行,该选用哪一种编程模型呢?用openmp还是mpi?

回复列表 (共15个回复)

沙发

openmp没用过,啥特点?

板凳

理论上来说,线程开销小

所以在windows上单机运算,OpenMP比MPI效率高

而在Linux下是巨内核体系,线程就是进程而已,所以单机运算二者效率没啥区别。

另外,OpenMP主流编译器都支持,直接就可以用,MPI需要另外安装库。

3 楼

能不能推荐一下编译器与其他相关开发的软件,我想我应该是用windows操作系统,fortran语言。

4 楼

MPI基于消息传递,如果每个进程需要计算的量不是巨大的话,MPI效率不高,在单机上运行时发现用MPI做并行计算还不如IVF支持的并行选项效率高

5 楼

openmp 在不太旧的编译器里面都自带, ivf, gfortran, pgi等等(cvf没有).
mpi    有不少不同组织的库. intel mpi, mpich1,2, openmpi(这个没用过,不知道是否只有linux版本)

6 楼

[quote]MPI基于消息传递,如果每个进程需要计算的量不是巨大的话,MPI效率不高,在单机上运行时发现用MPI做并行计算还不如IVF支持的并行选项效率高[/quote]
据大量测试表明
intel的/Qparallel就是个废物

7 楼

[quote]openmp 在不太旧的编译器里面都自带, ivf, gfortran, pgi等等(cvf没有).
mpi    有不少不同组织的库. intel mpi, mpich1,2, openmpi(这个没用过,不知道是否只有linux版本)[/quote]
openmpi从1.5之后可以用vc编译
以前的版本编译太费事了

8 楼

我花了2个月时间研究OPENMP,结果发现并行效率没有明显的提升。
后来转到MPI下面,花了一个月时间把程序改成了MPI并行,我在服务器上用26进程的速度是单进程的21倍。
感觉虽然OPENMP很简单,加几条指令就可以了,但是对代码结构要求比较高,各线程对内存的调用方式对性能影响很大。
MPI对程序的改动比较大,但是由于各进程间除了通讯外互相没有影响,只要把通讯解决了效率的提升会很大。

9 楼

[quote][quote]MPI基于消息传递,如果每个进程需要计算的量不是巨大的话,MPI效率不高,在单机上运行时发现用MPI做并行计算还不如IVF支持的并行选项效率高[/quote]
据大量测试表明
intel的/Qparallel就是个废物[/quote]

同意

10 楼

你测试的服务器是多少核的?26进程是26核的吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册