Часовня - Проблемы с мультилокальной конфигурацией подложки GASNET MPI - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть общий код с распределенными итераторами в Chapel, и я пытаюсь запустить его на кластере.

Код отлично работает при использовании канала UDP.

Теперь я пытаюсь использовать переносимый MPI в качестве внутреннего слоя - безуспешно.

Вот моя конфигурация:

export CHPL_TASKS=qthreads

export CHPL_COMM=gasnet

export CHPL_COMM_SUBSTRATE=mpi

export CHPL_LAUNCHER=gasnetrun_mpi

только с этой конфигурациейбыл использован только один узел.Глядя на документацию Gasnet, я добавил:

export GASNET_NODEFILE="$(pwd)"/nodes

export MPIRUN_CMD='mpirun -np %N -machinefile %H %C'

(эти данные отсутствуют в официальной документации).

Хорошо, теперь я могу запускать код Chapel с использованием MPI.НО:

1) Каждый узел имеет 32 ядра.Если я поставлю hello6 -nl x, x <33, все процессы будут выполняться по первой локали.</p>

1.1) Я хотел бы запустить hello6 -nl 4, поэтому каждый узел скажет привет из локали x, адрес x.address.

2) Похоже, что Chapel использует $OAR_NODEFILE (возможнодругое) создать вектор Locales, потому что у этого OAR_NODEFILE есть одна запись на ядро ​​для каждого узла.

3) Однако, даже если я изменю вручную, и $GASNET_NODEFILE, и $OAR_NODEFILE, вектор Locale по-прежнему будет содержать одну запись на ядро ​​для каждого узла ЦП.

4) В кластере, к которому у меня есть доступ, я запускаю mpi-коды, например: mpirun -machinefile $OAR_NODEFILE ~/program.Однако GASNET требует синтаксиса последней экспортированной переменной.

Может ли кто-нибудь помочь мне настроить среду выполнения для выполнения моего кода в нескольких локалях?

С уважением,

Tiago Carneiro.

1 Ответ

0 голосов
/ 03 декабря 2018

Предполагается, что вы используете релиз Chapel 1.18 и Open MPI (дайте мне знать, если это не так). В Chapel 1.18 и более ранних версиях была ошибка, когда при использовании Open MPI все экземпляры Chapel были сначала упакованы в один узел.Это было исправлено на master (https://github.com/chapel-lang/chapel/pull/11546), и исправление будет включено в выпуск 1.19.

Вы можете попробовать использовать git master, или вы можете установить MPIRUN_CMD="mpirun --bind-to none --map-by ppr:1:node -np %N %P %A" в качестве обходного пути..

...