Fortran Coder

标题: 关于MPI_SCATTER和MPI_GATHER的用法 [打印本页]

作者: 九九孩子吧    时间: 2020-5-23 17:21
标题: 关于MPI_SCATTER和MPI_GATHER的用法
我编的一个测试程序中有下面这三行代码(完整代码在附件里)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


作者: li913    时间: 2020-5-24 15:02
1、串行的时候,是否有同样的问题?2、 用单进程试试,调试一下。
3、n比较大是多大

作者: 九九孩子吧    时间: 2020-5-24 15:34
li913 发表于 2020-5-24 15:02
1、串行的时候,是否有同样的问题?2、 用单进程试试,调试一下。
3、n比较大是多大
...

串行的时候没有问题,串行程序的结果符合预期。
单进程是指只用一个进程来运行并行程序吗?
我试了n等于99就不行,但当n等于5的时候程序就能正常运行
作者: 九九孩子吧    时间: 2020-5-24 16:03
li913 发表于 2020-5-24 15:02
1、串行的时候,是否有同样的问题?2、 用单进程试试,调试一下。
3、n比较大是多大
...

还有我发现这两个函数中间不能做运算,例如我把fu=f(LCU)改成fu=LCU,程序就能正常运行,但我把它改成fu=2*LCU,输出结果就很不正常
作者: 九九孩子吧    时间: 2020-5-25 11:17
有没有大佬帮我跑一下附件里的程序,我现在怀疑是我用的电脑有问题,求大佬帮忙验证一下,非常感谢
作者: 九九孩子吧    时间: 2020-5-25 14:09
问题已解决




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2