Как сообщить Кондору отправлять задания только машинам в кластере, которые на них установлены "numpy"?

Я просто вычислил, как отправлять задания для обработки на машинах в кластере, используя Condor. Поскольку у нас много машин, и не каждая из этих машин настроена одинаково, мне было интересно:

Можно ли сообщить кондору только для отправки моих заданий (скриптов python) на компьютеры, у которых есть numpy, установленный на них, поскольку мой script зависит от этого пакета?

Ответ 1

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

Чтобы рекламировать его в машинном классе, вы можете либо скопировать его в каждый конфигурационный файл конфигуратора машины, добавив что-то вроде этого:

has_numpy = True
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY

... или еще лучше, вы можете сказать, что Condor динамически обнаруживает его во время выполнения с помощью script и рекламирует результат с помощью startd classad hook. Чтобы сделать это, установите простой has_numpy script на каждой машине следующим образом:

#!/usr/bin/env python
try:
   import numpy
except ImportError:
   print "has_numpy = False"
else:
   print "has_numpy = True"

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

HASNUMPY = /usr/libexec/condor/has_numpy
STARTD_CRON_JOBLIST = $(STARTD_CRON_JOBLIST) HASNUMPY
STARTD_CRON_HASNUMPY_EXECUTABLE = $(HASNUMPY)
STARTD_CRON_HASNUMPY_PERIOD = 300

... а затем ta-da (после перенастройки) ваши машины будут динамически обнаруживать и сообщать, установлено ли numpy и доступно для скриптов python.

Тогда вам просто нужно добавить соответствующее требование к вашей отправке файлов, например:

Requirements = (has_numpy == True)

... и ваша работа будет выполняться только на машинах, на которых установлен numpy.

Ответ 2

Вам нужно? В соответствии с инструкцией кондор:

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

Для меня это означает, что если машина, подающая задание, установила numpy, она должна работать.