«не удалось найти указанный исполняемый файл» при попытке использовать mpirun на julia

Я пытаюсь запустить свой код julia на нескольких узлах кластера, который использует Moab и Torque для планировщика и диспетчера ресурсов. В интерактивном сеансе, где я запросил 3 узла, я загружаю модули julia и openmpi и запускаю:

mpirun -np 72 --hostfile $PBS_NODEFILE -display-allocation julia --project=.  "./estimation/test.jl"

mpirun успешно распознает мои 3 узла, поскольку отображает:


======================   ALLOCATED NODES   ======================
        comp-bc-0383: slots=24 max_slots=0 slots_inuse=0 state=UP
        comp-bc-0378: slots=24 max_slots=0 slots_inuse=0 state=UNKNOWN
        comp-bc-0372: slots=24 max_slots=0 slots_inuse=0 state=UNKNOWN
=================================================================

Однако после этого он возвращает сообщение об ошибке

--------------------------------------------------------------------------
mpirun was unable to find the specified executable file, and therefore
did not launch the job.  This error was first reported for process
rank 48; it may have occurred for other processes as well.

NOTE: A common cause for this error is misspelling a mpirun command
      line parameter option (remember that mpirun interprets the first
      unrecognized command line token as the executable).

Node:       comp-bc-0372
Executable: /opt/aci/sw/julia/1.5.3_gcc-4.8.5-ips/bin/julia
--------------------------------------------------------------------------

Что может быть возможной причиной этого? Это потому, что у него проблемы с доступом к julia с других узлов? (Я думаю, это так, потому что код работает до тех пор, пока -np X, где x <= 24, что является количеством слотов для одного узла; как только x >= 25, он не запускается)

исполняемый файл (и его зависимости) должен быть доступен на узлах все. Поэтому, если вы не используете общую файловую систему (например, NFS), вам необходимо вручную развернуть исполняемый файл (и его зависимости) на всех узлах.

Gilles Gouaillardet 21.03.2022 06:17

@GillesGouaillardet Еще раз спасибо за комментарий. В настоящее время я проверяю администратора в NFS. Извините, если я делаю что-то глупое, но я также пробовал ssh <other node> module load julia перед командой mpirun, но это все равно не работает. Как бы вы «развернули исполняемый файл вручную»? Это как-то связано с LD_LIBRARY_PATH?

knkn1711 21.03.2022 22:33

Вручную скопируйте двоичный файл и его зависимости в локальную файловую систему на всех узлах.

Gilles Gouaillardet 22.03.2022 00:33

Может быть, это поможет hpc.uni.lu/old/users/howtos/UsingMPIstacksWithModules.html . Короче говоря, вы должны экспортировать переменные с помощью -x PATH -x LD_LIBRARY_PATH, и вы можете попробовать, сработало ли это с which julia вместо julia [...] test.jl

Oskar 22.03.2022 01:27

Спасибо вам обоим. Я попробовал метод @Oskar, и он сработал! Я также смог запустить julia. Он не будет правильно читать мой test.jl, но я думаю, что мне следует немного больше поработать над добавлением моего рабочего каталога julia в оба пути.

knkn1711 22.03.2022 02:04

Я напишу это как ответ тогда

Oskar 22.03.2022 11:54
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот хороший мануал по работе с модулями и mpirun. Использование MPIstacksWithModules

Подводя итог тому, что написано в инструкции:

It should be highlighted that modules are nothing else than a structured way to manage your environment variables; so, whatever hurdles there are about modules, apply equally well about environment variables.

Что вам нужно, так это экспортировать переменные среды в команду mpirun с помощью -x PATH -x LD_LIBRARY_PATH. Чтобы увидеть, сработало ли это, вы можете запустить

mpirun -np 72 --hostfile $PBS_NODEFILE -display-allocation -x PATH -x LD_LIBRARY_PATH which julia

Кроме того, вам следует подумать о том, чтобы указать полный путь к файлу, который вы хотите запустить, поэтому /path/to/estimation/test.jl вместо ./estimation/test.jl, поскольку ваш рабочий каталог не одинаков на каждом узле. (Вообще всегда безопаснее использовать целые пути). Используя целые пути, вы также должны иметь возможность использовать /path/to/julia (это результат which julia) вместо только julia, таким образом вам не нужно экспортировать переменные среды.

Другие вопросы по теме