Получить хост запущенного задания с интерфейсом DRMAA

#python #sungridengine #drmaa

#python #sungridengine #drmaa

Вопрос:

Используя интерфейс DRMAA для сына Grid Engine, я хотел бы получить имя хоста, выполняющего определенное задание. Я хотел бы что-то вроде следующего (используя drmaa-python интерфейс)

 >>> import drmaa
>>> s = drmaa.Session()
>>> s.initialize()

>>> jt = s.createJobTemplate()
>>> jt.remoteCommand = 'sleep'
>>> jt.args = ['100']

>>> jobid = s.runJob(jt)
>>> jobid
'1'
>>> s.jobStatus(jobid)
'running'

>>> s.the_function_I_want(jobid)
'worker-host-123'
 

Вопросы

  1. Возможно ли это через интерфейс DRMAA? Глядя на спецификацию, кажется, что нет, но я подумал, что все равно спрошу
  2. Если да, то как?

Ответ №1:

Короткий ответ: Вы правы, это невозможно.

Длинный ответ:

drmaa-python Библиотека действует как оболочка для базовой реализации C API DRMAAv1 (см. https://www.ogf.org/documents/GFD.130.pdf ). Такая библиотека C обычно поставляется вместе с вашей кластерной платформой. DRMAAv1 не поддерживает стандартизированный мониторинг заданий, и поэтому как библиотека DRMAAv1 C, так и библиотека Python не могут получить эту информацию.

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

Вторая версия DRMAA (https://www.ogf.org/documents/GFD.231.pdf ) поддерживает мониторинг. На момент написания единственная известная реализация поставляется с Univa GridEngine, и для нее нет существующей реализации-оболочки Python.

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