Fortran Coder

查看: 15000|回复: 5
打印 上一主题 下一主题

[并行] 关于MPI_SCATTER和MPI_GATHER的用法

[复制链接]

5

帖子

1

主题

0

精华

入门

F 币
46 元
贡献
20 点
跳转到指定楼层
楼主
发表于 2020-5-23 17:21:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我编的一个测试程序中有下面这三行代码(完整代码在附件里)n是数据的个数,f是我在module里编的一个函数,当n比较小的时候程序能跑通,但当n比较大的时候程序输出结果就是无穷大了。
我怀疑是这两个函数我用的有问题,也有可能是其他的问题,求大佬解答一下,这种奇怪的现象是怎么回事,万分感谢!

    call MPI_SCATTER(LU, n, MPI_REAL, LCU, n, MPI_REAL, root, MPI_COMM_WORLD, ierror)

    fu=f(LCU)

    call MPI_GATHER(fu, n, MPI_REAL, FLU, n, MPI_REAL, root, MPI_COMM_WORLD, ierror)



test.f90

3.21 KB, 下载次数: 3

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

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
沙发
发表于 2020-5-24 15:02:09 | 只看该作者
1、串行的时候,是否有同样的问题?2、 用单进程试试,调试一下。
3、n比较大是多大

5

帖子

1

主题

0

精华

入门

F 币
46 元
贡献
20 点
板凳
 楼主| 发表于 2020-5-24 15:34:50 | 只看该作者
li913 发表于 2020-5-24 15:02
1、串行的时候,是否有同样的问题?2、 用单进程试试,调试一下。
3、n比较大是多大
...

串行的时候没有问题,串行程序的结果符合预期。
单进程是指只用一个进程来运行并行程序吗?
我试了n等于99就不行,但当n等于5的时候程序就能正常运行

5

帖子

1

主题

0

精华

入门

F 币
46 元
贡献
20 点
地板
 楼主| 发表于 2020-5-24 16:03:58 | 只看该作者
li913 发表于 2020-5-24 15:02
1、串行的时候,是否有同样的问题?2、 用单进程试试,调试一下。
3、n比较大是多大
...

还有我发现这两个函数中间不能做运算,例如我把fu=f(LCU)改成fu=LCU,程序就能正常运行,但我把它改成fu=2*LCU,输出结果就很不正常

5

帖子

1

主题

0

精华

入门

F 币
46 元
贡献
20 点
5#
 楼主| 发表于 2020-5-25 11:17:37 | 只看该作者
有没有大佬帮我跑一下附件里的程序,我现在怀疑是我用的电脑有问题,求大佬帮忙验证一下,非常感谢

5

帖子

1

主题

0

精华

入门

F 币
46 元
贡献
20 点
6#
 楼主| 发表于 2020-5-25 14:09:55 | 只看该作者
问题已解决
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

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

GMT+8, 2024-12-26 19:47

Powered by Tencent X3.4

© 2013-2024 Tencent

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