【问题标题】:analyze text file in parallel with mpi4py与 mpi4py 并行分析文本文件
【发布时间】:2015-07-21 22:07:22
【问题描述】:

我有一个输入制表符分隔的文本文件:

0   .4
1   .9
2   .2
3   .12
4   .55
5   .98

我用普通的 Python 将其分析为:

lines = open("songs.tsv").readlines()

def extract_hotness(line):
        return float(line.split()[1])

songs_hotness =map(extract_hotness, lines)
max_hotness = max(songs_hotness)

如何使用mpi4py 并行执行相同的操作? 我开始使用scatter 实现它,但这不会立即起作用,因为scatter 需要列表元素的长度与节点数相同。

【问题讨论】:

    标签: python mpi4py


    【解决方案1】:

    并行处理文本文件很困难。你在哪里分割文件?你甚至从并行文件系统中读取吗?如果您有足够大的输入文件,您可能会考虑使用 MPI-IO。如果你走这条路,这些在 C 上下文中提供的答案描述了 mpi4py 中仍然存在的挑战:https://stackoverflow.com/a/31726730/1024740https://stackoverflow.com/a/12942718/1024740

    另一种方法不是分散数据,而是在 rank 0 上将其全部读取并广播给其他所有人。这种方法需要足够的内存来一次性暂存所有输入数据,或者是一次只读取部分数据的主从方案。

    【讨论】:

    • 谢谢,我需要这个只是一个例子,所以我们可以假设文件很小,我不想广播它而是分散它,文件的任何拆分都可以,我只是这样做不希望在不同的节点中有重复的行。
    猜你喜欢
    • 2016-02-03
    • 2022-06-24
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2017-03-10
    • 2013-02-28
    相关资源
    最近更新 更多