首页 > 解决方案 > MPI 读取简单的数据框或 txt 文件

问题描述

我有这个数据框:

date,AA,BB,CC
2018-01-01 00:00:00,45.73,0.0,1
2018-01-01 01:00:00,44.16,0.0,2
2018-01-01 02:00:00,42.24,0.0,3
2018-01-01 03:00:00,39.29,0.0,5
2018-01-01 04:00:00,36.0,0.0,6
2018-01-01 05:00:00,41.99,0.0,7
2018-01-01 06:00:00,42.25,0.0,8

我想是否可以使用 MPI I/O 范例来阅读它。

特别是,我想根据处理器的数量来划分行。假设你有 4 个处理器。我希望每个处理器读取两行:处理器 0,第 1,2 行;处理器 1,第 3,4 行;等等。

我研究了一些材料。据我所知,我必须做一种偏移并将文件写在一行中。另一种可能性是使用与子网格相关的东西。

但是,正如您所注意到的,每一行都有不同类型的变量。

你们有人可以给胶水吗?到目前为止,我发现的有关 MPI I/O 的内容非常理论化,没有实际示例。

谢谢,迭戈

标签: inputmpimpi-io

解决方案


MPI-IO 非常适合二进制数据。它不太适合文本数据。

如果这是二进制数据,我希望有一个标题和一个索引。Rank 0 可以读取该标头和索引,向数据所在的每个人广播,然后可能会发生一些记录的算法分解(例如,每个 rank 读取 N 条记录)

对于这样的 ascii 文件,您是对的:您如何拆分文件?

这些文件有多大?如果它们有几兆字节(所以不是那么大),读取 rank 0 上的数据并从那里分发

另一种方法可能是生成索引——数据帧的一部分或单独的二进制索引。该索引会将记录映射到文件偏移量,现在您可以将读取工作拆分到所有进程中。


推荐阅读