是否有与Torque / PBS一起使用的DRMAA Java库?

时间:2010-04-26 16:51:13

标签: java cluster-computing pbs grid-computing drmaa

有人知道可以使用PBS / Torque集群软件的DRMAA-API的Java实现吗?

背后的背景:我想使用符合DRMAA的API从Java向新设置的Linux集群提交作业。群集由PBS/Torque管理。扭矩包括用于Torque / PBS的PBS DRMAA 1.0库,其包含DRMA-C绑定并在libdrmaa.so和.a二进制文件中提供。我知道Sun Grid引擎包含一个提供Java-DRMAA API的drmaa.jar。事实上我选择使用SGE,但决定先尝试使用PBS。

该决定背后的理论是:
'DRMAA是标准,因此Java API只需要符合标准的drmaa-c绑定。但是,我找不到这样的'通用DRMAA-C-java API',现在假设这个假设是错误的,并且Java库是引擎特定的。

编辑: 我刚刚试验了来自sun grid engine package的drmaa.jar,并试图与pbs libdrmaa.so交叉使用它。毫不奇怪,失败了(JNI不满意链接错误)。

结论:它不起作用!经过一些搜索后,我只看到以下几个选项:

  1. 在Globus上安装GridWay 工具包。安装在PBS上, GridWay声称提供DRMAA Java的。看起来对我来说太复杂了 设置。
  2. Scrap DRMAA,提交给PBS 调用系统命令qsub,qstat, 等来自Java。简单但不是这样 不错。
  3. 自己实施drmaa绑定。 太复杂了......

  4. 切换到Grid Engine。 GE在我的 意见优于PBS 关于语言绑定。

  5. 我倾向于选择选项2或4.任何建议?

3 个答案:

答案 0 :(得分:3)

经过一些搜索,看起来我必须自己写点东西。似乎还没有最佳答案,但它可以作为对那些尝试相同的人的警告。

提出这些问题的最佳地点可能是Torque邮件列表:www.clusterresources.com/resources/mailing-lists.php

首先,您不能仅使用任何DRMAA-Java库并将其与任何DRMAA-C实现一起使用的原因是: DRMAA描述了资源控制的接口,而不是它的实现方式。供应商可以使用DRMAA-C实现并仅使用这些功能,但他们不必这样做。它可以使用引擎中的任何内容。因此,一条重要信息是:如果您需要某些语言绑定,请确保它们适用于所需的所有语言。

关于提到的选项:

  1. 使用GridWay / Globus Toolkit:http://www.gridway.org/doku.php?id=start 优点:Gridway是一个元调度程序,支持许多资源管理系统(SGE,PBS,...)。可能是目前使用DRMAA界面与PBS协同工作的唯一方法。 缺点:这似乎是层次和复杂性的膨胀。没有经验。

  2. 使用系统命令qsub,qstat,qdel。 优点:快速入侵 缺点:脏黑客,需要为输出实现解析器,如果出现问题可能不会注意到,从stdin / stdout / stderr传递消息,而不是便携式

  3. 使用JNI应该可以为drmaa.c中的每个c函数创建一个绑定 优势:将提供完整的drmaa实施(希望如此) Disadvanteges:涉及编译代码,大量手动包装C函数(也许这可以自动化)

  4. 切换到另一个网格引擎。可能我们之前应该做过这个分析。但是,我们已经拥有另一个Torque集群,并且有经验。运营两个将创建更多的异构基础架构。

  5. 从其他供应商更改现有drmaa库。不知道这是否可行......我们也会研究这个问题。

答案 1 :(得分:2)

我也有这个问题。 这是一个为PBS / Torque创建面向对象的C ++和Java DRMAA绑定的项目。

缺点是您必须能够加载从C ++代码创建的库,因此它不是“纯Java”实现,只能作为.jar文件分发,期望最终用户提供“ libdrmaa.so“他们自己。

对于它的价值,这里是: https://github.com/bryan-lunt/PBSJavaDRMAA/

答案 2 :(得分:1)

你有没有决定如何处理这件事?您是否设法将Java DRMAA绑定与Torque / PBS配合使用?我希望在Torque / PBS系统上使用一些Java DRMAA代码,如果你已经完成了艰苦的工作,我很想偷它。

但是,如果你没有,那么制作一些Java绑定应该不会太糟糕,如果没有其他人这样做,我会这样做。几年前,我成功修改了SGE的DRMAA Java绑定,以便为Xgrid使用新的DRMAA实现(现在已经陈旧,但很快就会恢复)。

我甚至写了一篇关于我的经历的简短博客文章(包括一般说明的链接):

http://edbaskerville.com/2006/07/11/java-bindings-working/