http://pastebin.com/Xb6GLv8Y
Мой код выполняет следующие действия:
Он будет выполняться параллельно в кластере.Мастерский ранг создаст упорядоченный по потомкам массив с большим количеством элементов (максимум 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 секунд, прежде чем был напечатан последний результат.Это абсурдная разница нормально?Я правильно измеряю время?
Спасибо за помощь