Fortran Coder

查看: 11150|回复: 7
打印 上一主题 下一主题

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

[复制链接]

32

帖子

9

主题

0

精华

专家

F 币
391 元
贡献
212 点
跳转到指定楼层
楼主
发表于 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呀!!!!!!!!!!!!!!!!!!!

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




分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
沙发
发表于 2020-3-24 11:47:30 | 只看该作者
我这里执行没问题。ivf2020+vs2019+intel mpi

QQ截图20200324114458.png (10.22 KB, 下载次数: 350)

QQ截图20200324114458.png

32

帖子

9

主题

0

精华

专家

F 币
391 元
贡献
212 点
板凳
 楼主| 发表于 2020-3-24 15:46:53 | 只看该作者
感谢li913,
代码没问题,那问题出在哪里了呢?  
是我的mpi版本库不对吗?

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
地板
发表于 2020-3-24 15:50:00 | 只看该作者
不知道,你输出进程数和进程号看看。

32

帖子

9

主题

0

精华

专家

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

32

帖子

9

主题

0

精华

专家

F 币
391 元
贡献
212 点
6#
 楼主| 发表于 2020-3-24 16:03:05 | 只看该作者
运行结果截图为

捕获.JPG (47.55 KB, 下载次数: 360)

运行结果截图

运行结果截图

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
7#
发表于 2020-3-24 16:05:33 | 只看该作者
这个就不好说了。可能是库的问题。

32

帖子

9

主题

0

精华

专家

F 币
391 元
贡献
212 点
8#
 楼主| 发表于 2020-3-24 16:09:43 | 只看该作者
好的,谢谢了,我再自己试一试吧
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-26 09:03

Powered by Tencent X3.4

© 2013-2024 Tencent

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