Как и любой другой атрибут машины, вам просто нужно объявить его в классе машины, а затем потребовать от ваших заданий.
Чтобы рекламировать его в машинном классе, вы можете либо жестко запрограммировать его в конфигурационный файл condor каждой машины, добавив что-то вроде этого:
has_numpy = True
STARTD_EXPRS = $(STARTD_EXPRS) HAS_NUMPY
... или еще лучше, вы можете указать Condor динамически обнаруживать его во время выполнения с помощью сценария и рекламировать результат через ловушка startd classad. Для этого установите на каждую машину простой has_numpy
скрипт, например:
#!/usr/bin/env python
try:
import numpy
except ImportError:
print "has_numpy = False"
else:
print "has_numpy = True"
... а затем скажите Condor запускать его каждые пять минут и вставлять результаты в startd classad, добавив следующее в файл конфигурации condor машины:
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.
30.03.2012