【发布时间】:2012-07-04 17:25:11
【问题描述】:
在编写并行程序时,我经常遇到制作具有唯一一组 2 值的东西的问题。换句话说,这是一个握手问题,每个人都必须与其他人握手。握手后,有一个晚餐等待所有参与者。
我知道有两种方法可以做到这一点:
给所有男人编号并让每个男人平行,他们将与人数较少的男人握手。在最后一个号码的人要求每个人握手之前,晚餐会变冷。
我们会告诉大家有多少参与者,并根据这个价值创造条件,所以每个人都会动摇。平行的手数相等。晚餐会很冷,因为参与者数学不好。 (在这种情况下,人们可以像其他人一样行事)
我们也可以用人来交换数字,用摇晃来比较、乘法等。问题是我们想在天冷之前吃掉晚餐,等待一个线程或制造很多条件会减慢这个过程。
还有其他更有效的方法吗?
【问题讨论】:
-
你为什么认为参与者数学不好?
-
每个人都必须通过计算偏移量来创建他的个人条件,这已经是一些开销。正如我所提到的,人们可以像其他人一样行事,但首先他们需要知道自己是谁,这也需要一些时间来确定。
-
您想将
MPI_ALLTOALL缩放问题重铸为晚餐握手? :) -
@HristoIliev 不得不用谷歌搜索这个..“将数据从所有进程发送到所有进程”并不是我试图做的,但我相信当你实际提到它时它使用相同的原理(配对并传达数据)。并不是说我不喜欢看新的库,但解释仍然是首选:) 值得注意的是,我将在 GPU 上使用 OpenCL 执行此操作可能也很有趣,例如线程生成不会很有帮助。
-
我们会在这次晚宴上讨论哲学吗?
标签: algorithm parallel-processing combinatorics