这可能是一个愚蠢的问题,但是,
我希望N
个处理器在同一个文件中使用不同的byte count
写入所有不同的offset
,以便连续生成数据。
我想使用MPI_File_write_all(file,data,count,type,status)
(单个文件指针,集合,阻塞)函数。
第一个问题是每个处理器可以为count
参数指定不同的值吗?
我找不到MPI 3.0参考中提到的任何内容。 (我的意图是不可能吗?)
到目前为止我发现的是以下两个问题:
当我想在MPI_File_write中写入大量MPI_BYTES
整数(32位)count
时......函数很少,当然会溢出!
我不(不能)/想要在MPI中使用派生数据类型,因为如上所述,所有处理器都写入不同的byte count
,类型为MPI_BYTES
感谢您对此主题的任何帮助!
答案 0 :(得分:2)
你在这里提出了几个问题
当然,程序可以为集合MPI_File_write_all
例程指定不同甚至零数量的数据。 count
参数不仅不同,datatype
参数也不必相同。
问题#1:如果您想要写入超过int
的MPI_BYTE数据,则必须创建一个新的datatpye。例如,假设您想要写入90亿字节。创建一个大小为10亿的重叠群类型,然后写出其中的9个。 (如果要写入的数据量不能被整除,则可能需要使用hindexed或struct类型。)
问题#2:让每个MPI进程创建自己的数据类型或数据类型数都不是问题。