Спецификация группы c MPI ранжируется в один процессор - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть приложение MPI (скажем, -np 6), в котором я заранее знаю, что ранги MPI 0, 2,and 3 очень легки в вычислительном отношении по сравнению с рангами 1, 4, and 5, и я хочу сэкономить ресурсы, закрепив ранги 0, 2, and 3 к тому же физическому блоку обработки. Затем пин-код ранжируется 1, 4, and 5 каждый на отдельные физические единицы обработки.

Я знаю, что существует множество разновидностей MPI и синтаксис различен, однако я не могу найти там ничего, что фактически определяет местонахождение отдельных ранги, вместо того, чтобы просто указать униформу 2 ppn или что-то на этот счет. Но я должен представить, что это возможно, я просто не уверен, куда он падает, закрепление? связывание? отображение? и др c.

Спасибо за помощь!

1 Ответ

1 голос
/ 10 апреля 2020

Open MPI поддерживает так называемые файлы рангов, которые определяют отображение каждого ранга на хост и элемент обработки на этом хосте. Вы можете увидеть больше на справочной странице для mpiexec (ссылка на документацию для v2.1, которая поставляется, например, с Ubuntu 18.04 LTS, но по сути такая же в более новых версиях), но при условии, что вы запускаете все на одном хосте, по крайней мере, с четырьмя ядрами процессора, файл ранга будет выглядеть примерно так:

rank 0=hostname slot=0
rank 1=hostname slot=1
rank 2=hostname slot=0
rank 3=hostname slot=0
rank 4=hostname slot=2
rank 5=hostname slot=3

, где hostname - имя хоста, возможно, localhost.

Вот пример:

Во-первых, небольшой служебный скрипт show_affinity, который отображает сродство ЦП текущего ранга MPI:

#!/bin/bash

echo "$OMPI_COMM_WORLD_RANK: $(grep Cpus_allowed_list /proc/self/status)"

Во-вторых, пример rankfile:

rank 0=localhost slot=0
rank 1=localhost slot=1
rank 2=localhost slot=0
rank 3=localhost slot=0
rank 4=localhost slot=2
rank 5=localhost slot=3

Запуск MPI show_affinity с использованием этого файла ранга:

$ mpiexec -H localhost -rf rankfile ./show_affinity
0: Cpus_allowed_list:   0-1
1: Cpus_allowed_list:   2-3
2: Cpus_allowed_list:   0-1
3: Cpus_allowed_list:   0-1
4: Cpus_allowed_list:   4-5
5: Cpus_allowed_list:   6-7

В ЦПУ включена поддержка гиперпоточности, поэтому каждый ранг привязывается к обоим аппаратным потокам.

...