Сравнительные оценки производительности серверов HP

advertisement
СРАВНИТЕЛЬНЫЕ ОЦЕНКИ ПРОИЗВОДИТЕЛЬНОСТИ СЕРВЕРОВ HP
INTEGRITY RX 1620, RX 2620, RX 4640 (ITANIUM2) И HP PROLIANT DL140 G3
(XEON) ПРИ РЕШЕНИИ ЗАДАЧ МЕТОДОМ ЧАСТИЦ-В-ЯЧЕЙКАХ
Б.М. Глинский, С.Е. Киреев, В.П. Маркова, А.В. Снытников
1. Введение
Современные серверы на большинстве задач численного моделирования показывают хорошие
оценки производительности. Это связано с тем, что при написании критических участков программы
удается организовать последовательный обход данных в массивах или использовать операции из какой-либо
оптимизированной библиотеки, эффективность реализации которых определяет время работы программы в
целом.
В работе указанные серверы тестировались на задачах, решаемых методом частиц в ячейках.
Отличительной особенностью метода частиц в ячейках является необходимость обращения к данным в
случайном порядке в процессе вычислений. Это связано с тем, что частицы движутся по пространству
моделирования произвольным образом. Так что при переходе от частиц к фиксированной пространственной
сетке и обратно на определенных этапах алгоритма обращения к элементам сетки происходят
неупорядоченно. Кроме того, для метода частиц пока не реализовано оптимизированных библиотек
операций. В связи с этим представляет интерес сравнение производительности на вычислительных задачах,
реализующих метод частиц в ячейках.
В сравнении участвовали следующие вычислительные узлы:
Таблица 1
woodcrest
smp4x64
montecito
itanium2
HP ProLiant
Сервер
HP Integrity rx4640 HP Integrity rx2620 HP Integrity rx1620
DL140 G3
НКС-160
В составе кластера
–
–
–
Новосибирск
Intel Xeon 5150 DP
Intel Itanium2
Intel Itanium2
Intel Itanium2
Процессоры
(Woodcrest)
(Madison)
(Montecito)
(Madison)
Число процессоров /
2/4
4/4
2/4
2/2
ядер в узле
Частота
2.66 GHz
1.5 GHz
1.6 GHz
1.6 GHz
Пиковая производи10.67 GFLOPS
6 GFLOPS
6.4 GFLOPS
6.4 GFLOPS
тельность ядра
L1: 16 KB***,
L1: 16 KB***,
L1: 16 KB***,
L1: 32 KB**,
Кэш-память
L2: 256 KB,
L2: 256 KB**,
L2: 256 KB,
L2: 4 MB*
L3: 4 MB
L3: 9 MB
L3: 3 MB
Оперативная память
8 GB
64 GB
16 GB
3 GB
Пиковая пропускная
10.6 GB/s
6.4 GB/s
8.5 GB/s
8.5 GB/s
способность памяти
*Общий для 2-х ядер
**Только для данных
***Только для целочисленных данных
Некоторую оценку вычислительных систем могут дать пиковые показатели производительности
процессора и пропускной способности памяти. В реальных задачах они обычно не достигаются в результате
несбалансированности загрузки отдельных компонентов.
Процессоры тестируемых вычислительных систем отличаются по архитектуре. Так, процессор
Itanium2 обеспечивает большой объем ресурсов (регистры, кэш, исполнительные устройства), а построением
плана выполнения и распределением ресурсов для него полностью занимается компилятор. Напротив,
суперскалярный процессор Xeon имеет меньше ресурсов, но сам участвует в оптимизации исполняемого
кода. В результате Itanium2 будет эффективно работать, если компилятор сумеет использовать все ресурсы
процессора. Если же характеристики исполнения кода (задержки при обращении к памяти и т.п.) плохо
предсказуемы, то суперскалярный процессор, самостоятельно распределяющий ресурсы, достигнет большей
производительности.
Были использованы следующие компиляторы:
– Intel C Compiler 9.1 (woodcrest, itanium2),
– Intel Fortran Compiler 9.1 (woodcrest, itanium2),
– Intel C Compiler 10.0 (smp4x64, montecito),
– Intel Fortran Compiler 10.0 (smp4x64, montecito).
2. Определение времени обхода памяти при различных способах обращения к данным и
порядках обхода
Особенностью реализации метода частиц-в-ячейках является обход данных в произвольном порядке
на определенных этапах алгоритма. В качестве предварительной оценки было проведено сравнение
производительности подсистемы памяти серверов на простых тестах, выполняющих различные обходы
данных. Тесты реализованы на языке Си. Используемый в тестах объем данных: 32 MB.
2.1. Определение производительности подсистемы памяти на простейших операциях с памятью над
вещественными числами, так как именно с ними чаще всего приходится работать в задачах численного
моделирования.
 Порядок обхода элементов в памяти: прямой, обратный.
 Операции над элементами в памяти: R – чтение, W – запись, U – чтение + запись (update).
Время, мкс
Время операции для одного элемента типа double
0,005
0,0045
0,004
0,0035
0,003
0,0025
0,002
0,0015
0,001
0,0005
0
woodcrest
smp4x64
montecito
itanium2
R
W
U
R
Прямой
W
U
Обратный
При последовательном чтении и чтении+записи компилятор на системах с процессорами Itanium2
эффективно организовал программную предвыборку, что позволило обогнать другие системы.
Последовательная запись данных на woodcrest оказалась быстрее благодаря большей пропускной
способности памяти. Замедление чтения в обратном порядке на montecito связано с тем, что на этом узле
используется компилятор другой версии, который менее эффективно организовал цикл.
2.2. Определение производительности подсистемы памяти при обходе элементов связного списка
целых чисел.
 Порядок обхода элементов в памяти: прямой, обратный, случайный.
 Операции над элементами в памяти: чтение.
Время, мкс
200
Время операции чтения одного
элемента типа int
150
100
50
0
Прямой
woodcrest 1,9498291
smp4x64
Обратный Случайный
1,9576416 105,441162
5,89746094 5,90148926 163,713867
montecito 6,17211914 6,17578125 139,03186
Порядок обхода
При обходе списка целых чисел программную предвыборку организовать нельзя из-за зависимости
между элементами. А для случайного обхода не работает и аппаратная предвыборка. В результате woodcrest
с более быстрой подсистемой памяти выигрывает.
2.3. Определение производительности подсистемы памяти при косвенной адресации вещественных
данных.
 Порядок обхода элементов в памяти: прямой, обратный, случайный.
 Операции над элементами в памяти: R – чтение, W – запись, U – чтение + запись (update).
Время чтения индекса и выполнения операции над элементом
0,06
Время, мкс
0,05
0,04
woodcrest
smp4x64
montecito
0,03
0,02
0,01
0
R
W
U
R
Прямой
W
U
R
Обратный
W
U
Случайный
При последовательном обходе процессоры Itanium2 могут конкурировать с woodcrest, а при чтении
за счет предвыборки даже обгонять. При случайном обходе woodcrest все же выигрывает.
Определение издержек на дополнительное чтение индекса элемента при косвенной адресации по
сравнению с прямой при последовательном обходе:
Прямая адресация
Косвенная адресация
Время обработки одного элемента
0,006
Время, мкс
0,005
0,004
0,003
0,002
0,001
0
R
W
woodcrest
U
R
W
smp4x64
U
R
W
U
montecito
Дополнительное чтение индекса в большинстве случаев увеличивает время на 2-3 такта. Видно, что
на woodcrest существует эффективный механизм записи, который перестает работать при совмещении
операций записи и чтения.
Выводы
Узлы на процессорах Itanium2 могут конкурировать с woodcrest в случае последовательного обхода
данных, и даже выигрывать на операциях последовательного чтения благодаря эффективно организованной
программной предвыборке. В случаях более сложного обхода (при обходе в случайном порядке, при обходе
связных списков) выигрывает woodcrest.
3. Сравнение производительности серверов на тестовой реализации метода частиц-в-ячейках
С целью тестирования была написана программа, реализующая модель гравитационного
взаимодействия N-тел методом частиц в ячейках. Программа написана на языке Си, распараллелена с
помощью директив OpenMP.
Параметры теста
Число ячеек сетки по каждому из трех измерений:
Число частиц:
Число шагов по времени:
Используемый объем памяти:
Массивы для хранения сеток:
Массив частиц:
300
20 000 000
10
2.1 Гб
1.2 Гб (6 массивов по 0.2 Гб)
0.9 Гб
Результаты тестирования
Сравнение времен работы программы, ускорения и эффективности распараллеливания.
woodcrest
smp4x64
montecito
itanium2
400
Время, с
350
300
2,5
120
Ускорение
Эффективность, %
100
2
80
1,5
60
1
40
0,5
20
250
200
woodcrest
smp4x64
montecito
itanium2
3
150
woodcrest
smp4x64
montecito
itanium2
100
50
0
0
1
2
3
Число потоков
0
4
1
2
3
Число потоков
4
1
2
3
Число потоков
4
Время работы однопоточной программы на woodcrest немного меньше, чем на системах на базе
процессоров Itanium2, но выдающегося преобладания нет. Эффективность распараллеливания выше на 4ядерных системах на базе Itanium2. Видно, что на woodcrest начиная с 3-х потоков, когда задействуются два
ядра одного кристалла процессора, рост ускорения уменьшается, видимо, вследствие того, что объем кэшпамяти, приходящейся на один поток, становится меньше.
Сравнение времен работы отдельных этапов алгоритма.
Основной особенностью метода частиц в ячейках являются процедуры 1) сдвига частиц под
действием гравитационных сил (Particle) и 2) вычисления распределения плотности на фиксированной сетке
(Density), т.к. в них происходят неупорядоченные обращения в память. Другой важный этап алгоритма –
решение уравнений поля (в данном случае – уравнения Пуассона) – зависит от конкретной задачи и не
является характерной чертой метода частиц. Рассматриваемый тест был выполнен таким образом, чтобы
этапы решения уравнения поля и вычисления гравитационных сил занимали сравнительно небольшое время
(около 10% от общего времени). Поэтому будем рассматривать только процедуры Particle и Density.
 Процедура Particle: сдвиг частиц под действием гравитационных сил.
Последовательный обход (чтение-запись) массива частиц (0.9 GB).
Чтение трех массивов гравитационных сил в случайном порядке (3×0.2 GB).
 Процедура Density: вычисление распределения плотности на фиксированной сетке.
Последовательное чтение массива частиц (0.9 GB).
Чтение-запись массива плотности в случайном порядке (0.2 GB).
250
250
woodcrest
density
200
150
100
50
density
150
100
50
0
0
1
2
3
4
1
Число потоков
2
3
4
Число потоков
250
250
montecito
itanium2
particle
density
200
150
100
particle
density
200
Время, с
Время, с
particle
200
Время, с
Время, с
smp4x64
particle
150
100
50
50
0
0
1
2
3
Число потоков
4
1
2
3
Число потоков
4
Процедура Particle работает с большим объемом данных и выполняет больше вычислений, чем
процедура Density, поэтому соотношение времен работы этих процедур на woodcrest и bc1 вполне понятно.
Однако на процессорах Itanium2 время работы процедуры Density оказалось больше. Для анализа этой
особенности было проведено дополнительное исследование. Было обнаружено, процессор Itanium2 работает
эффективно в тех случаях обращения к памяти, когда компилятору удается реализовать программную
предвыборку (когда адрес известен задолго до фактического обращения к памяти). Если предвыборку
организовать не удается (при случайном обходе данных), то задержки у процессора Itanium2 заметно
больше, чем у процессоров Xeon (на woodcrest). Итак, выяснилость следующее:
 В процедуре Particle на каждой итерации цикла происходит чтение 24-х сеточных значений
(образующих 12 соседних пар), адреса которых вычисляются на этой же итерации. Анализ
машинного кода показал, что программной предвыборки для этих данных вообще не происходит.
Но операции чтения и использования этих данных компилятор разнес на значительное расстояние,
выполняя в это время другие вычисления. Большой объем вычислений на каждой итерации
позволил компилятору загрузить конвейер на время ожидания другой полезной работой.
 В процедуре Density на каждой итерации происходит чтение+запись 8-ми сеточных значений
(образующих 4 соседние пары), адрес которых вычисляется на этой же итерации. Анализ
машинного кода показал, что программная предвыборка осуществляется только для первой пары
чисел. Обращения к остальным очевидно будут давать большие задержки, так как после операции
чтения данных сразу следуют операции их использования и записи. Компилятор не замаскировал
ожидание другими операциями, возможно, из-за их отсутствия.
Преимущество Itanium2 перед Xeon на процедуре Particle можно объяснить хорошей работой
компилятора, которому удалось замаскировать ожидание данных из памяти полезными вычислениями. При
отсутствии задержек темп обработки команд на Itanium2 выше, чем на Xeon, что позволяет ему выигрывать.
Большое отставание Itanium2 от Xeon на процедуре Density объясняется тем, что компилятору на Itanium2 не
удалось реализовать предвыборку (одну из ключевых особенностей архитектуры) или замаскировать
ожидание другими вычислениями. А время произвольного доступа к памяти, как видно из предыдущей
части, на процессорах Itanium2 больше.
Влияние распределения частиц на время работы.
На локальность обращений к памяти, и, следовательно, на производительность, должно влиять
распределение частиц в пространстве моделирования. Если все частицы находятся в небольшой
ограниченной области, то большая локальность обращений к элементам массивов приведет к большей
производительности.
На следующих диаграммах приведены времена работы теста для двух случаев:
 Random – частицы равномерно распределены по всей области моделирования;
 Circle – частицы расположены в плоском круге в центре области.
400
400
woodcrest
300
300
250
250
200
150
Random
Circle
200
150
100
100
50
50
0
0
1
2
3
Число потоков
4
1
400
2
3
Число потоков
4
400
montecito
350
Random
300
300
250
250
200
150
Random
Circle
200
150
100
100
50
50
0
itanium2
350
Circle
Время, с
Время, с
smp4x64
350
Circle
Время, с
Время, с
350
Random
0
1
2
3
Число потоков
4
1
2
3
Число потоков
4
Видно, что локальное размещение частиц в области заметно улучшает время работы программы.
Чем больше объем кэш-памяти, тем этот эффект более заметен. Так на узле montecito разница во времени
больше, чем на узлах smp4x64 и itanium2 с процессорами той же архитектуры именно вследствие большего
объема кэш-памяти. При более плотном размещении частиц эффект проявился бы еще сильнее.
Влияние привязки потоков к ядрам на Woodcrest.
Наличие постоянной привязки потоков к конкретным вычислительным ядрам процессоров обычно
несильно сказывается на уровне производительности. Незначительный прирост производительности (около
1%) может быть получен в результате того, что задача не перелетает с одного ядра на другое, как это может
происходить при отсутствии привязки. Также некоторое замедление может быть получено, если какой-то
посторонний процесс запустился на используемом ядре, а задача вследствие привязки не имеет
возможности перелететь на другое менее занятое ядро.
На машинах smp4x64 и itanium2 все вычислительные ядра равноправны, поэтому привязка потоков
к ядрам не имеет решающего значения. На узле montecito с двухядерными процессорами Itanium2
распределение потоков по ядрам также не влияет на производительность, т.к. ядра на одном кристалле не
имеют разделяемых критических ресурсов. Особым является случай, когда на системе woodcrest с
двухядерными процессорами и общей кэш-памятью двухпотоковая задача запускается на ядрах одного
процессора.
Начальное распределение:
вся область
180
particle
density
остальные этапы
Начальное распределение:
круг в центре области
100
90
80
160
120
Время, с
Время, с
140
100
80
60
40
particle
density
остальные этапы
70
60
50
40
30
20
10
0
20
0
2 потока без
привязки
2 потока в
разных крист.
2 потока в
одном крист.
2 потока без
привязки
2 потока в
разных крист.
2 потока в
одном крист.
На диаграммах показаны времена работы процедур Particle, Density и суммарное время остальных
этапов алгоритма на woodcrest с использованием двух потоков, которые по-разному привязываются к
вычислительным ядрам. Представлены результаты для двух различных распределений частиц.
Из результатов теста видно, что при отсутствии явной привязки потоки размещаются на разных
кристаллах, что, по-видимому, считается наиболее оптимальным. Действительно, для процедуры Particle,
как и для других этапов алгоритма, работающих только с регулярными сетками, размещение двух потоков
на одном кристалле плохо сказывается на времени работы. Это объясняется тем, что, как показали
дополнительные тесты, объем доступной потоку кэш-памяти в условиях конкуренции сокращается с 4 МБ
до примерно 1 МБ.
Однако при более локальном размещении частиц (правая диаграмма) совместное использование
кэш-памяти двумя потоками ускоряет работу процедуры Density. По-видимому, значительная часть области
памяти, в которую происходят неупорядоченные обращения, помещается в кэш-память, что обеспечивает
прирост производительности.
Выводы
По абсолютному времени работы теста woodcrest незначительно превосходит системы на базе
Itanium2. Но времена работы некоторых отдельных этапов сильно отличаются в ту или другую сторону.
Эффективность распараллеливания на woodcrest несколько хуже, т.к. при максимальной загрузке
объем кэш-памяти на этой машине оказывается меньше, чем на остальных 4-ядерных серверах
Единственным случаем, когда общая для двух ядер кэш-память на woodcrest приводит к
увеличению производительности, является тот, когда несколько потоков работают с одним и тем же
небольшим объемом данных. В проведенном тестировании этот случай встретился один раз при
определенных параметрах на одном из этапов алгоритма. Замедление на остальных этапах полностью
нейтрализовало полученное преимущество.
Эффективность работы процессора Itanium2 определяется тем, смог ли компилятор на данном
участке кода устранить все задержки, в частности, при обращении к памяти. Если задержки удается
устранить, то Itanium2 может конкурировать с Xeon.
4. Сравнение
протопланетного диска
производительности
серверов
на
задаче
моделирования
динамики
Проведено тестирование производительности серверов на программе моделирования динамики
протопланетного диска [3]. Сочетание различных численных методов в программе позволяет проводить
комплексное тестирование вычислительной системы: оценивать скорость вычислений, скорость работы с
оперативной памятью и скорость коммуникаций. Программа реализована на языке Фортран с
использованием библиотеки MPI.
В процессе моделирования решаются уравнение Власова и уравнение Пуассона. Для решения
уравнения Власова используется метод частиц-в-ячейках. Для решения уравнения Пуассона в
цилиндрической системе координат используется следующая комбинация методов: БПФ по угловой
координате, ПВР по z-координате и метод прогонки по радиальной координате. Межпроцессорные
коммуникации реализованы с помощью коллективных функций библиотеки MPI.
За основу был взят расчет со следующими параметрами: сетка NRxNxNZ=800x512x500, 10 млн.
частиц, 10 временных шагов (базовый расчет). Его продолжительность указана ниже (woodcrest / smp4x64 /
montecito / itanium2). Во всех запусках использовалось 4 процесса MPI.
Время решения уравнения Пуассона, сек
–
744 / 573 / 522 / 611
Время решения уравнения Власова-Лиувилля, сек
–
17 / 12 / 11 / 11
Время межпроцессорных коммуникаций, сек
–
1/3/3/2
Параметры и временная продолжительность расчетов приведены в следующей таблице.
Продолжительность указана относительно базового расчета (во сколько раз возросло соответствующее
время по сравнению с базовым расчетом).
Таблица 2
NR
N
NZ
1600
800
800
800
512
1024
512
512
500
500
1000
500
Число
частиц,
млн.
10
10
10
100
Время решения
уравнения Пуассона
Время решения
уравнения Власова
Время
коммуникаций
1.9 / 2 / 2.1 / 2.3
1.2 / 1.3 / 1.3 / 1.6
5.2 / 4.8 / 4.9 / 4.6
1/1/1/1
1 / 1.2 / 1.2 / 1.2
1 / 1.7 / 1.7 / 1.9
1/1/1/1
8.1 / 8.3 / 8.3 / 8.9
2.2 / 2.3 / 2.4 / 2.6
2 / 2 / 2.1 / 2.1
1/1/1/1
1/1/1/1
Скорость вычислений
При увеличении размера задачи время вычислений с использованием процессора Woodcrest в
большинстве случаев возрастает медленнее. Но общее время вычислений с использованием процессора
Itanium2 меньше. В целом, соотношения между временами расчета отражают соотношения между
размерами кэш-памяти в тестируемых вычислительных системах, приходящейся на одно ядро.
Скорость работы с оперативной памятью
Скорость работы с оперативной памятью можно оценить по времени решения уравнения Власова.
Для расчета движения частицы используются данные из двумерной матрицы сил. Координаты модельных
частиц располагаются в памяти подряд. Так как координаты соседних частиц могут сильно различаться, то
расчет движения частиц может приводить к обращениям в различные участки матрицы сил. Это означает,
что невозможно загрузить часть матрицы сил в кэш для обработки нескольких подряд расположенных
частиц. Из таблицы 2 видно, что при увеличении числа частиц в 10 раз время решения уравнения Власова на
woodcrest растет медленнее по сравнению с системами на базе Itanium2. Отсюда можно сделать вывод, что
скорость работы с оперативной памятью выше для woodcrest.
Скорость коммуникаций
Межпроцессорные коммуникации в программе представляют собой рассылку всем процессорам
двумерных матриц размера NRxN. Время передачи сообщений внутри одного узла на woodcrest меньше,
чем на других системах, и с ростом размера задачи растет медленнее. Интересно, что в системе itanium2 для
расчета использовались два двухпроцессорных узла, а время коммуникаций получилось меньше, чем на
smp4x64 и montecito. Это может объясняться особенностями реализации процедуры MPI_Alltoall. Но с
ростом размера задачи время коммуникаций, как и ожидалось, на itanium2 растет быстрее.
Вывод
Скорость расчета на процессорах Itanium2 заметно выше. Но скорость работы с памятью и скорость
внутриузловых коммуникаций на woodcrest выше, поэтому при увеличении размера задачи время расчета
для woodcrest растет медленнее. Лидером во всех случаях стала вычислительная система montecito.
5. Заключение
Результаты проведенного тестирования узлов на базе процессоров Itanium2 и Xeon 5150 DP
(woodcrest) показали, что, несмотря на то, что пиковые показатели производительности и пропускной
способности памяти у Xeon выше, процессоры Itanium2 успешно конкурируют с ним на реализациях метода
частиц-в-ячейках.
ЛИТЕРАТУРА:
1. Inside the Intel Itanium 2 processor, HP Technical White Paper, July 2002.
2. J.H. Stokes, Into the Core: Intel’s next-generation microarchitecture. April 5th, 2006,
arstechnica.com/articles/paedia/cpu/core.ars
3. В.А. Вшивков, Э.А. Кукшева, С.А. Никитин, А.В. Снытников, В.Н. Снытников: О параллельной
реализации численной модели гравитирующих систем. Автометрия, 2003, том 39, №3, c.115-123.
Download