九九孩子吧 发表于 2020-5-23 17:21:42

关于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)



li913 发表于 2020-5-24 15:02:09

1、串行的时候,是否有同样的问题?2、 用单进程试试,调试一下。
3、n比较大是多大

九九孩子吧 发表于 2020-5-24 15:34:50

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

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

九九孩子吧 发表于 2020-5-24 16:03:58

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

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

九九孩子吧 发表于 2020-5-25 11:17:37

有没有大佬帮我跑一下附件里的程序,我现在怀疑是我用的电脑有问题,求大佬帮忙验证一下,非常感谢

九九孩子吧 发表于 2020-5-25 14:09:55

问题已解决
页: [1]
查看完整版本: 关于MPI_SCATTER和MPI_GATHER的用法