这可能是个愚蠢的问题,但是,
我希望 N
处理器用不同的 offset
在同一个文件中写入所有不同的 byte count
以使数据连续。
我想使用 MPI_File_write_all(file,data,count,type,status)
(单个文件指针,集体,阻塞)函数。
第一个问题每个处理器可以为count
参数指定不同的值吗?
我找不到 MPI 3.0 引用中提到的任何内容。 (我的本意是不可能?)
目前我发现的是以下两个问题:
当我想写入大量
MPI_BYTES
时,MPI_File_write... 函数中的整数(32 位)count
太小了,溢出了当然!我不(不能)/想要在 MPI 中使用派生数据类型,因为如上所述所有处理器写入不同的
字节数
并且类型是MPI_BYTES
感谢您对此主题的任何帮助!
最佳答案
你在这里总结了几个问题
当然,进程可以为集体
MPI_File_write_all
例程指定不同甚至零数量的数据。不仅count
参数可以不同,datatype
参数也没有理由需要相同。问题 #1:如果您想写入超过
int
的 MPI_BYTE 数据,则必须创建一个新的数据类型。例如,假设您想写入 90 亿字节。创建一个大小为 10 亿的重叠群类型,然后写入其中的 9 个。 (如果你要写入的数据量不能整除,你可能需要后缀或结构类型)。问题 #2:让每个 MPI 进程创建自己的数据类型或数据类型计数根本不是问题。
关于c++ - 每个处理器具有不同计数值的 MPI_File_write_all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19681860/