io - Openmpi:未知非连续数据的并行 I/O
问题描述
根据官方文档,我们可以简单地使用集体 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 x n 的表。每次,我想从文件中读取一列并计算一些统计数据。我将决定是否需要将其存储在 RAM 上。在这种情况下,我可以过滤一些数据以节省 RAM。最初,我使用 c++ 通过每次读取一列来实现这一点。但我想通过使用多个进程来提高性能。
解决方案
推荐阅读
- excel - Excel VBA 用户表单列表框列格式
- php - 如何内爆数组元素以在文本区域中包含新行?
- zpl - ZPL II 可以用虚线还是虚线?
- hadoop - HIVE中的列删除而不更改代码?
- ios - 使用不同的模态样式呈现和关闭
- java - 读取属性文件时出现 Java Nullpointer 异常
- php - 将表单操作表单原始 php 页面发布到 laravel 控制器
- eclipse - .gitignore 中的 target/ vs /target/
- android - 错误的本机调用堆栈
- visual-studio-2019 - 如何制作 Visual Studio 2019 项目的副本?