Fortran Coder

查看: 51|回复: 7

[并行] Fortran MPI并行中 mpi_in_place如何在规约函数MPI_REDUCE中使用?

[复制链接]

28

帖子

7

主题

0

精华

熟手

F 币
137 元
贡献
81 点
发表于 2020-3-23 20:10:06 | 显示全部楼层 |阅读模式
本帖最后由 kyra 于 2020-3-25 09:11 编辑

初步学些fortran mpi 并行编程,采用的工具为vs2010+ivf2011 已经构造好mpi环境,并且已经测试通过了 hello world
今天学习了规约函数MPI_REDUCE的使用
你解决的问题和编程思路:
变量homephi=1.0;
开辟4个进程 利用规约函数 MPI_REDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, ROOT, COMM,IERROR)结合mpi_in_place
计算  4个homephi 的和
理想结果应该为 4.0
程序如下
[Fortran] 纯文本查看 复制代码
program main
        include 'mpif.h'
        character * (MPI_MAX_PROCESSOR_NAME) processor_name
        integer myid, numprocs, namelen, rc,ierr
        real*8 homepi

        call MPI_INIT( ierr )
        call MPI_COMM_RANK( MPI_COMM_WORLD, myid, ierr )
        call MPI_COMM_SIZE( MPI_COMM_WORLD, numprocs, ierr )
        call MPI_GET_PROCESSOR_NAME(processor_name, namelen, ierr)

        homepi=1.0

        if(myid.NE.0)then
          call MPI_REDUCE(homepi, homepi,1, MPI_DOUBLE_PRECISION, 
     &                   MPI_SUM, 0, MPI_COMM_WORLD, ierr ) 
         else
         call MPI_REDUCE(MPI_IN_PLACE, homepi,1, MPI_DOUBLE_PRECISION, 
     &                   MPI_SUM, 0, MPI_COMM_WORLD, ierr )
         write(*,33) homepi
33      format(' sum  value of pi = ',f10.8) 
       endif

        call MPI_FINALIZE(rc)
        end

程序调试正常,结合cmd命令窗输入如下命令
mpiexec -n 4 mpitest_f77
计算的结果为
sum  value of pi =3.00000000

显然不对呀,理论结果应该是4呀!!!!!!!!!!!!!!!!!!!

请教高手指教,程序出错的原因,以及修改思路,先谢谢了!!




回复

使用道具 举报

477

帖子

1

主题

0

精华

大宗师

F 币
2416 元
贡献
1550 点
发表于 2020-3-24 11:47:30 | 显示全部楼层
我这里执行没问题。ivf2020+vs2019+intel mpi
QQ截图20200324114458.png

28

帖子

7

主题

0

精华

熟手

F 币
137 元
贡献
81 点
 楼主| 发表于 2020-3-24 15:46:53 | 显示全部楼层
感谢li913,
代码没问题,那问题出在哪里了呢?  
是我的mpi版本库不对吗?

477

帖子

1

主题

0

精华

大宗师

F 币
2416 元
贡献
1550 点
发表于 2020-3-24 15:50:00 | 显示全部楼层
不知道,你输出进程数和进程号看看。

28

帖子

7

主题

0

精华

熟手

F 币
137 元
贡献
81 点
 楼主| 发表于 2020-3-24 15:54:47 | 显示全部楼层
试过多次了,看到的结果应该是,进程为0的部分不对,数值都是0,而其他几个进程的结果都是正确的

28

帖子

7

主题

0

精华

熟手

F 币
137 元
贡献
81 点
 楼主| 发表于 2020-3-24 16:03:05 | 显示全部楼层
运行结果截图为

运行结果截图

运行结果截图

477

帖子

1

主题

0

精华

大宗师

F 币
2416 元
贡献
1550 点
发表于 2020-3-24 16:05:33 | 显示全部楼层
这个就不好说了。可能是库的问题。

28

帖子

7

主题

0

精华

熟手

F 币
137 元
贡献
81 点
 楼主| 发表于 2020-3-24 16:09:43 | 显示全部楼层
好的,谢谢了,我再自己试一试吧
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2020-4-4 22:18

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表