1

我尝试将我的程序与集群一起使用。现在我创建小作业,并使用 bash 脚本将其提交给特定节点。这些作业将一个大文件复制到节点,在该文件上执行 5 个其他程序,最后该作业将文件复制回来并在节点上将其删除。

这个提交作业的 bash 脚本检查给定目录中有多少硬盘是可用的,计算可以在该节点上运行的最大作业数,并将该作业数发送到该特定节点。这种方法的缺点是我必须在所有作业完成后多次运行这个 bash 脚本。

现在我想用 python 和 drmaa api 做到这一点。但现在我想知道它是否能够使用这个 api 进行节点控制。是否可以使用 drmaa api 提交到特定节点?

或者我是否必须使用 Popen 编写一个解决方法来执行 qsub 命令并通过解析 qstat 命令的输出来获取每个节点的作业数?

4

1 回答 1

2

我不熟悉 Python 的 drmaa api,但如果它为您提供了一种指定限制的方法,您可以使用限制来限制作业将在其上运行的主机。也许使用类似 nativeSpecification 的东西来传递-l hostname=whatever

http://www.gridengine.eu/programming-apis

设置 DRMAA 标准未定义的作业提交参数很容易:可以使用 DRMAA 标准化的本地规范设置它们,该规范在 Go 中的 SetNativeSpecification() 作业模板方法中。

于 2013-09-15T19:50:59.910 回答