在 C 中用 MPI IO 写字符串

Write string with MPI IO in C

我想知道如何使用 MPI IO 将 ASCII 字符串写入文件。据我了解,使用 MPI IO 写入文件的数据是作为字节数据写出的,因此我想找到一种写入文件的方法,允许我将其解释为 CSV。例如,我有一个名为 myString 的字符串,其中包含“1,1,1,1,['a','b','c']\n”。我会将该字符串作为字符数组 (char* myString) 写入,然后使用 MPI_File_write(file, myString, rank * BUFSIZE * sizeof(char), MPI_CHAR, MPI_STATUS_IGNORE)或者这会不会输出正确的格式?

它似乎如你所愿 - 我写了一个额外的字符来确保我得到空终止:

#include <stdio.h>
#include <string.h>
#include <mpi.h>

int main(void)
{
  int rank;
  MPI_Status status;
  MPI_File fh;

  char *x = "1111abc\n";

  MPI_Init(NULL, NULL);

  MPI_Comm_rank(MPI_COMM_WORLD, &rank);

  MPI_File_open(MPI_COMM_WORLD, "mpiio.dat", MPI_MODE_CREATE | MPI_MODE_WRONLY,
                MPI_INFO_NULL, &fh);

  if (rank == 0) MPI_File_write(fh, x, strlen(x)+1, MPI_CHAR, &status);
  
  MPI_File_close(&fh);

  return 0;
}

如果我在笔记本电脑上编译并运行:

me@laptop$ mpicc -o cstring cstring.c
me@laptop$ mpirun -n 2 ./cstring
me@laptop$ cat mpiio.dat 
1111abc