Вернуться к списку статей

Название: The world's fastest CPU and SMP node: Some performance results from the NEC SX-9 (фрагмент)
Источник: http://www.blogs.uni-erlangen.de/hager/topics/Publications
Авторы: T. Zeiser, G. Hager, G. Wellein
Перевод: Войтов А.В.
Год опубликования: 2009

4.3 Результаты

Для данных исследований производительность одиночного процессора ядра решетки Больцмана измерялась на выделенных узлах NEC SX-6+, SX-8, SX-8R и SX-9, а также на двухсокетных кластерных узлах с процессорами Intel Harpertown и Intel Nehalem соответственно. Кроме того, параллельная масштабируемость в пределах одного узла NEC SX-8R и SX-9, а также кластерных узлов, была проверена с использованием параллельной версии кода ccNUMA-aware OpenMP.

Данные о производительности даны в миллионах обновлений позиций (ячеек) решетки жидкости в секунду (FluidMLUPS). Поскольку одно обновление ячейки требует от 175 до 220 операций с плавающей точкой в зависимости от компилятора и оптимизации, 1 FluidMLUPS эквивалентен ~200MFlop/s или 1 GFlop/s 5 FluidMLUPS.

Все представленные эталонные тесты выполнялись для кубических областей с твердыми стенами, перпендикулярными основному направлению потока, то есть для короткого канала. Общее количество ячеек жидкости , где N - длина края. Это соотношение было выбрано для наибольшего облегчения исследования зависимости производительности от размера области и, таким образом, от длины цикла. Код обрабатывает также конфигурации любой сложности с небольшим падением производительности. Вследствие одномерного представления списка производительность также мало зависит от единственной размерности ограничивающего прямоугольника, только от общего количества узлов жидкости М.

Объем памяти, занимаемый одной ячейкой: 2 x 19 x 8 байт +18 x 4 байт = 376 байт для двух состояний 19 значений двойной точности с плавающей точкой и 18 целых чисел с информацией о смежности adj. На основанных на кэше системах, и на векторных машинах вообще, если можно избежать RFO (например, с помощью невременной памяти), это также количество данных, которые будут переданы между центральным процессором и оперативной памятью в каждом шаге времени и для каждой ячейки. Если требуется RFO (общий случай при использовании кэшей), объем передачи увеличивается до 3 x 19 x 8 байт + 18 x 4 байт = 528 байт на обновление ячейки.

Последовательность нумерации дискретных направлений (DCO или BSO) имеет некоторое влияние на производительность. Однако эффект значительно изменяется в зависимости от машины, а также зависит от числа используемых потоков и других деталей реализации. Для получения ясных выводов необходимы дальнейшие исследования. В настоящее время мы можем только утверждать, что порядок BSO не всегда приводит к лучшей производительности, хотя алгоритм предполагал бы это.

Иллюстрации 5-9 подводят итоги эталонных тестов решетки Больцмана, которые будут подробно рассмотрены ниже.

Иллюстрация 5 показывает длительную производительность ядра решетки Больцмана на единственном процессоре различных поколений NEC SX. В большинстве случаев, формат данных SOA немного быстрее на всех тестируемых системах NEC SX, но страдает от конфликтов в блоке памяти для определенных конфигураций области (подобно пробуксовке кэша в системах, основанных на кэше), если расстояние между смежными функциями распределения слишком часто является множителем степени двух. Поэтому формат данных AOS включен в большинство графов. Существенный прирост производительности от SX-8 до SX-8R происходит не из-за увеличенной тактовой частоты или удвоенных возможностей векторных каналов для чисел с плавающей точкой (2 умножения-сложения вместо одного), а из-за директивы VOVERTAKE, снижающей затраты на косвенную адресацию. С увеличением длительной производительности длина вектора, необходимая для достижения половины производительности больших размеров области значительно возрастает - согласно наблюдениям от векторной триады – вероятно, потому, что время ожидания памяти значительно не уменьшается от поколения к поколению. На NEC SX-6+ и SX-8 есть очень незначительный прирост производительности для схемы PULL (данные не показаны), потому что затраты на сбор данных меньше, чем на рассеяние. На NEC SX-8R и SX-9 обратная ситуация: схема PUSH намного быстрее, чем PULL (15 - 100 %, данные не показаны), вследствие возможностей VOVERTAKE, затрагивающих только рассеяние данных.

Одноядерная производительность ядра решетки Больцмана на двух различных поколениях двухсокетных систем Intel показано для справки на рис. 6. Процессор Intel Harpertown ведет себя, как ожидается [10]: с форматом данных AOS/PUSH производительность понижается на размерах области, при которых кэш становится слишком маленьким, чтобы вместить всю область, и в конечном счете две последовательных плоскости (см. обсуждение в [10]). Эта схема размещения обычно медленнее, чем формат данных SOA/PUSH (кроме тех случаев, когда полная область настолько мала, что все данные вмещаются во внутренний кэш). По до сих пор неясным причинам система Nehalem показывает очень специфическое поведение, которое пока не наблюдалось ни на какой другой архитектуре x86: комбинация AOS/PUSH быстрее, чем вариант SOA/PUSH, несмотря на то, что комбинация AOS/PUSH показывает падение производительности, описанное выше. Существенный прирост производительности получен на обоих поколениях систем Intel, если алгоритм разрешает использование невременной памяти (данные SOA/FUIX/optNTS на рис. 6).

При использовании всех процессоров узла NEC SX-8R с OpenMP-версией кода (рис. 7) нет почти никакого различия между вариантами PULL и PUSH, несмотря на VOVERTAKE, которая должна быть эффективной для реализации PUSH. NEC SX-9 в этом отношении отличается и ведет себя, как ожидается. На NEC SX-9 PUSH с VOVERTAKE дает большой прирост производительности (больше чем в два раза также для 16 потоков OpenMP). Однако необходимый размер области для получения половины производительности большой области снова значительно возрастает (вставка рис. 7).

Параллельная масштабируемость в узлах NEC SX-8R и SX-9 почти совершенна (рис. 8), тогда как параллельная масштабируемость в пределах узла Intel Harpertown слаба (рис. 9) и увеличивается, только если вступает в силу второй путь к оперативной памяти , в то время как система Nehalem масштабирует достаточно хорошо даже в пределах сокета.

5 Выводы и перспективы

Абсолютная производительность NEC SX-9 преобладает. 2750 FluidMLUPS, которые получены 16 потоками OpenMP на единственном узле для довольно маленького размера области (26.6 миллионов ячеек жидкости), эквивалентны длительной производительности почти 0.5 TFlop/s. Предполагая идеальную масштабируемость нескольких узлов с соответствующим MPI-кодом, эта производительность потребовала бы приблизительно 40 двухсокетных узлов Intel Nehalem, с приблизительно 665 000 ячеек жидкости только в узле плюс 61000 ячеек на узел в уровнях ореола, которые должны быть обменены с соседними узлами. На единственном узле BlueGene/P мы ожидаем производительность приблизительно в 10 FluidMLUPS, таким образом, там это отношение становится значительно хуже. NEC SX-9 - одна из немногих новых машин, которая дает ученым значительный прирост производительности даже для сильных сценариев масштабирования, где полный размер задачи фиксирован. Однако векторные системы доступны только по большой цене.

Благодарности

Эта работа была выполнена в пределах баварской структуры KONWIHR-II с дополнительной финансовой поддержкой от BMBF до SKALB (грант 01IH08003A). Доступ к системам HPC в HLRS был предоставлен через проект LBA-diff. Авторы многим обязаны H. Berger, S. Haberhauer и T. Schoenemeyer за их помощь. Мы благодарим Intel за предоставление раннего доступа к системе Nehalem.

Ссылки

[1] K. J. Barket et al.: A performance evaluation of the Nehalem quad-core processor for scientific computing. Parallel Processing Letters 18(4):453-469,2008.
[2] M. Frigo and V. Strumpen: The memory behavior of cache oblivious stencil computations. Journal of Supercomputing 39(2):93-112,2007.
[3] I. Ginzburg, J.-P. Carlier, and C. Kao: Lattice Boltzmann approach to Richards' equation. In C. T. Miller, editor, Computational Methods in Water Resources: Proceedings of CMWR XV, June 13-17, Chapel Hill NC, USA, pages 583-597, Amsterdam, 2004. Elsevier.
[4] X. He and L.-S. Luo: Theory of the lattice Boltzmann method: From the Boltzmann equation to the lattice Boltzmann equation. Phys. Rev. E, 56(6):6811-6817,1997.
[5] H. Kobayashi et al.: First Experiences with NEC SX-9. In M. Resch et al., eds., High Performance Computing on Vector Systems 2008, pages 3-11, Berlin, 2009. Springer.
[6] T. Pohl et al.: Performance Evaluation of Parallel Large-Scale Lattice Boltzmann Applications on Three Supercomputing Architectures. In: Proceedings of the IEEE/ACM SC2004 Conference (2004)
[7] T. Schoenemeyer and H. Berger (NEC): Priv. comm. 2009.
[8] W. Schonauer: Scientific Supercomputing: Addendum for NEC SX4/5. http://www.rz.uni-karlsruhe.de/~rx03/ addendum/al
[9] S. Succi: The Lattice Boltzmann Equation - For Fluid Dynamics and Beyond. Clarendon Press, 2001.
[10] G. Wellein et al.: On the single processor performance of simple lattice Boltzmann kernels. Computers SL Fluids, 35(8-9):910-919, 2006.
[11] S. Williams et al.: Lattice Boltzmann Simulation Optimization on Leading Multicore Platforms. IPDPS, 2008.
[12] T. Zeiser et al.: Vector computers in a world of commodity clusters, massively parallel systems and many-core many-threaded CPUs. In W. E. Nagel et al., eds., High Performance Computing in Science and Engineering '08, pages 333-347, Berlin, 2009. Springer.

Вернуться к списку статей