Ускорение без серийной дроби - PullRequest
0 голосов
/ 20 мая 2018

Я провел ряд экспериментов на параллельном пакете, скажем, superlu-dist, с разными номерами процессоров, например: 4, 16, 32, 64

Я получил время настенных часов для каждого эксперимента,скажем: 53.17s, 32.65s, 24.30s, 16.03s

Формула ускорения:

                  serial time
  Speedup = ----------------------
                parallel time

Но нет никакой информации о серийной дроби.

Могу ли япросто взять обратное время настенных часов?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Могу ли я просто взять обратную величину времени настенных часов?

Нет,
истинные цифры ускорения требуют сравнения яблок с яблоками:

Это означает, что планирование процесса оригинал , чисто- [SERIAL] должно сравниваться с любым другим сценарием, где детали могут быть изменены, чтобы использовать какой-то видпараллелизма (параллельная дробь может быть реорганизована так, чтобы работать на N процессорах / вычислительных ресурсах, тогда как последовательная дробь остается такой же, как была).

Это очевидноозначает, что исходный [SERIAL] -код был расширен (как в коде (#pragma -декораторы, OpenCL-модификации, CUDA -{ host_to_dev | dev_to_host } -инструмент и т. д.), так и во времени (для выполнения этихдобавлены функциональные возможности, которых не было в исходном [SERIAL] -коде, для сравнения), чтобы добавить несколько новых разделов, где (возможно [PARALLEL]) будет выполняться другая часть обработки.

Это происходит за счет дополнительных накладных расходов (тo настройка, завершение и передача данных от [SERIAL] -части туда, к [PARALLEL] -части и обратно), что добавляет дополнительную рабочую нагрузку [SERIAL] -части (и время выполнения + задержка).

Для более подробной информации, не стесняйтесь читать раздел Критика в статье о переформулированном Законе Амдала.

enter image description here

Интересная часть [PARALLEL] кажется интересной, однако основной потолок ускорения находится в продолжительности [SERIAL] доли ( s = 1 - p ) воригинал,

enter image description here

, к которому необходимо добавить продолжительности надстройки и дополнительные затраты времени ожидания по мере накопления вместе с "организация работы от оригинального чистого [SERIAL] до желаемого для планирования [PARALLEL] процесса выполнения кода , если должна быть достигнута реалистичная оценка


запустить тест на одном процессоре и установить его как последовательное время, ... ,

как @VictorSongпредложила звучит легко, но тестирует непоследовательную систему (не чистую [SERIAL] оригинал) и записывает искаженный критерий для сравнения.

Это причина, почему справедливые методы должныбыть спроектированным.Выполнение кода в чистом [SERIAL] оригинальном может быть с отметкой времени, чтобы показать реальную продолжительность неизмененных частей, но время надстройки надстройки должно быть включено в надстройкурасширения серийной части теперь распараллеленных тестов.

Пересмотренный закон убывающих возвратов Амдала объясняет это, вместе с воздействиями из-за накладных расходов, а также из-за атомарностиобработка, которая не будет допускать дальнейших фиксаций ускоренного роста, при условии добавления большего количества вычислительных ресурсов, но параллельная доля обработки не допускает дальнейшего разделения рабочих нагрузок задачи из-за некоторой формы его внутренней атомарности обработки, чтоне может быть далее разделен, несмотря на наличие свободных процессоров.

Упрощенное из двух, переформулированных выражений выглядит так:

               1
S =  __________________________; where s, ( 1 - s ), N were defined above
                ( 1 - s )            pSO:= [PAR]-Setup-Overhead     add-on
     s  + pSO + _________ + pTO      pTO:= [PAR]-Terminate-Overhead add-on
                    N               

Некоторые интерактивные инструменты GUI для дальнейшей визуализациинакладные расходы доступны для интерактивного параметрического моделирования здесь - просто переместите p -ползунка к фактическому значению ( 1 - s ) ~, имеющему ненулевую дробь самой [SERIAL] - часть исходного кода :

live-GUI for interactive simulations

0 голосов
/ 20 мая 2018

Что вы имеете в виду, когда говорите «серийная дробь»?Согласно поиску в Google, по-видимому, superlu-dist - это C, так что я думаю, что вы можете просто использовать ctime или chrono и взять время обычным способом, он работает для меня как с ручным std :: threads, так и с omp.

Я бы просто запустил тест на одном процессоре и установил его как последовательное время, а затем повторил бы тест с большим количеством процессоров (как вы сказали).

...