小编mer*_*ruz的帖子

用MPI IO写几个分布式数组

我正在重写一个使用MPI在一个方向上并行化的数值模拟代码.到目前为止,包含数据的数组由主MPI进程保存,这意味着将数据从所有MPI进程传输到一个并分配大型数组来存储整个数据.它不是非常有效也不是优雅,并且是大分辨率的问题.

因此,我尝试使用MPI-IO直接从分布式阵列中写入文件.我的一个约束是写入文件需要遵守fortran"未格式化"格式(即每个字段之前和之后的4个字节整数,表示其大小).

我写了一个简单的测试程序,当我只将一个分布式数组写入文件时,它就可以工作.但是,当我写几个数组时,文件的总大小是错误的,当与同等的fortran'unformatted'文件进行比较时,文件是不同的.

以下是示例代码:

module arrays_dim
   implicit none
   INTEGER,        PARAMETER :: dp   = kind(0.d0) 
   integer,        parameter :: imax = 500 
   integer,        parameter :: jmax = 50 
   integer,        parameter :: kmax = 10 
end module arrays_dim
module mpi_vars
   use mpi 
   implicit none
   integer, save          :: ierr, myID, numprocs
   integer, save          :: i_start, i_end, i_mean, i_loc
   integer, save          :: subArray, fileH
   integer(MPI_OFFSET_KIND), save   :: offset, currPos
end module mpi_vars

program test
   use mpi 
   use arrays_dim
   use mpi_vars
   real(dp), dimension(0:imax,0:jmax+1,0:kmax+1) :: v, w …
Run Code Online (Sandbox Code Playgroud)

fortran mpi fortran90 mpi-io

5
推荐指数
1
解决办法
426
查看次数

标签 统计

fortran ×1

fortran90 ×1

mpi ×1

mpi-io ×1