#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'
Вопросы
- Возможно ли это через интерфейс 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
поле в шаблоне задания.