1

我是使用 Fortran 进行 MPI 编程的新手。我想绘制一个二维图。我试图让每个处理器计算一个图形点并将其发送到根以将其写入文件。有人可以告诉我如何发送两个变量,即:xf(x)with mpi_gather。谢谢你的帮助。

4

1 回答 1

0

就像 Hristo 所说的和“将未分配的数组传递给没有显式接口的例程有什么问题吗? ”这两个例子,你可以这样做

Program gather

  Use mpi

  Implicit None

  Integer, Dimension( :, : ), Allocatable :: result

  Integer, Dimension( 1:2 ) :: buffer

  Integer :: me, nprocs, error
  Integer :: x, fx

  Call mpi_init( error )

  Call mpi_comm_rank( mpi_comm_world, me    , error )
  Call mpi_comm_size( mpi_comm_world, nprocs, error )

  If( me == 0 ) Then
     Allocate( result( 1:2, 1:nprocs ) ) !Naughty - should check stat
  Else
     Allocate( result( 1:0, 1:0 ) )      !Naughty - should check stat
  End If

  x  = me
  fx = x * x

  buffer( 1 ) = x
  buffer( 2 ) = fx

  Call mpi_gather( buffer, 2, mpi_integer, &
                   result, 2, mpi_integer, &
                   0, mpi_comm_world, error )

  If( me == 0 ) Then
     Write( *, '( 99999( i3, 1x ) )' ) result( 1, : ) 
     Write( *, '( 99999( i3, 1x ) )' ) result( 2, : ) 
  End If

  Call mpi_finalize( error )

End Program gather
Wot now? mpif90 gather.f90
Wot now? mpirun -np 7 ./a.out
  0   1   2   3   4   5   6
  0   1   4   9  16  25  36
于 2012-12-04T10:51:56.637 回答