gpt4 book ai didi

c - 测量算法计算时间(使用MPI,并行计算)

转载 作者:太空宇宙 更新时间:2023-11-04 04:56:47 25 4
gpt4 key购买 nike

http://pastebin.com/Xb6GLv8Y

我的代码执行以下操作:

它将在集群中并行执行。 master rank 会生成一个包含很多元素(最大 1.6M 元素)的降序数组,会将这个数组分成更小的数组,并将这些部分中的每一个发送到集群中的每台计算机。集群中的每台计算机都将在其数组的一部分中执行快速排序算法,并将该(升序排列的)数组发送回主级别。然后,主等级将使用修改后的冒泡排序算法对从子等级接收到的每个部分进行排序,并构建新的有序数组。 (目的是在并行计算中执行快速排序算法)。

一切正常,唯一的问题是我需要测量算法的计算时间。这是一项大学工作,所以 PDF 说“只计算排序算法的时间”。所以我觉得不考虑网络等之间的array传输。

我在代码中所做的是测量每个子等级的快速排序耗用时间。最大的时间将是计算时间。我对吗?但有一个问题。查看输出:

Array final, first 1, last 800000
Vetor de 800000 elementos ordenado com quicksort em paralelo (99 threads).
Dentre o tempo de processamento de cada node, o maior foi 140000, 0.14 seconds.

Array final, first 1, last 1600000
Vetor de 1600000 elementos ordenado com quicksort em paralelo (99 threads).
Dentre o tempo de processamento de cada node, o maior foi 560000, 0.56 seconds.

它表示 child 执行快速排序的最长时间为 0.56 秒。但我等了 30 秒才打印出最后的结果。这种荒谬的差异正常吗?我计时正确吗?

感谢帮助

最佳答案

可能会发生一些事情。

  1. 在子进程完成后,您没有为 rank0 中的 sort 和 joinArrays 计算时间。

  2. 每个 child 用时 0.56 秒,但每个 child 的开始时间不必相同。我不知道你的集群有什么样的通信结构,但考虑到你移动的数据量很小,我怀疑这会是个问题。

关于c - 测量算法计算时间(使用MPI,并行计算),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6352502/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com