1 1 Сравнение быстродействия

После того, как мы написали два варианта программы попробуем сравнить их быстродействие и посмотреть, стоила ли овчина выделки. Ниже приведена сводная таблица тестов последовательной программы, параллельной программы, выполняемой на одном компьютере и параллельной программы, выполняемой на двух и четырех компьютерах. Во всех случаях параметры задачи и общий размер разностной сетки были одинаковы.

Вариант запускаКол-во
CPU
Время
счета
Последовательная программа13 мин. 35 сек.
Параллельная программа
запуск без MPI (./diffp)
13 мин. 36 сек.
Параллельная программа
запуск с MPI (mpirun ./diffp)
14 мин. 36 сек.
Параллельная программа22 мин. 13 сек.
Параллельная программа40 мин. 56 сек.

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

Данный тест проведен в предположении неизменности размера нашей разностной сетки. Другими словами, мы стремились на одних и тех же данных получить наибольшее быстродействие. Во всех тестах общая расчетная область имела размер 4000x6000 ячеек.

Как уже говорилось ранее, кластер может использоваться не только для увеличения скорости счета, но и для увеличения доступной оперативной памяти. Поэтому имеет смысл протестировать параллельную задачу в условиях, когда размер локальной сетки на каждом из узлов кластера будет равен исходному, то есть 4000x6000, то есть мы увеличиваем доступную память в N раз, где N - количество вычислительных узлов.

На момент написания этого раздела мне был доступен тестовый кластер, состоящий из трех компьюьеров с двухядерными процессорами и 1 Гб памяти на борту. Поскольку два массива REAL*8 размером 4000x6000 занимают в памяти примерно 366 Мб, то, несмотря на двухядерность, во избежанеие проблем с памятью (свопинг и все такое...), я не стал запускать по два процесса на одной машине, и сравнил быстродействие последовательной программы, запущенной на одном процессоре и быстродействие параллельной программы с троекратным увеличением общего объема данных, запущенной на трех процессорах. Результаты теста получились такими:

Размер матрицы
(общий)
Кол-во
CPU
Время
счета
4000x600013 мин. 35 сек.
4000x1800034 мин. 37 сек.

Результат тоже впечатляющий. Действительно, увеличение объема данных (размера разностной сетки) в 3 раза при использовании трехпроцессорного кластера потребовало расчетного времени всего в 1.3 раза больше.

Эффект, как говорится, на лицо!


Copyright © 1998-2011 Юрий Сбитнев