【问题标题】:MPI sort implementationMPI 排序实现
【发布时间】:2012-08-12 00:20:24
【问题描述】:

我需要对一个非常大的文件进行排序,数百 Gb。幸运的是,我可以访问 Linux MPI 集群。有人知道一个好的但最重要的工作排序程序,它可以使用 MPI 在分布式环境中运行。 实际上,我想计算该文件中的唯一行,因此如果有人知道一个程序可以做得更好。否则我以后可以自己想办法。

【问题讨论】:

  • 一共有多少行?你能通过用短哈希替换行来显着减小文件的大小吗?
  • 更准确地说,文件大小为 21Gb。我担心的是,即使我最终决定自己编写诸如合并排序之类的代码,我也将不得不担心 RAM 的可用性,这会使整个程序变得更加复杂。
  • 可能效率较低,但方法很简单:对于P 节点,选择一个函数f,为每一行分配一个从0到P-1的数字,以便这些行或多或少均匀分布.让每个节点K 计算行的出现次数,其中f(line) = K:计算唯一行而不进行排序。复杂度:N * N / (P * P)。
  • 但这不只是让问题变小了一点,但并没有解决它。如果每个节点 K 计算分配给它的分区中的行数不准确,则仍然需要合并这些计数(这也涉及计数)。
  • 其实我觉得我现在走在了正确的轨道上。我找到了这个网站sortbenchmark.org 并且能够下载 2004 年的获胜者(nsort)。与默认的 linux 排序相比,它的速度非常快,并且在我的文件上完成大约 10 分钟。我现在正试图找出其他获奖者是否提供了他们软件的非商业版本,因为我认为如果我能找到可以使用多个集群机器的应用程序,时间可能会更进一步

标签: sorting mpi


【解决方案1】:

因为没有提供任何答案,但我只想分享我的结果。

我从ordinal.com 下载了nsort 程序(2004 年sortbenchmark.org 年度排序算法竞赛获胜者)。尽管不是以集群方式排序,但它的排序速度非常快。我不记得它是什么了,但我使用nsort 获得了巨大的时间改进。我说的是比默认的 linux 排序快几十倍(可能大约 50 倍)。

还有两点需要注意。

  • 它仅限于非商业分发中的文本文件排序。
  • 它具有与 linux 排序实用程序完全相同的界面。

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 2014-10-24
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多