input - 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 的内容非常理论化,没有实际示例。
谢谢,迭戈
解决方案
MPI-IO 非常适合二进制数据。它不太适合文本数据。
如果这是二进制数据,我希望有一个标题和一个索引。Rank 0 可以读取该标头和索引,向数据所在的每个人广播,然后可能会发生一些记录的算法分解(例如,每个 rank 读取 N 条记录)
对于这样的 ascii 文件,您是对的:您如何拆分文件?
这些文件有多大?如果它们有几兆字节(所以不是那么大),读取 rank 0 上的数据并从那里分发
另一种方法可能是生成索引——数据帧的一部分或单独的二进制索引。该索引会将记录映射到文件偏移量,现在您可以将读取工作拆分到所有进程中。
推荐阅读
- powershell - 使用 PowerShell 查询 GraphQL
- python-3.x - 将新创建的文件夹的名称放在 csv 文件的路径中
- python - Python 3 - 如何在 Python 中处理和读取表情符号和 unicode?一个测试
- nginx - 将所有案例重定向到 https 和非 www 时,Nginx 重定向不起作用
- node.js - 什么时候使用集群或 worker_threads 更好?
- swift - 在两个函数之间传递变量
- r - 从数据框中删除一列中具有无限值的行,而不是其他列
- django - 错误:与 redux 一起使用时挂钩调用无效
- flutter - 过滤并从'地图中获取新地图
飞镖中的 myMap' - autohotkey - 如何在我用 AHK 编写的脚本中找到问题