Ошибка drmaa с движком Sun Grid - Нет активного сеанса
Привет, я установил gridengine на кластер из 4 узлов, используя следующую команду:
sudo apt-get install gridengine-client gridengine-qmon gridengine-exec gridengine-master
sudo apt-get install gridengine-exec gridengine-client
И он вернулся:
SGE_ROOT: /var/lib/gridengine
SGE_CELL: bms
Поэтому я сделал все необходимые шаги для настройки gridengine, и он работает.
Однако я хочу выполнить свою работу, используя библиотеку python drmaa, и я установил ее на главном узле:
sudo apt-get install libdrmaa-dev
pip install drmaa
Так что, если я запросить систему с помощью следующего скрипта:
#!/usr/bin/env python
import drmaa
def main():
"""Query the system."""
s = drmaa.Session()
s.initialize()
print 'A DRMAA object was created'
print 'Supported contact strings: ' + s.contact
print 'Supported DRM systems: ' + str(s.drmsInfo)
print 'Supported DRMAA implementations: ' + str(s.drmaaImplementation)
print 'Version ' + str(s.version)
print 'Exiting'
s.exit()
if __name__=='__main__':
main()
Возвращает:
A DRMAA object was created
Supported contact strings: session=NGS-1.9217.1679116461
Supported DRM systems: GE 6.2u5
Supported DRMAA implementations: GE 6.2u5
Version 1.0
Exiting
Но если я попытаюсь запустить работу с помощью сценария, предложенного по ссылке: http://code.google.com/p/drmaa-python/wiki/Tutorial
Возвращается
drmaa.errors.NoActiveSessionException: code 5: No active session
Кто-нибудь может мне помочь? В чем дело. Библиотека drmaa может взаимодействовать с gridengine, но не может выполнять работу. Почему это вызывает эту ошибку? Я был бы очень признателен за любую помощь.
1 ответ
Вы обнаружите, что пример запуска задания с использованием DRMAA не инициализирует сеанс, поэтому просто добавьте s.initialize() после создания нового сеанса s = drmaa.Session() следующим образом:
#!/usr/bin/env python
import drmaa
import os
def main():
"""Submit a job.
Note, need file called sleeper.sh in current directory.
"""
s = drmaa.Session()
s.initialize()
print 'Creating job template'
jt = s.createJobTemplate()
jt.remoteCommand = os.getcwd() + '/sleeper.sh'
jt.args = ['42','Simon says:']
jt.joinFiles=True
jobid = s.runJob(jt)
print 'Your job has been submitted with id ' + jobid
print 'Cleaning up'
s.deleteJobTemplate(jt)
s.exit()
if __name__=='__main__':
main()