是否有人知道可以与PBS / Torque集群软件一起使用的DRMAA-API的Java实现?
其背后的背景:我想使用兼容DRMAA的API将作业从Java提交到新设置的Linux集群。集群由PBS/Torque管理。 Torque包含适用于Torque / PBS的PBS DRMAA 1.0库,该库包含DRMA-C绑定并提供libdrmaa.so和.a二进制文件。我知道Sun网格引擎包括提供Java-DRMAA API的drmaa.jar。实际上,我选择使用SGE,但决定先尝试PBS。
该决定背后的理论是:
“DRMAA是一种标准,因此Java API仅需要符合标准的drmaa-c绑定。”但是,我找不到这样的“通用DRMAA-C-java API”,现在假设此假设是错误的,并且Java库是特定于引擎的。
编辑:
我刚刚尝试了使用Sun Grid Engine软件包中的drmaa.jar,并尝试将其与pbs libdrmaa.so交叉使用。毫不奇怪,它失败了(JNI不满意的链接错误)。
结论:这种方式行不通!经过一番搜索,我只看到以下几个选项:
工具包。安装在PBS的顶部,
GridWay声称将在
Java。对于我来说看起来太复杂了
设置。
调用系统命令qsub,qstat,
等等。简单但并非如此
很好
太复杂了...
意见优于PBS
关于语言绑定。
我倾向于选择选项2或4。有什么建议吗?
最佳答案
经过更多搜索后,看来我必须自己写点东西。似乎还没有最佳答案,但是它可以对尝试这样做的人发出警告。
提出这些问题的最佳地点可能是Torque邮件列表:www.clusterresources.com/resources/mailing-lists.php
首先,不能仅使用任何DRMAA-Java库并将其与任何DRMAA-C实现一起使用的原因是:
DRMAA描述了资源控制的接口,而不是实现方式。供应商可以使用DRMAA-C实现,并且仅使用这些功能,但不必这样做。它可以使用引擎中的任何东西。因此,一个重要的信息是:如果您需要某些语言绑定,请确保它们在所有所需的语言中都存在。
关于上述选项:
优点:Gridway是一个元调度程序,它支持许多资源管理系统(SGE,PBS等)。可能是目前使DRMAA接口与PBS一起使用的唯一方法。
劣势:似乎增加了层次和复杂性。没有经验。
优势:快速破解
劣势:肮脏的hack,需要为输出实现解析器,可能不会注意到是否出了问题,传递来自stdin / stdout / stderr的消息,而不是可移植的
优点:可以提供完整的drmaa实现(希望如此)
缺点:涉及编译代码,很多手动包装C函数(也许可以自动包装)