Получите множество работ с интерфейсом DRMAA
Используя интерфейс DRMAA для Son of 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'
Вопросы
- Возможно ли это через интерфейс DRMAA? Глядя на спецификацию, кажется, что нет, но я решил спросить
- Если так, то как?
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
поле в шаблоне работы.