Openmpi:并行I / O,用于未知非连续数据

时间:2020-10-19 13:50:02

标签: io mpi

根据官方文档,我们仅使用集体I / O来提高性能。例如,与下面的程序一样,我可以使用n个进程读取具有不同偏移量的同一文件。

MPI_File fh;
MPI_Status status;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);

bufsize = FILESIZE/nprocs;
buf = (int*) malloc(bufsize);
nints = bufsize / sizeof(int);

MPI_FILE_open(MPI_COMM_WORLD, "data.txt", MPI_MODE_RDONLY, MPI_INFO_NULL, &fh);
MPI_FILE_seek(fh, rank*bufsize, MPI_SEEK_SET);
MPI_FILE_read(fh, buf, nints, MPI_INT, &status);
MPI_FILE_close(&fh);

但是,我的问题是如何处理未知的非连续性。例如,我有一个m乘n的表。对于每次,我想从文件中读取一列并计算一些统计信息。我将决定是否需要将其存储在RAM中。在这种情况下,我可以过滤一些数据以节省RAM。最初,我使用c ++通过每次读取一列来实现这一点。但是我想通过使用多个过程来提高性能。

0 个答案:

没有答案
相关问题