Обновление от 02 декабря 2010 года. Пожалуйста, обратите внимание, что информация в дополнении E, «Mapping», 2-го издания книги «IBM System Blue Gene Solution: Blue Gene/P Application Development» в той ее части, которая касалась размещения MPI-процессов по процессорам Blue Gene/P в режимах VN и DUAL, в настоящее время является неактуальной. На текущий момент следует использовать данные из приложения F, «Mapping», 4-го издания этой книги. Представленный ниже текст отражает актуальную информацию.
В контексте Blue Gene/P отображением процессов называют распределение MPI-процессов между физическими процессорами (ядрами). Сетевая топология системы представляет из себя трехмерную сетку или трехмерный тор с прямыми связями с каждым из двух ближайших вычислительных узлов по X-, Y- и Z-направлениям (всего шесть соседей). Если коммуникации преимущественно состоят в общении с соседними процессорами, можно добиться производительности, близкой к пиковой. В некоторых случаях можно так распределить MPI-процессы, чтобы обмены происходили только между расположенными на соседних процессорах. За счет можно добиться значительной масштабируемости приложения, что особенно важно при большом числе процессоров.
Если задача запущена в SMP-режиме, каждому узлу сопоставляется лишь один MPI-процесс, который помещается на ядро номер 0. В этом случае, по умолчанию, MPI-процессы размещаются в XYZT-порядке, где <X,Y,Z> — это координаты процессора в трехмерном торе, а T — номер ядра в вычислительном узле (T = 0, 1, 2, 3). А именно:
Дальнейшая нумерация продолжается по этой же схеме: быстрее всего изменяется координата X, далее — Y и, наконец, — Z.
В VN- и DUAL-режимах, по умолчанию, используется TXYZ-порядок (а не XYZT-порядок, как говорилось ранее). Например, в VN-режиме первые четыре MPI-процесса попадают на ядра 0, 1, 2, 3 первого вычислительного узла, следующие четыре — на ядра 0, 1, 2, 3 второго вычислительного узла, и так далее, причем вычислительное узлы выбираются в XYZ-порядке.
На Blue Gene/P предопределены следующие 12 отображений:
Т.е. измерение T может самым быстро или самым медленно изменяющимся, при этом для остальных измерений возможны все комбинации.
Например, для аппаратного раздела 4 x 4 x 2 при TXYZ-порядке отображение MPI-процессов 0–7 на координаты <X,Y,Z,T> будет выглядеть как
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
X | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
Y | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Z | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
T | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 |
А отображение в XYZT-порядке для того же раздела будет таким:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
---|---|---|---|---|---|---|---|---|
X | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 |
Y | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
Z | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
T | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Каким именно методом будет специфицировано отображение определяется на этапе запуска задачи. Команда mpirun поддерживает следующие способы спецификации отображения через аргументы командной строки.
Наибольшую гибкость обеспечивает использование использование файла с информацие об отображении. Он имеет следующий простой синтаксис. Число строк в нем равно числу MPI-процессов. В каждой строке записано четыре целых неотрицательных числа, разделенных пробелами. Каждая четверка чисел определяет координаты <X,Y,Z,T> в трехмерном торе для MPI-процесса, которому соответствует данная строка: первая строка — MPI-процессу номер 0, вторая — MPI-процессу номер 1, и т. д. Необходимо, чтобы содержание файла было непротиворечивым, а именно, чтобы существовало взаимнооднозначное соответствие между номером MPI-процесса и <X,Y,Z,T>-положением.
Для приложений, которые используют одно-, двух-, трех- или четырехмерную логическую декомпозицию, как правило, получается отобразить MPI-процессы на физические процессоры так, чтобы сохранить локальность коммуникаций. Например, для одномерной процессорной топологии, когда каждый MPI-процесс обменивается данными только с двумя соседями, XYZT-отображение, которое используется по умолчанию, будет достаточным при условии, что размер раздела достаточен для замыкания топологии трехмерной решетки в тор.
Замыкание топологии трехмерной решетки в тор возможно на разделах, размер которых равен или кратен размеру midplane'а: 8 x 8 x 8 = 512 вычислительных узлов. Если решетка замкнута в тор, то для упомянутой одномерной задачи XYZT-порядок сохранит локальность коммуникаций всюду, за исключением ребер тора, на которых возникает дополнительный отрезок пути. Для разделов меньших размеров, например, для раздела, состоящего из 64 вычислительных узлов (топология трехмерной решетки 4 x 4 x 4) вместо отображения по умолчанию лучше задать змеевидное отображение с помощью файла.
В общем случае размерности трехмерных решеток при увеличении размера раздела изменяются следующим образом:
Так как на системе Blue Gene/P, установленной на факультете ВМК МГУ, минимальный раздел состоит из 128 вычислительных узлов, то размерности 4 x 4 x 2 и 4 x 4 x 4 на ней недоступны.
Чтобы указать конкретную размерность решетки при использовании 1024 процессорных узлов, в командном файле планировщика необходимо указать bg_rotate=false
и bg_shape=8x8x16
, либо bg_shape=8x16x8
.
В дополнении C, «Files on architectural features», 2-го издания книги «IBM System Blue Gene Solution: Blue Gene/P Application Development» (см. ссылки на официальную документацию) приведен код, с помощью которого можно узнать размерность раздела на этапе исполнения программы.
Текст составлен на основе материала дополнения E, «Mapping», 2-го издания книги «IBM System Blue Gene Solution: Blue Gene/P Application Development»