【发布时间】:2011-06-15 02:50:34
【问题描述】:
我的代码执行以下操作:
它将在集群中并行执行。 master rank 将生成一个包含大量元素(最大 1.6M 元素)的后代有序数组,将这个数组分成更小的数组,将这些部分中的每一个发送到集群中的每台计算机。集群中的每台计算机都将在其数组的一部分中执行快速排序算法,并将这个(升序)数组发送回主队列。然后,主等级将使用修改后的冒泡排序算法对从子等级接收到的每个部分进行排序,并构建新的有序数组。 (目标是在并行计算中执行快速排序算法)。
一切正常,唯一的问题是我需要测量算法的计算时间。这是一项大学工作,因此 PDF 中说“仅计算排序算法的时间”。所以我认为它不考虑网络等之间的数组传输。
我在代码中所做的是测量每个子等级的快速排序经过的时间。最大的时间将是计算时间。我对吗?但有一个问题。查看输出:
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.
它说孩子执行快速排序的最长时间是 0.56 秒。但我等了 30 秒才打印最后一个结果。这种荒谬的差异正常吗?我是否正确测量时间?
感谢您的帮助
【问题讨论】:
-
您说您的代码将在集群上运行;这个特定的测试在多少个进程上运行?
标签: c mpi parallel-processing