Научная статья на тему 'Особенности использования многоядерных процессоров'

Особенности использования многоядерных процессоров Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
202
76
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Особенности использования многоядерных процессоров»

ресурсов системы МВС-15000ВМ; удовлетворены все требования к безопасности, надежности и отказоустойчивости, предъявляемые к организации вычислений на вычислительных ресурсах МСЦ РАН; сохранены привычная модель организации вычислений и привычный пользовательский интерфейс.

Список литературы

1. Foster I., Kesselman C., Tsudik G., Tuecke S. A Security Architecture for Computational Grids. Proc. 5th ACM Conference on Computer and Communications Security Conference, pp. 83-92, 1998.

2. Отчет о НИР по проекту: «Сетевая среда распределенной обработки данных на основе технологий GRID».

3. Корнеев В.В, Киселев А.В., Семенов Д.В., Сахаров И.Е. Управление метакомпьютерными системами. // Открытые системы. - 2005. - №2.

4. Корнеев В.В. Вычислительные системы. - М.: Гелиос АРВ, 2004.

5. Globus Toolkit 2.4. (http://www.globus.org)

6. Russell Lock, Ian Sommerville. Grid Security and its use of X.509 Certificates. Department of Computer Science Lancaster University. Funded by EPSRC project studentship associated with the UK EPSRC DIRC project grant GR/N13999.

7. Anglano C. et al. - An accounting system for the DataGrid Project v3.0 - DataGrid-01-TED-0115-3_0 - (http://www.to.infn.it/ grid/accounting/Current_prop.pdf).

8. Руководство программиста. Суперкомпьютер МВС 15000ВМ. (www.jscc.ru)

9. Руководство программиста. Грид. (www.jscc.ru)

ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ МНОГОЯДЕРНЫХ ПРОЦЕССОРОВ

Б.М. Шабанов, к.т.н.; П.Н. Телегин, к.т.н.; О.С. Аладышев (МСЦРАН, г. Москва)

В статье рассматриваются модели программирования и модели выполнения программ на кластерах с многоядерными процессорами. Зависимость программных моделей и архитектурных решений для параллельной обработки данных является взаимозависимой. С одной стороны, при разработке новых вычислительных систем учитываются уже имеющийся опыт программирования. С другой стороны, возможности новых вычислительных систем оказывают влияние на развитие методов программирования. Рассматривались модели с явно выраженным способом организации параллельных вычислений: модель с общей памятью и модель на основе передач сообщений [1] многоядерных процессоров.

Рассматривались особенности подготовки параллельных программ для многоядерных процессоров. Проводились исследования с использованием процессоров Intel Xeon 5160 (Woodcrest) и Intel Xeon 5365 (Clovertown).

Процессор Intel Xeon 5160 (Woodcrest) представляет собой двухъядерный процессор с тактовой частотой 3 ГГц. Два процессора используют общий кэш второго уровня объемом 2 МБ и общую шину с частотой 1333 МГц.

Процессор Intel Xeon 5365 (Clovertown) является четырехъядерным процессором с тактовой частотой 3 ГГц и представляет собой два двухъя-дерных процессора Woodcrest, выполненных в одном корпусе. Соответственно, общий кэш объемом 3 МБ используется парой процессоров.

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

На первый взгляд, такая архитектура не отличается от классических SMP-систем. Однако здесь имеются важные особенности: совместное ис-

пользование кэш-памяти двумя процессорами и подключение по шине [2], которые делают крайне важным размещение процессов по процессорам.

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

Рассмотрим подробнее специфические отличия при использовании многоядерных процессоров в высокопроизводительных вычислениях. Они включают в себя конкуренцию за память и сетевые соединения, локальность программ по данным и используемые модели программирования.

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

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

Конфликты по сетевым соединениям. Приложения, требующие высокопроизводительной техники, обычно выполняются на кластерах и используют библиотеки MPI для обмена даны-ми [3]. Большое количество ядер (до 16 в узле в распространенных кластерных системах) приводит к конкуренции за сетевые ресурсы.

Миграция процессов. В узлах, использующих многоядерные процессоры, операционная система

принимает решения о расположении процессов по процессорам. Операционная система пытается поддерживать сбалансированность загрузки процессоров путем миграции процессов по процессорам. Когда процесс помещается на ядро, использующее другой кэш, требуется загрузка кэшпамяти данными заново, при этом снижается производительность. Было протестировано использование опции привязки процесса к процессору на стандартных бенчмарках. Привязка к процессору (Processor Affinity) возможна, в частности, при использовании HPMPI (опция «-cpu_bind»). Результаты показывают, что при использовании привязки процесса к процессору уменьшается дисперсия при измерении времени выполнения программы, однако уменьшения среднего времени выполнения программы не обнаружено. Вполне возможно, что данный результат обусловлен неудачной стандартной привязкой процессов.

Модели программирования. Наиболее широко в высокопроизводительных вычислениях применяется среда MPI, использующая модель с распределенной памятью. В одном узле ядра работают над общей памятью, и MPI производит передачу данных через общую память. При этом также используются модели программирования с общей памятью, такие как нитевое программирование. Наиболее простой способ использовать нити - это набор директив OpenMP [4]. Особый интерес представляет комбинированная модель с нитями внутри узла кластера и с использованием MPI между узлами.

Для выбора параметров параллельной программы (в том числе автоматического) с учетом многоядерной архитектуры рассматривались конфликты по памяти, например, широко используемый случай операции x=x+ai*bi.

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

T =-—-, (1)

Vb • (1 + CR(2-N))

где N - длина вектора для каждого процесса (0<i<N); Vb - скорость считывания данных из памяти.

Для конфликтов по памяти можно использовать коэффициент CR, который определяется для конкретной системы с учетом объема используемых данных. Такой способ позволяет проводить оценки при небольшом использовании вычислительных ресурсов.

Рассмотрим гнездо циклов.

do i1=1, n1

do ik=1, nk

x(i1)=f(i1,...,ik, данные)

епёёо епёёо

Рассмотрим распределение итераций циклов по процессорам. Если итерации не связаны друг с другом, их можно распределять по кластерам и узлам конкретного кластера произвольным образом.

Время выполнения гнезда циклов на разнородной системе при дуплексной передаче данных определяется по формуле:

Тц= тах(тах(ТЦ ,тЦ) +

+max(^Tsse'nd (п^ )-(1+CL(sM)), ETl.(nÎK1+CL(t,s,nS)))),

(2)

где TS - время выполнения части цикла, назначенного на систему s: ТЦ =TSorg+LS/NS (1+CR) +

+T'sendSt (nS)+T''sendtS К); Tsen/(X) - время передачи X байт в из системы s в систему t; TjS - время

t

выполнения одной итерации в системе s; ns - количество передаваемых данных из системы s в систему t; Ns - количество используемых процессоров в системе s; Ls - количество итераций цикла в системе s; TSorg - время организации выполнения цикла в системе s; T sendst(X) - время инициализации передачи данных из системы s в систему t (определяется в первую очередь буферизацией); T sendts(X) - время инициализации передачи приема из системы t в систему s (определяется в первую очередь буферизацией); CL - коэффициент конфликтов по памяти, зависящий от виртуальной системы и объема данных, аналогично формуле (1).

Для определения оптимальной загрузки требуется минимизировать функцию (2). Для этого адаптируются инструментальные средства, построенные на вышеуказанных принципах.

На рисунках 1 и 2 приводятся результаты тестирования умножения матриц в зависимости от размерности на одном и четырех ядрах на системе HP BL460c с использованием процессоров Intel Xeon 5160. Можно видеть, что после заполнения кэш-памяти происходит снижение производительности. Кроме того, видно, что производительность одного ядра при одновременной работе четырех также снижается. Заметим, что при размере блока 256x256 суммарная производительность при использовании четырех ядер практически совпадает с производительностью одного ядра. Это может быть объяснено использованием преимущественно кэш-памяти при использовании одного ядра и преимущественно оперативной памяти при использовании четырех ядер. В нашем случае коэффициент CR в стационарном режиме достигает значения 1,6. Заметим, что пиковые значения про-

3000 2500 2000 1500 1000 500

* * <6*

Рис. 1. Блочное умножение матриц 4096x4096. Зависимость производительности (МФлопс) от размера блока. Занято одно ядро

2000 1500 1000 500

0

* * * ^ #

Рис. 2. Блочное умножение матриц 4096x4096. Зависимость производительности (МФлопс) одного ядра от размера блока. Заняты все ядра

изводительности превышают 3, что объясняется полным заполнением общей кэш-памяти двумя ядрами.

Отдельный вопрос - использование возможностей оптимизации компиляторов и стандартных библиотек. Целесообразность использования библиотек (mkl, goto) зависит от приложения. В част-

ности, для решения задач обращения матриц библиотека функций BLAS [5] хорошо оптимизирована, о чем свидетельствуют результаты тестов Linpack. Для данного примера проводились сравнения использования возможностей оптимизации компилятором непосредственно кода и использования библиотечных функций скалярного произведения векторов (DDOT) и умножения матриц (DGEMM). Использовались библиотеки mkl и goto. Результаты показывают, что в данном случае при правильном выборе размера блока код, оптимизированный компилятором, обеспечивает большую производительность, чем библиотечные функции. Поэтому при реализации программ желательно сравнивать возможности как компиляторов, так и библиотечных функций.

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

Список литературы

1. Телегин П.Н., Шабанов Б.М. Связь моделей программирования и архитектуры параллельных вычислительных систем. // Программные продукты и системы. - 2007. - №2.

2. Douglas Eadline. Optimized HPC Performance: MPI Strategies for Next Generation Quad-Core Intel®Xeon® Processors. (http://basement-supercomputing.com/download/reports/har-pertown-WPl -rev3 .pdf)

3. Савин Г.И., Телегин П.Н., Шабанов Б.М. Кластеры Бео-вульф. // Изв. вузов. Электроника. - 2004. - № 1. - С. 7-12.

4. BLAS (Basic Linear Algebra Subprograms). http://www.netlib.org/blas/

ОСОБЕННОСТИ ПОСТРОЕНИЯ ОБЪЕДИНЕННОЙ СЕТИ СУПЕРКОМПЬЮТЕРНОГО ЦЕНТРА

Над данной статьей работал коллектив авторов, ведущих специалистов МСЦ РАН: Алады-шев О.С., Биктимиров М.Р., Жижченко М.А., Овсянников А.П., Опалев В.М., Шабанов Б.М., Шульга Н.Ю. (г. Москва).

МСЦ РАН является крупнейшим открытым суперкомпьютерным центром в нашей стране. Он имеет несколько технологических площадок в Москве, филиалы в других городах, является головной организацией проекта РИСП, участником проекта GEANT по развитию Европейской высокопроизводительной магистральной научно-исследовательской сетевой инфраструктуры. В работе центра накоплен опыт решения вопросов внешнего сетевого взаимодействия, которые стоят достаточно остро.

На двух технологических площадках в Москве функционируют высокопроизводительные вычис-

лительные кластеры, системы хранения данных и различные информационные ресурсы. Кроме того, имеются два филиала в Санкт-Петербурге и Казани, на которых размещены части распределенного вычислительного кластера МВС15000ВМБ. Для эффективной работы суперкомпьютерного центра требуется объединение всех технологических площадок и филиалов объединенной сетью, обеспечивающей высокоскоростную и надежную связь, гибкость управления и сетевой организации, высокий уровень сетевой безопасности.

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

Процедура прохождения задачи на суперкомпьютере включает постановку задачи в очередь,

i Надоели баннеры? Вы всегда можете отключить рекламу.