MPI_File_write_all,每个处理器具有不同的计数值

时间:2013-10-30 12:09:50

标签: c++ mpi mpi-io

这可能是一个愚蠢的问题,但是,

我希望N个处理器在同一个文件中使用不同的byte count写入所有不同的offset,以便连续生成数据。

我想使用MPI_File_write_all(file,data,count,type,status)(单个文件指针,集合,阻塞)函数。

第一个问题是每个处理器可以为count参数指定不同的值吗? 我找不到MPI 3.0参考中提到的任何内容。 (我的意图是不可能吗?)

到目前为止我发现的是以下两个问题:

  1. 当我想在MPI_File_write中写入大量MPI_BYTES整数(32位)count时......函数很少,当然会溢出!

  2. 我不(不能)/想要在MPI中使用派生数据类型,因为如上所述,所有处理器都写入不同的byte count,类型为MPI_BYTES

    < / LI>

    感谢您对此主题的任何帮助!

1 个答案:

答案 0 :(得分:2)

你在这里提出了几个问题

  • 当然,程序可以为集合MPI_File_write_all例程指定不同甚至零数量的数据。 count参数不仅不同,datatype参数也不必相同。

  • 问题#1:如果您想要写入超过int的MPI_BYTE数据,则必须创建一个新的datatpye。例如,假设您想要写入90亿字节。创建一个大小为10亿的重叠群类型,然后写出其中的9个。 (如果要写入的数据量不能被整除,则可能需要使用hindexed或struct类型。)

  • 问题#2:让每个MPI进程创建自己的数据类型或数据类型数都不是问题。