主题:关于Openmp和Mpi的选取
feiyuno1987
[专家分:10] 发布于 2011-09-02 20:31:00
现在要做并行计算,只在一台双核电脑上进行,该选用哪一种编程模型呢?用openmp还是mpi?
回复列表 (共15个回复)
沙发
icrazy [专家分:30] 发布于 2011-09-02 20:44:00
openmp没用过,啥特点?
板凳
dongyuanxun [专家分:7180] 发布于 2011-09-02 21:33:00
理论上来说,线程开销小
所以在windows上单机运算,OpenMP比MPI效率高
而在Linux下是巨内核体系,线程就是进程而已,所以单机运算二者效率没啥区别。
另外,OpenMP主流编译器都支持,直接就可以用,MPI需要另外安装库。
3 楼
feiyuno1987 [专家分:10] 发布于 2011-09-02 21:43:00
能不能推荐一下编译器与其他相关开发的软件,我想我应该是用windows操作系统,fortran语言。
4 楼
icrazy [专家分:30] 发布于 2011-09-02 21:46:00
MPI基于消息传递,如果每个进程需要计算的量不是巨大的话,MPI效率不高,在单机上运行时发现用MPI做并行计算还不如IVF支持的并行选项效率高
5 楼
yeg001 [专家分:14390] 发布于 2011-09-03 09:20:00
openmp 在不太旧的编译器里面都自带, ivf, gfortran, pgi等等(cvf没有).
mpi 有不少不同组织的库. intel mpi, mpich1,2, openmpi(这个没用过,不知道是否只有linux版本)
6 楼
dongyuanxun [专家分:7180] 发布于 2011-09-03 10:06:00
[quote]MPI基于消息传递,如果每个进程需要计算的量不是巨大的话,MPI效率不高,在单机上运行时发现用MPI做并行计算还不如IVF支持的并行选项效率高[/quote]
据大量测试表明
intel的/Qparallel就是个废物
7 楼
dongyuanxun [专家分:7180] 发布于 2011-09-03 10:08:00
[quote]openmp 在不太旧的编译器里面都自带, ivf, gfortran, pgi等等(cvf没有).
mpi 有不少不同组织的库. intel mpi, mpich1,2, openmpi(这个没用过,不知道是否只有linux版本)[/quote]
openmpi从1.5之后可以用vc编译
以前的版本编译太费事了
8 楼
bshine1225 [专家分:720] 发布于 2011-09-03 14:21:00
我花了2个月时间研究OPENMP,结果发现并行效率没有明显的提升。
后来转到MPI下面,花了一个月时间把程序改成了MPI并行,我在服务器上用26进程的速度是单进程的21倍。
感觉虽然OPENMP很简单,加几条指令就可以了,但是对代码结构要求比较高,各线程对内存的调用方式对性能影响很大。
MPI对程序的改动比较大,但是由于各进程间除了通讯外互相没有影响,只要把通讯解决了效率的提升会很大。
9 楼
adda [专家分:1520] 发布于 2011-09-03 14:33:00
[quote][quote]MPI基于消息传递,如果每个进程需要计算的量不是巨大的话,MPI效率不高,在单机上运行时发现用MPI做并行计算还不如IVF支持的并行选项效率高[/quote]
据大量测试表明
intel的/Qparallel就是个废物[/quote]
同意
10 楼
feiyuno1987 [专家分:10] 发布于 2011-09-03 14:48:00
你测试的服务器是多少核的?26进程是26核的吗?
我来回复