【发布时间】:2016-03-27 15:54:04
【问题描述】:
我是新手,正在尝试编辑程序。我有一个 MPI 程序,将数组划分为子集,主机将子集发送给从机,它们进行快速排序,然后将排序后的数字返回给主机,以便他可以将它们写入文件中。 我想要做的是让快速排序发生得更快。我的想法是让主人划分数组并将子集发送给奴隶,但为自己保留一个。然后将它们再次划分为新的子集(例如,如果我们在数组中有从 1 到 100 的数字,则新子集应该是从 1 到 25、26 到 50、51 到 75 和 76 到 100),然后保留第一个子集( 1 到 25)为自己,将第二个(26 到 50)发送到第一个从站,将第三个(51 到 76)发送到第二个从站等。从站也应该这样做。然后它应该执行快速排序,并且从站应该将排序后的数字返回给主站。我希望这种方式应该更快。问题是,正如我所说,我是一个新手,我需要想法、建议甚至代码方面的帮助,这样我才能实现我的目标。
【问题讨论】:
-
您真的要解决排序太慢的实际问题吗?然后忘记这种方法并阅读parallel sorting algorithms,更好地思考/询问如何首先保持数据分布。或者这是一个练习,您打算学习如何使用 MPI?
-
这只是一个练习,所以我可以学习一些MPI。
-
知道如何使从属设备将范围内的子阵列再分一次吗?例如,如果代码中的数字是从 0 到 100,我需要将它们分成 4 组(1 个主 + 3 个从属),范围为:0-25/26-50/51-75/76-100。
标签: c