sun grid engine 的 drmaa 错误 - 没有活动会话

0 投票
1 回答
639 浏览
提问于 2025-04-18 08:12

你好,我在一个有4个节点的集群上安装了gridengine,使用的命令是:

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#Running_a_Job

它返回:

drmaa.errors.NoActiveSessionException: code 5: No active session

有人能帮我吗?出什么问题了?drmaa库看起来能够和gridengine通信,但就是无法运行任务。为什么会出现这个错误?我非常感谢任何帮助。

1 个回答

0

你会发现,使用DRMAA运行作业的例子没有初始化会话。所以在创建新会话后,记得加上 s.initialize(),就像下面这样:

#!/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()

撰写回答