Я хочу запустить работу MPI в моем кластере Kubernetes. Контекст заключается в том, что я на самом деле запускаю современное, красиво контейнерное приложение, но часть рабочей нагрузки - это устаревшая работа MPI, которая в ближайшее время не будет переписана, и я бы хотел поместить ее в кубернете "мировоззрение" как можно больше.
Один начальный вопрос: кто-нибудь имел успех в выполнении заданий MPI на кластере кубов? Я видел, что Христианский Kniep's работает над тем, чтобы задания MPI выполнялись в контейнерах докеров, но он шел по пути докеры-рой (с открытием сверстников с использованием консула работает в каждом контейнере), и я хочу придерживаться кубернетов (которые уже знают информацию всех сверстников) и вводить эту информацию в контейнер снаружи. У меня есть полный контроль над всеми частями приложения, например. Я могу выбрать, какую реализацию MPI использовать.
У меня есть пара идей о том, как действовать:
-
жировые контейнеры, содержащие slurm и код приложения → населяют slurm.conf с соответствующей информацией о сверстниках в контейнере startup → использовать srun в качестве точки входа контейнера для запуска заданий
-
более тонкие контейнеры с OpenMPI (без slurm) → заполняют rankfile в контейнере с информацией извне (предоставляется kubernetes) → использовать mpirun в качестве точки входа в контейнер
-
даже более тонкий подход, где я в основном "подделываю" время выполнения MPI установка нескольких переменных среды (например, OpenMPI ORTE) → запустите двоичный файл mpicc'd напрямую (где он узнает о своих сверстниках через env vars)
-
некоторая другая опция
-
отказаться от отчаяния
Я знаю, что пытаюсь смешивать "установленные" рабочие процессы, такие как MPI с "новой жаркой" кубернетов и контейнеров, является несоответствием импеданса, но я просто ищу указатели /gotchas, прежде чем идти слишком далеко вниз дорожка. Если ничего не существует, я рад взломать некоторые вещи и отбросить их назад.