Тест Whetstone. Стандартная программа оценки и показатель производительности компьютера, построенная из смеси машинных команд и типов данных, типичных для научных приложений. Разработана подразделением фирмы ICL, расположенном в английском городке Whetstone.
Тест спроектирован для оценки характеристик систем при интенсивном использовании операций с плавающей запятой. Это смесь плавающих и целочисленных операций, вычисления трансцедентных функций, обработки массивов и вызовов процедур. Комплект тестов Whetstone состоит из нескольких модулей, имитирующих программную нагрузку в наиболее типичных режимах исполнения вычислительных задач.
Каждый модуль теста выполняется многократно, в соответствии с исходной статистикой Whetstone-инструкций (практически это реализуется с помощью заключения модулей в циклические конструкции с разным числом "оборотов" цикла - от 12 до 899), а производительность рассчитывается как отношение числа Whetstone-инстpукций к суммарному времени выполнения всех модулей пакета. Этот результат представляется в KWIPS (Kilo Whetstone Instructions Per Second) или в MWIPS (Mega Whetstone Instructions Per Second). В известном смысле указанные единицы аналогичны MIPS, но с одной существенной оговоркой: Whetstone-инструкции не привязаны к системе команд какого-либо компьютера, т. е. оценка производительности в MWIPS является моделенезависимой.
Для оценки производительности нашего кластера я предлагаю использовать несколько модифицированный вариант теста, из которого убраны процедуры ввода/вывода, не относящиеся непосредственно к вычислительному процессу, и добавлен блок, учитывающий необходимость граничного обмена средствами MPI. О граничном обмене мы поговорим позже.
Тест написан на языке Fortran. Программа состоит из двух модулей, помещенных в отдельные исходные файлы: whetstoned.f - собственно сам тест Whetstone, оформленный в виде подпрограммы, и mwips.f - основная программа. Компиляция теста выполняется следующей командой:
mpif77 mwips.f whetstoned.f -o mwips
Программа в среднем работает от 30 до 60 секунд, в зависимости от используемых компьютеров. Тест производится над данными двойной точности. В граничном обмене участвуют 6 массивов действительных чисел двойной точности, размерностью 8800 элементов каждый. Такая модель граничного обмена примерно соответствует решению системы дифференциальных уравнений МГД на двумерной области на машинах с доступной памятью около 3.5 Гб. Результатом работы программы будет примерно следующее:
Cluster Double Precision Whetstone Test --------- Quantity of processors = 3 Calculation time = 44.55 seconds Cluster speed = 40404 MWIPS ------------------------------------------------- Cluster node N00 speed = 28477 MWIPS (supergate) Cluster node N01 speed = 17094 MWIPS (node01) Cluster node N02 speed = 15719 MWIPS (node02) ------------------------------------------------- Nodes minimal speed = 15719 MWIPS Acceleration factor = 2.57 -------------------------------------------------
В проведенном тесте граничный обмен отрицательно влияет на скоростные характеристика кластера. Граничный обмен длится примерно 16% от времени, затраченного программой на вычислительные процедуры, что заметно замедляет весь процесс. В отсутствие граничного обмена, без которого в реальной задаче обойтись к сожалению нельзя, характеристики нашего тестового кластера выглядят так:
Cluster Double Precision Whetstone Test --------- Quantity of processors = 3 Calculation time = 38.55 seconds Cluster speed = 46693 MWIPS ------------------------------------------------- Cluster node N00 speed = 28585 MWIPS (supergate) Cluster node N01 speed = 17104 MWIPS (node01) Cluster node N02 speed = 15756 MWIPS (node02) ------------------------------------------------- Nodes minimal speed = 15756 MWIPS Acceleration factor = 2.96 -------------------------------------------------
Для компиляции тестовой программы использовался компилятор Intel Frotran ver. 11.1 20090630.
Для сравнения, при использовании компилятора gfortran ver. 4.3.3 из коллекции GCC этот же тест на том же оборудовании дает следующий результат:
Cluster Double Precision Whetstone Test --------- Quantity of processors = 3 Calculation time = 726.15 seconds Cluster speed = 2479 MWIPS ------------------------------------------------- Cluster node N00 speed = 1504 MWIPS (supergate) Cluster node N01 speed = 1010 MWIPS (node01) Cluster node N02 speed = 833 MWIPS (node02) ------------------------------------------------- Nodes minimal speed = 833 MWIPS Acceleration factor = 2.98 -------------------------------------------------