GoGPT Best VPN GoSearch

Значок OnWorks

pegasus-mpi-cluster - Интернет в облаке

Запустите pegasus-mpi-cluster в бесплатном хостинг-провайдере OnWorks через Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS

Это команда pegasus-mpi-cluster, которую можно запустить в провайдере бесплатного хостинга OnWorks, используя одну из наших многочисленных бесплатных онлайн-рабочих станций, таких как Ubuntu Online, Fedora Online, онлайн-эмулятор Windows или онлайн-эмулятор MAC OS.

ПРОГРАММА:

ИМЯ


pegasus-mpi-cluster - инструмент для запуска вычислительных рабочих процессов, выраженных в виде групп DAG
(Directed Acyclic Graphs) на вычислительных кластерах с использованием MPI.

СИНТАКСИС


Пегас-MPI-кластер [опции] рабочий процесс.dag

ОПИСАНИЕ


Пегас-MPI-кластер это инструмент, используемый для запуска научных исследований HTC (High Throughput Computing).
рабочие процессы в системах, разработанных для высокопроизводительных вычислений (HPC). Многие системы HPC имеют
нестандартные архитектуры, оптимизированные для тесно связанных параллельных приложений. Эти
системы обычно имеют экзотические сети с малой задержкой, которые предназначены для передачи коротких
очень быстро сообщения между вычислительными узлами. Многие из этих сетей так высоко
оптимизирован так, что вычислительные узлы даже не поддерживают стек TCP / IP. Это делает это
невозможно запускать приложения HTC с помощью программного обеспечения, предназначенного для массового потребления.
кластеры, такие как Кондор.

Пегас-MPI-кластер был разработан для поддержки слабосвязанных приложений HTC, таких как
научные рабочие процессы, чтобы воспользоваться преимуществами систем высокопроизводительных вычислений. Чтобы обойти сеть
проблемы, изложенные выше, Пегас-MPI-кластер использует MPI (интерфейс передачи сообщений),
обычно используемый API для написания параллельных приложений SPMD (Single Process, Multiple Data).
Большинство систем HPC имеют реализацию MPI, которая работает в любой экзотической сети.
архитектура, которую использует система.

An Пегас-MPI-кластер задание состоит из одного главного процесса (этот процесс имеет ранг 0 в
MPI) и несколько рабочих процессов. Главный процесс управляет рабочим процессом и
назначает задачи рабочего процесса работникам для выполнения. Рабочие выполняют задания и возвращаются
результаты мастеру. Любой вывод, записанный в stdout или stderr задачами, фиксируется.
(См. ЗАДАЧА СТДИУМ).

Пегас-MPI-кластер приложения представлены в виде DAG (направленных ациклических графов) (см. DAG
FILES). Каждый узел в графе представляет задачу, а ребра представляют зависимости
между задачами, которые ограничивают порядок, в котором задачи выполняются. Каждая задача - это
программа и набор параметров, которые необходимо запустить (т.е. команда и некоторые необязательные
аргументы). Зависимости обычно представляют зависимости потока данных в
приложение, в котором файлы вывода, созданные одной задачей, необходимы в качестве входных данных для другой.

Если при выполнении DAG возникает ошибка, которая приводит к остановке рабочего процесса, это может быть
перезапускается с помощью файла восстановления, в котором записывается ход рабочего процесса (см. ДЕЖУРНАЯ
FILES). Это позволяет Пегас-MPI-кластер чтобы продолжить рабочий процесс с того места, где он остановился.

Пегас-MPI-кластер был разработан для работы либо как отдельный инструмент, либо как дополнение к
Система управления рабочим процессом Pegasus (WMS). Для получения дополнительной информации об использовании PMC с
Пегас см. Раздел PMC И PEGASUS.

Пегас-MPI-кластер позволяет приложениям, выраженным как DAG, выполняться параллельно на
большое количество вычислительных узлов. Он разработан, чтобы быть простым, легким и надежным.

ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ


-h, --Помогите
Распечатать справочное сообщение

-V, --версия
Информация о версии для печати

-v, --подробный
Увеличьте подробность ведения журнала. Добавление нескольких -v увеличивает уровень больше. По умолчанию
уровень журнала ИНФОРМАЦИЯ, (увидеть ВЕДЕНИЕ ЖУРНАЛА)

-q, --тихий
Уменьшите количество подробностей при ведении журнала. Добавление нескольких -q еще больше снижает уровень. По умолчанию
уровень журнала ИНФОРМАЦИЯ, (увидеть ВЕДЕНИЕ ЖУРНАЛА)

-s, -скип-спасатель
Игнорируйте файл восстановления для рабочий процесс.dag если он существует. Обратите внимание, что Пегас-MPI-кластер
по-прежнему будет создавать новый файл восстановления для текущего запуска. По умолчанию
используйте спасательный файл, если он найден. (видеть ДЕЖУРНАЯ FILES)

-o путь, --stdout путь
Путь к файлу для stdout задачи. (видеть ЗАДАЧА СТДИУМ и --per-task-stdio)

-e путь, --stderr путь
Путь к файлу для задачи stderr. (видеть ЗАДАЧА СТДИУМ и --per-task-stdio)

-m M, --макс-отказы M
Прекратить отправлять новые задачи после M задачи не удались. Один раз M Был достигнут,
Пегас-MPI-кластер завершит выполнение любых запущенных задач, но не
запускать еще какие-то задачи. Эта опция используется для предотвращения Пегас-MPI-кластер от
продолжая выполнять рабочий процесс, который страдает систематической ошибкой, такой как
отсутствует двоичный файл или неверный путь. По умолчанию для M равно 0, что означает неограниченный
сбои допускаются.

-t T, --пытается T
Попытка запустить каждую задачу T раз, прежде чем пометить задачу как неудавшуюся. Обратите внимание, что T
попытки не считаются неудачными для целей -m вариант. Задача только
считается неудачным, если попытаться T раз и все T попытки приводят к ненулевому
код выхода. Значение T должно быть не менее 1. Значение по умолчанию - 1.

-n, --нолок
Не блокируйте DAGFILE. По умолчанию, Пегас-MPI-кластер попытается получить
эксклюзивная блокировка DAGFILE, чтобы несколько заданий MPI не запускали один и тот же DAG в
в то же время. Если указана эта опция, то блокировка не будет получена.

-r, --спасать путь
Путь к спасательному журналу. Если файл существует, и -s не указан, то журнал будет
используется для восстановления состояния рабочего процесса. После чтения файл обрезается и
на его месте создается новый журнал спасения. По умолчанию добавляется .спасать в DAG
имя файла. (видеть ДЕЖУРНАЯ FILES)

--host-скрипт путь
Путь к сценарию или исполняемому файлу для запуска на каждом уникальном хосте, который Пегас-MPI-кластер
работает. Этот путь также можно установить с помощью среды PMC_HOST_SCRIPT
Переменная. (видеть ВЕДУЩИЙ СЦЕНАРИИ)

- хост-память размер
Объем доступной памяти на каждом хосте в МБ. По умолчанию определяется сумма
физической RAM автоматически. Это значение также можно установить с помощью PMC_HOST_MEMORY
переменная окружения. (видеть НА РЕСУРСНОЙ ОСНОВЕ РАСПИСАНИЕ)

--хост-процессор процессоры
Количество процессоров, доступных на каждом хосте. По умолчанию определяется количество ЦП.
ядра автоматически. Это значение также можно установить с помощью среды PMC_HOST_CPUS.
Переменная. (видеть НА РЕСУРСНОЙ ОСНОВЕ РАСПИСАНИЕ)

--strict-limits
Это позволяет установить строгие ограничения на использование памяти для задач. Когда указан этот параметр, и
задача пытается выделить больше памяти, чем было запрошено в DAG, память
операция распределения завершится неудачно.

--max-настенное время минут
Это максимальное количество минут, которое Пегас-MPI-кластер позволит рабочий процесс
бежать. Когда истечет это время Пегас-MPI-кластер прервет рабочий процесс и объединит
все файлы stdout / stderr рабочих. Значение указывается в минутах, а
по умолчанию - неограниченное время на стене. Эта опция была добавлена, чтобы вывод рабочего процесса
будет записываться, даже если рабочий процесс превышает максимальное время пакетного задания. Этот
значение также можно установить с помощью переменной среды PMC_MAX_WALL_TIME.

--per-task-stdio
Это заставляет PMC генерировать файлы .out.XXX и .err.XXX для каждой задачи вместо
запись задачи stdout / stderr в --stdout и --stderr. Имена файлов
«TASKNAME.out.XXX» и «TASKNAME.err.XXX», где «TASKNAME» - это имя задачи.
из группы DAG, а «XXX» - это порядковый номер, который увеличивается каждый раз, когда задача
пытался. Этот параметр переопределяет значения для --stdout и --stderr. Этот аргумент
используется Pegasus, когда рабочие процессы планируются в режиме только PMC, чтобы облегчить отладку
и мониторинг.

--jobstate-журнал
Эта опция заставляет PMC создавать файл jobstate.log для рабочего процесса. Файл
называется "jobstate.log" и помещается в тот же каталог, где находится файл DAG.
расположена. Если файл уже существует, PMC добавляет новые строки в существующий файл.
Эта опция используется Pegasus, когда рабочие процессы планируются в режиме только PMC, чтобы
облегчить мониторинг.

--monitord-взломать
Эта опция заставляет PMC генерировать файл .dagman.out для рабочего процесса. Этот файл
имитирует содержимое файла .dagman.out, созданного Condor DAGMan. Смысл
этот вариант - обмануть monitord, заставив его думать, что он имеет дело с DAGMan, чтобы
он будет генерировать соответствующие события для заполнения базы данных STAMPEDE для
в целях мониторинга. Файл называется «DAG.dagman.out», где «DAG» - это путь к
PMC DAG файл.

--нет-ресурс-журнал
Не создавайте рабочий процесс.dag.resource файл для рабочего процесса.

--no-sleep-on-recv
Не используйте опрос с помощью sleep () для реализации приема сообщений. (видеть Известный Вопросы: ЦП
Применение)

--maxfds
Установите максимальное количество файловых дескрипторов, которые мастер может оставить открытыми для ввода-вывода.
пересылка. По умолчанию это значение устанавливается автоматически на основе значения
getrlimit (RLIMIT_NOFILE). Значение должно быть не менее 1 и не может быть больше
РЛИМИТ_НОФИЛЬ.

- аффинити
По умолчанию PMC пытается сбросить соответствие ЦП и памяти. Это сделано для того, чтобы
все доступные процессоры и память могут использоваться задачами PMC в системах, которые не
настроен правильно. Этот флаг указывает PMC сохранить настройки привязки, унаследованные от
его родитель. Обратите внимание, что политику памяти можно очистить только в том случае, если PMC был скомпилирован с
libnuma. Сходство с ЦП очищается с помощью sched_setaffinity (), а политика памяти
очищено с set_mempolicy ().

DAG FILES


Пегас-MPI-кластер рабочие процессы выражаются в простом текстовом формате, похожем на
который используется Condor DAGMan. В файле DAG разрешены только два типа записей: ЗАДАЧА
и EDGE. Любые пустые строки в DAG (строки со всеми пробелами) игнорируются,
как и любые строки, начинающиеся с # (обратите внимание, что # может появляться только в начале строки,
не посередине).

Формат ЗАДАЧА запись:

"ЗАДАЧА" id [параметры ...] исполняемый файл [аргументы ...]

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

ЗАДАЧА t01 -m 10 -c 2 / bin / program -a -b

В этом примере указывается задача t01 для работы требуется 10 МБ памяти и 2 процессора
/ bin / программа с аргументами -a и -b. Доступные варианты задач:

-m M, --запрос-память M
Объем памяти, необходимый для задачи, в МБ. По умолчанию 0, что означает память.
не рассматривается для этой задачи. Этот параметр можно настроить для задания в DAX с помощью
указание профиля pegasus :: pmc_request_memory. (видеть НА РЕСУРСНОЙ ОСНОВЕ РАСПИСАНИЕ)

-c N, --запрос-процессор N
Количество процессоров, необходимых для выполнения задачи. Значение по умолчанию - 1, что означает, что
количество слотов на хосте должно быть меньше или равно количеству физических процессоров
для использования всех слотов. Этот параметр можно настроить для задания в DAX с помощью
указание профиля pegasus :: pmc_request_cpus. (видеть НА РЕСУРСНОЙ ОСНОВЕ РАСПИСАНИЕ)

-t T, --пытается T
Количество попыток выполнить задачу до окончательного отказа. Это
эквивалент уровня задачи --пытается параметр командной строки.

-p P, - приоритет P
Приоритетность задачи. P должно быть целым числом. Большие значения имеют более высокий приоритет.
По умолчанию - 0. Приоритеты - это просто подсказки и не строгие - если задача не может быть выполнена.
соответствует доступному слоту (например, из-за доступности ресурсов), но с более низким приоритетом
задача может, тогда задача будет отложена и будет выполнена задача с более низким приоритетом.
Этот параметр можно установить для задания в DAX, указав pegasus :: pmc_priority.
профиль.

-f VAR = FILE, --pipe-вперед VAR = FILE
Перенаправить ввод / вывод в файл ФАЙЛОВ использование каналов для связи с задачей. Окружающая среда
переменная VAR будет установлено значение дескриптора файла для канала, к которому
задача может писать, чтобы получить данные в ФАЙЛОВ. Например, если в задаче указано: -f
FOO = / tmp / foo, тогда переменной среды FOO для задачи будет присвоено число
(например, 3), представляющий файл / tmp / foo. Чтобы указать этот аргумент в
Pegasus DAX вам необходимо установить профиль pegasus :: pmc_arguments (обратите внимание, что значение
pmc_arguments должен содержать часть аргумента "-f", поэтому допустимое значение будет:
-f A = / tmp / a ). (видеть Ввода / вывода
Пересылка)

-F SRC = DEST, --file-forward SRC = DEST
Перенаправить ввод-вывод в файл НАЗНАЧЕНИЕ из файла SRC. Когда задача завершается, рабочий
будет читать данные из SRC и отправьте мастеру, где он будет записан в
файл НАЗНАЧЕНИЕ, После SRC прочитано удалено. Чтобы указать этот аргумент в
Pegasus DAX вам необходимо настроить профиль pegasus :: pmc_arguments. (видеть Ввода / вывода Пересылка)

Формат EDGE запись:

"EDGE" родитель-ребенок

где родителя - это идентификатор родительской задачи, а ребенок - идентификатор дочерней задачи. An
пример EDGE запись:

КРОМКА t01 t02

Простой рабочий процесс в форме ромба будет выглядеть так:

# алмаз.даг
ЗАДАЧА А / bin / echo "Я А"
ЗАДАЧА B / bin / echo "Я Б"
ЗАДАЧА C / bin / echo "Я C"
ЗАДАЧА D / bin / echo "Я D"

EDGE AB
EDGE AC
EDGE BD
EDGE CD

ДЕЖУРНАЯ FILES


При запуске группы доступности базы данных может возникать множество различных типов ошибок. Одна или несколько задач могут
сбой, задание MPI может исчерпать время, Пегас-MPI-кластер может сегфолт (мы надеемся
нет), может произойти сбой системы и т. д. Чтобы гарантировать, что DAG не нужно
перезапущен с самого начала после ошибки, Пегас-MPI-кластер генерирует спасательный файл
для каждого рабочего процесса.

Файл аварийного восстановления - это простой текстовый файл, в котором перечислены все задачи рабочего процесса, которые
закончили успешно. Этот файл обновляется каждый раз, когда задача завершается, и сбрасывается.
периодически, чтобы в случае сбоя рабочего процесса и его перезапуска пользователем, Пегас-MPI-кластер
может определить, какие задачи еще необходимо выполнить. Таким образом, спасательный файл представляет собой своего рода
журнал транзакций для рабочего процесса.

Спасательный файл содержит ноль или более записей DONE. Формат этих записей:

«СДЕЛАНО» * taskid *

где идентификатор задачи это идентификатор задачи, которая завершилась успешно.

По умолчанию файлы аварийного восстановления называются DAGNAME.rescue в котором ДАГНАЗВАНИЕ это путь к входу
DAG файл. Имя файла можно изменить, указав -r аргумент.

PMC И PEGASUS


. PMC для Pegasus Сложность задачи Кластеризация
PMC можно использовать в качестве оболочки для выполнения кластерных заданий в Pegasus. В этом режиме
Pegasus группирует несколько задач вместе и отправляет их как единое кластерное задание на
удаленная система. Затем PMC выполняет отдельные задачи в кластере и возвращает
результаты.

PMC можно указать в качестве диспетчера задач для кластерных заданий в Pegasus тремя способами:

1. Глобально в файле свойств

Пользователь может установить свойство в файле свойств, что приведет к получению всех кластеризованных
задания рабочего процесса, выполняемые ЧУП. В файле свойств Pegasus укажите:

#PEGASUS PROPERTIES ФАЙЛ
pegasus.clusterer.job.aggregator = mpiexec

В приведенном выше примере все кластерные задания на всех удаленных сайтах будут запускаться через
PMC до тех пор, пока значение свойства не переопределено в каталоге сайта.

2. Установив ключ профиля job.aggregator в каталоге сайта:


...
mpiexec


В приведенном выше примере все кластерные задания на siteX будут выполняться через
PMC, пока значение не переопределено в каталоге преобразований.

3. Установив ключ профиля job.aggregator в каталоге трансформации:

тр Б {
сайт сайтX {
pfn "/ путь / к / mytask"
арка "x86"
ОС "Linux"
типа "УСТАНОВЛЕННЫЙ"
профиль пегас "кластеры. размер" "3"
профиль pegasus "job.aggregator" "mpiexec"
}
}

В приведенном выше примере все кластерные задания для преобразования B на siteX будут
выполняется через PMC.

Обычно необходимо иметь запись pegasus :: mpiexec в вашем каталоге преобразований.
который указывает а) путь к PMC на удаленном сайте и б) соответствующие профили глобуса
такие как xcount, host_xcount и maxwalltime для управления размером задания MPI. Эта запись
будет выглядеть так:

tr pegasus :: mpiexec {
сайт сайтX {
pfn "/ путь / к / pegasus-mpi-cluster"
арка "x86"
ОС "Linux"
типа "УСТАНОВЛЕННЫЙ"
профиль глобус "maxwalltime" "240"
профиль глобус "host_xcount" "1"
профиль глобус "xcount" "32"
}
}

Если эта запись каталога преобразований не указана, Pegasus попытается создать
путь по умолчанию на основе профиля среды PEGASUS_HOME, указанного на сайте
каталог для удаленного сайта.

PMC можно использовать как с горизонтальной кластеризацией, так и с кластеризацией на основе меток в Pegasus, но мы
рекомендуют использовать кластеризацию на основе меток, чтобы можно было
сгруппированы в одно задание PMC, а не только на один уровень рабочего процесса.

Pegasus Профили для PMC
Есть несколько профилей Pegasus, которые соответствуют параметрам задач PMC:

pmc_request_memory
Этот профиль используется для установки параметра задачи --request-memory и обычно указывается
в DAX или каталоге преобразований.

pmc_request_cpus
Этот ключ используется для установки параметра задачи --request-cpus и обычно указывается в параметре
DAX или каталог преобразований.

pmc_priority
Этот ключ используется для установки параметра задачи --priority и обычно указывается в
ДАКС.

Эти профили используются Pegasus при генерации входного DAG PMC, когда PMC используется как
диспетчер задач для кластерных заданий в Pegasus.

Профили можно указать в DAX следующим образом:


-a 1 -b 2 -c 3
...
1024
4
10


В этом примере указывается задача PMC, для которой требуется 1 ГБ памяти и 4 ядра, а также
приоритет 10. Это создает задачу в PMC DAG, которая выглядит следующим образом:

ЗАДАЧА mytask_ID00000001 -m 1024 -c 4 -p 10 / путь / к / mytask -a 1 -b 2 -c 3

. PMC для Весь Pegasus DAX
Pegasus также можно настроить для запуска всего рабочего процесса как одного задания PMC. В этом
режим Pegasus будет генерировать один PMC DAG для всего рабочего процесса, а также PBS
сценарий, который можно использовать для отправки рабочего процесса.

В отличие от использования PMC в качестве инструмента кластеризации задач, в этом режиме нет заданий в
рабочий процесс выполняется без PMC. Весь рабочий процесс, включая вспомогательные работы, такие как
создание каталогов и передача файлов управляется PMC. Если Pegasus настроен в этом
mode, то DAGMan и Condor не требуются.

Чтобы работать в режиме только PMC, установите для свойства pegasus.code.generator значение PMC в Pegasus.
файл свойств:

pegasus.code.generator = PMC

Чтобы отправить полученное задание PBS, вам может потребоваться внести изменения в файл .pbs.
генерируется Pegasus, чтобы заставить его работать с вашим кластером. Этот режим экспериментальный и
широко не использовался.

ВЕДЕНИЕ ЖУРНАЛА


По умолчанию все сообщения журнала выводятся в stderr. Если вы включите ведение журнала с помощью
-v тогда вы можете закончить тем, что много stderr будет перенаправлено от рабочих к
мастер.

Уровни журнала в порядке серьезности: FATAL, ERROR, WARN, INFO, DEBUG и TRACE.

Уровень ведения журнала по умолчанию - ИНФОРМАЦИЯ. Уровни регистрации могут быть увеличены с помощью -v и
уменьшился с -q.

ЗАДАЧА СТДИУМ


По умолчанию stdout и stderr задач будут перенаправлены на stdout мастера и
stderr. Вы можете изменить путь к этим файлам с помощью -o и -e аргументы. Вы также можете
включить файлы stdio для каждой задачи с помощью --per-task-stdio аргумент. Обратите внимание, что если для каждой задачи
файлы stdio не используются, тогда stdio всех рабочих будет объединен в один выходной и один
err мастер в конце, поэтому ввод-вывод от разных рабочих не будет чередоваться,
но ввод-вывод от каждого рабочего будет отображаться в том порядке, в котором он был сгенерирован. Также обратите внимание, что,
если задание не удается по какой-либо причине, выходы не будут объединены, а вместо этого будут
один файл для каждого рабочего с именем DAGFILE.out.X и DAGFILE.err.X, где DAGFILE - это путь
на вход DAG и X это звание рабочего.

ВЕДУЩИЙ СЦЕНАРИИ


Сценарий хоста - это сценарий оболочки или исполняемый файл, который Пегас-MPI-кластер запускает на каждом
уникальный хост, на котором он запущен. Их можно использовать для запуска вспомогательных служб, таких как
memcached, необходимого для выполнения задач рабочего процесса.

Скрипты хоста указываются с помощью --host-скрипт аргумент или PMC_HOST_SCRIPT
переменная среды.

Хост-скрипт запускается, когда Пегас-MPI-кластер запускается и должен выходить с кодом выхода
0 до того, как какие-либо задачи могут быть выполнены. Если сценарий хоста возвращает ненулевой код выхода,
затем рабочий процесс прерывается. Сценарию хоста дается 60 секунд на выполнение любой настройки, которая
обязательный. Если он не выходит в течение 60 секунд, сигнал SIGALRM доставляется на
процесс, который, если его не обработать, приведет к завершению процесса.

Когда рабочий процесс завершится, Пегас-MPI-кластер доставит сигнал SIGTERM на хост
группа процессов скрипта. Любые дочерние процессы, оставленные запущенными сценарием хоста, получат
этот сигнал, если они не создали свою собственную группу процессов. Если остались какие-то процессы
чтобы получить этот сигнал, им будет дано несколько секунд на выход, затем они будут
отправил SIGKILL. Это механизм, с помощью которого процессы, запущенные хост-скриптом, могут быть
проинформирован о прекращении рабочего процесса.

НА РЕСУРСНОЙ ОСНОВЕ РАСПИСАНИЕ


Ресурсы высокопроизводительных вычислений часто имеют низкое соотношение памяти к процессорам. В то же
время, задачи рабочего процесса часто требуют больших объемов памяти. Часто требования к памяти
задачи рабочего процесса превышают объем памяти, доступной каждому ЦП на данном узле. Как
В результате может потребоваться отключить некоторые процессоры, чтобы освободить достаточно памяти для работы
задачи. Точно так же многие коды поддерживают многоядерные хосты. В этом случае это
необходимо для эффективности, чтобы гарантировать, что количество ядер, необходимое для выполнения задач
на хосте не превышайте количество ядер, доступных на этом хосте.

Чтобы сделать этот процесс более эффективным, Пегас-MPI-кластер поддерживает ресурсные
планирование. При планировании на основе ресурсов задачи в рабочем процессе могут указывать, сколько
память и сколько процессоров им требуется, и Пегас-MPI-кластер запланирует их так, чтобы
задачи, выполняемые на данном хосте, не превышают объем физической памяти и процессоров
доступный. Это позволяет Пегас-MPI-кластер чтобы воспользоваться всеми доступными процессорами
когда требования к памяти низки, но также отключают некоторые ЦП, когда задачи '
требования к памяти выше. Это также обеспечивает рабочие процессы со смесью одноядерных и
многоядерные задачи для выполнения на гетерогенном пуле.

Если нет доступных хостов с достаточным объемом памяти и процессоров для выполнения одного из
задач в рабочем процессе, то рабочий процесс прерывается.

Память
Пользователи могут указать как объем памяти, необходимый для каждой задачи, так и объем памяти.
доступно для каждого хоста. Если объем памяти, требуемый какой-либо задачей, превышает доступный
память всех хостов, то рабочий процесс будет прерван. По умолчанию память хоста
определяется автоматически, однако пользователь может указать - хост-память "лгать"
Пегас-MPI-кластер. Объем памяти, необходимый для каждой задачи, указан в DAG.
используя -m/--запрос-память аргумент (см. DAG Файлы).

процессоры
Пользователи могут указать количество процессоров, необходимых для каждой задачи, и общее количество процессоров.
доступно на каждом хосте. Если количество процессоров, необходимых для задачи, превышает доступное
ЦП на всех хостах, рабочий процесс будет прерван. По умолчанию количество процессоров на
хост определяется автоматически, но пользователь может указать --хост-процессор чрезмерно или
подписаться ниже хоста. Количество процессоров, необходимых для каждой задачи, указано в
DAG с помощью -c/--запрос-процессор аргумент (см. DAG Файлы).

Ввода / вывода Пересылка


В рабочих процессах, в которых есть много мелких задач, обычно ввод-вывод, написанный этими задачами.
быть очень маленьким. Например, рабочий процесс может содержать 10,000 XNUMX задач, каждая из которых записывает несколько КБ.
данных. Обычно каждая задача записывает в свой файл, в результате получается 10,000 XNUMX файлов. Этот ввод / вывод
шаблон очень неэффективен во многих параллельных файловых системах, поскольку требует, чтобы файл
система для обработки большого количества операций с метаданными, которые являются узким местом во многих
параллельные файловые системы.

Один из способов решения этой проблемы - записать все 10,000 XNUMX задач в один файл. В
Проблема с этим подходом заключается в том, что он требует, чтобы эти задачи синхронизировали свой доступ к
файл, использующий блокировки POSIX или какой-либо другой механизм взаимного исключения. В противном случае пишет
из разных задач могут чередоваться в произвольном порядке, что приводит к непригодным для использования данным.

Для решения этого варианта использования PMC реализует функцию, которую мы называем «Перенаправление ввода-вывода».
Перенаправление ввода-вывода позволяет каждой задаче в задании PMC записывать данные в произвольное количество
общие файлы безопасным способом. Это достигается за счет того, что рабочие процессы PMC собирают данные.
написанные задачей, и отправить его по высокоскоростной сети с помощью обмена сообщениями MPI на
мастер-процесс PMC, где он записывается в выходной файл. Имея один процесс (
Главный процесс PMC) записать в файл все операции ввода-вывода из многих параллельных задач, которые могут быть
синхронизируется и безопасно записывается в файлы.

Есть два разных способа использования перенаправления ввода-вывода в PMC: каналы и файлы. Трубы больше
эффективен, но файлы проще в использовании.

Ввода / вывода пересылка через трубы
Перенаправление ввода-вывода с помощью каналов работает благодаря тому, что рабочие процессы PMC собирают данные для каждой задачи.
с использованием каналов UNIX. Этот подход более эффективен, чем файловый подход, но он
требует, чтобы код задачи был изменен так, чтобы задача записывала в канал вместо
обычный файл.

Чтобы использовать переадресацию ввода-вывода, задаче PMC просто необходимо указать -f / - труба вперед
аргумент для указания имени файла для пересылки данных и имени файла
переменная среды, через которую рабочий процесс PMC может сообщить ему о файле
дескриптор канала.

Например, если есть задача «mytask», которая должна переслать данные в два файла:
«myfile.a» и «myfile.b», это будет выглядеть так:

ЗАДАЧА mytask -f A = / tmp / myfile.a -f B = / tmp / myfile.b / bin / mytask

Когда запускается процесс / bin / mytask, в его окружении будут две переменные: "A = 3"
и "B = 4", например. Значением этих переменных является номер файлового дескриптора
соответствующие файлы. В этом случае, если задача хочет записать в "/tmp/myfile.a", она получает
значение переменной среды «A» и вызывает функцию write () для этого номера дескриптора. В C
код для этого выглядит так:

char * A = getenv («А»);
int fd = atoi (А);
char * message = "Привет, мир \ n";
написать (fd, сообщение, StrLen(сообщение));

В некоторых языках программирования невозможно напрямую писать в файловый дескриптор.
Фортран, например, обращается к файлам по номеру устройства, а не использует файловые дескрипторы. В
на этих языках вы можете связать функции CI / O с вашим двоичным кодом и вызывать их из
подпрограммы, написанные на другом языке, или вы можете открыть специальный файл в Linux / Proc
файловая система, чтобы получить другой дескриптор канала, к которому вы хотите получить доступ. Для последнего файл
вы должны открыть это "/ proc / self / fd / NUMBER", где NUMBER - это номер дескриптора файла, который вы
получен из переменной окружения. В приведенном выше примере канал для myfile.a
(переменная среды A) - «/ proc / self / fd / 3».

Если вы используете пегас-кикстарт, что, вероятно, имеет место, если вы используете PMC для
Рабочий процесс Pegasus, то есть уловка, которую вы можете сделать, чтобы избежать изменения вашего кода. Ты используешь
/ Proc файловая система, как описано выше, но вы позволяете pegasus-kickstart обрабатывать путь
строительство. Например, если в вашем приложении есть аргумент -o, который позволяет вам
укажите выходной файл, тогда вы можете написать свою задачу следующим образом:

ЗАДАЧА mytask -f A = / tmp / myfile.a / bin / pegasus-kickstart / bin / mytask -o / proc / self / fd /$A

В этом случае pegasus-kickstart заменит $ A в аргументах вашего приложения на
номер дескриптора файла, который вы хотите. Ваш код может нормально открыть этот путь, записать на него и
затем закройте его, как если бы это был обычный файл.

Ввода / вывода пересылка через файлов
Перенаправление ввода-вывода с файлами работает, когда задачи записывают данные в файлы на локальном диске.
Рабочий процесс PMC считывает эти файлы и пересылает данные мастеру, где он может
быть записанным в желаемый выходной файл. Этот подход может быть намного менее эффективным, чем использование
каналы, потому что в нем задействована файловая система, у которой больше накладных расходов, чем у канала.

Пересылку файлов можно включить, указав -F / - пересылка файла аргумент к задаче.

Рассмотрим пример:

ЗАДАЧА mytask -F /tmp/foo.0=/scratch/foo / bin / mytask -o /tmp/foo.0

В этом случае рабочий процесс ожидает найти файл /tmp/foo.0 при выходе из mytask.
успешно. Он считывает данные из этого файла и отправляет их мастеру для записи в
конец / scratch / foo. После чтения /tmp/foo.0 он будет удален рабочим
процесса.

Этот подход лучше всего работает в системах, где локальный диск представляет собой файловую систему RAM, например Cray.
Машины XT. В качестве альтернативы в задаче можно использовать / dev / shm на обычном Linux-кластере. Это могло бы
также относительно эффективно работают на локальном диске, если кеш файловой системы может
поглощают все операции чтения и записи.

Ввода / вывода пересылка предостережений
При использовании перенаправления ввода-вывода важно учитывать несколько предостережений.

Во-первых, если задание PMC не удается по какой-либо причине (в том числе, когда рабочий процесс прерывается для
нарушение --max-настенное время), то файлы, содержащие перенаправленный ввод-вывод, могут быть повреждены. Они
может включать частично учет, что означает, что только часть ввода-вывода от одной или нескольких задач была
написано, и они могут включать дублировать учет, что означает, что ввод-вывод был записан, но
Задание PMC завершилось неудачно, прежде чем задача могла быть отмечена как успешная, и рабочий процесс был
перезапустился позже. В этом случае мы не даем никаких гарантий относительно содержимого файлов данных.
Это зависит от кода, который читает файлы для а) обнаружения и б) устранения таких проблем.
Для исключения дубликатов записи должны включать уникальный идентификатор, а для исключения
partials записи должны включать контрольную сумму.

Во-вторых, вы не должны использовать переадресацию ввода-вывода, если ваша задача будет записывать много данных в
файл. Поскольку работник PMC считывает данные из канала / файла в память и отправляет
это в сообщении MPI, если вы напишете слишком много, рабочий процесс запустит систему
недостаточно памяти. Кроме того, все данные должны уместиться в одном сообщении MPI. В трубном экспедировании
жестких ограничений на размер нет, но при пересылке файлов ограничение составляет 1 МБ. У нас нет
проверил производительность при больших объемах ввода-вывода, но все, что больше 1 МБ, вероятно,
перебор. В любом случае, если размер ваших данных превышает 1 МБ, переадресация ввода-вывода, вероятно, не будет
в любом случае иметь большую выгоду в производительности.

В-третьих, ввод-вывод не записывается в файл, если задача возвращает ненулевой код выхода. Мы
Предположим, что если задача не удалась, вы не хотите получать данные, которые она произвела.

В-четвертых, не чередуются данные из разных задач. Все данные, записанные
данная задача будет последовательно появляться в выходном файле. Обратите внимание, что вы все еще можете получить
частичные записи, однако, если появляются какие-либо данные из задачи, они никогда не будут разделены между
несмежные диапазоны в выходном файле. Если у вас есть 3 задачи, в которых написано: «Я - задача», вы
можно получить:

Я задачая задачая задача

а также:

Я задача

но нет:

Я задача

В-пятых, данные из разных задач появляются в выходном файле в произвольном порядке. По-разному
в каком порядке задачи были выполнены PMC, что может быть произвольным, если нет
зависимости между задачами. Записываемые данные должны содержать достаточно информации.
что вы можете определить, какая задача его произвела, если вам это нужно. ЧВК не
добавлять к данным любые заголовки или трейлеры.

В-шестых, задача будет отмечена как успешная только в том случае, если все ее операции ввода-вывода были успешно выполнены.
написано. Если рабочий процесс завершился успешно, то ввод-вывод гарантированно был
написано.

В-седьмых, если мастер не может писать в выходной файл по какой-либо причине (например,
master пытается записать ввод-вывод в целевой файл, но вызов write () возвращает
error), то задача помечается как неудачная, даже если задача выдала ненулевой код выхода. В
Другими словами, вы можете получить ненулевую запись кикстарта, даже если PMC отмечает, что задача не выполнена.

В-восьмых, каналы предназначены только для записи. Если вам нужно читать и записывать данные из файла, который вы
следует использовать пересылку файлов, а не пересылку по каналу.

В-девятых, все файлы открываются мастером в режиме добавления. Это для того, чтобы, если рабочий процесс
сбой и должен быть перезапущен, или, если задача не удалась и была повторена, данные, которые были
написанное ранее не потеряно. PMC никогда не усекает файлы. Это одна из причин
почему в выходном файле могут быть частичные и повторяющиеся записи.

Наконец, при пересылке файлов выходной файл удаляется при выходе из задачи. Тебе нельзя
полагаться на то, что файл будет там при выполнении следующей задачи, даже если вы запишете его в общий файл
системы.

РАЗНОЕ


Ресурс использование
В конце выполнения рабочего процесса мастер сообщит об использовании ресурсов
работа. Это делается путем суммирования общего времени выполнения всех выполненных задач (включая
невыполненные задачи) и деление на общее время выполнения задания на время N, где N - оба
общее количество процессов, включая мастера, и общее количество рабочих. Эти двое
значения использования ресурсов предоставляются, чтобы пользователи могли понять, как
эффективно они используют выделенные ресурсы. Низкое использование ресурсов
значения предполагают, что пользователь должен использовать меньше ядер и более продолжительное время на стене при будущих запусках,
в то время как высокие значения использования ресурсов предполагают, что пользователь может использовать больше ядер для
будущие пробеги и получите более короткое время стены.

KNOWN ВОПРОСЫ


вилка () и exec ()
Чтобы рабочие процессы запускали задачи на вычислительном узле, вычислительные узлы
должен поддерживать вилка () и exec () системные вызовы. Если ваша целевая машина запускает
урезанная ОС на вычислительных узлах, которая не поддерживает эти системные вызовы, затем
Пегас-MPI-кластер не будет работать.

ЦП Применение
Многие реализации MPI оптимизированы таким образом, чтобы отправляемые и получаемые сообщения выполняли ожидание.
(т.е. они вращают / опрашивают отправленное или полученное сообщение, а не спят). Причина в том, что
этот спящий режим увеличивает накладные расходы, и, поскольку многие системы HPC используют разделение пространства на выделенных
аппаратное обеспечение, другие процессы не конкурируют, поэтому вращение вместо сна может
производят лучшую производительность. В этих реализациях процессы MPI будут работать на 100% ЦП.
использование, даже когда они просто ждут сообщения. Это большая проблема для многоядерности
задачи в Пегас-MPI-кластер потому что свободные слоты потребляют ресурсы ЦП. Чтобы решить
Эта проблема Пегас-MPI-кластер обрабатывает засыпание на короткий период между проверками
ожидающие сообщения. Это значительно снижает нагрузку, но вызывает небольшую задержку в
получение сообщений. Если вы используете реализацию MPI, которая спит при отправке сообщения и
получать вместо того, чтобы делать занятое ожидание, вы можете отключить спящий режим, указав
--no-sleep-on-recv вариант. Учтите, что мастер всегда будет спать, если --max-настенное время is
указан, потому что нет способа прервать или иным образом отключить блокирующий вызов в MPI
(например, SIGALRM не заставляет MPI_Recv возвращать EINTR).

ОКРУЖАЮЩАЯ СРЕДА ПЕРЕМЕННЫЕ


Переменные среды ниже - это псевдонимы для параметров командной строки. Если окружающая среда
переменная присутствует, то она используется по умолчанию для соответствующей опции. Если оба
присутствует, то используется параметр командной строки.

PMC_HOST_SCRIPT
Псевдоним для --host-скрипт опцию.

PMC_HOST_MEMORY
Псевдоним для - хост-память опцию.

PMC_HOST_CPUS
Псевдоним для --хост-процессор опцию.

PMC_MAX_WALL_TIME
Псевдоним для --max-настенное время опцию.

Используйте pegasus-mpi-cluster онлайн с помощью сервисов onworks.net


Бесплатные серверы и рабочие станции

Скачать приложения для Windows и Linux

Команды Linux

Ad




×
Реклама
❤️Совершайте покупки, бронируйте или заказывайте здесь — никаких затрат, что помогает поддерживать бесплатность услуг.