4

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

这背后的背景:我想使用符合 DRMAA 的 API 从 Java 将作业提交到新设置的 linux 集群。集群由PBS/Torque管理。Torque 包括用于 Torque/PBS 的 PBS DRMAA 1.0 库,其中包含 DRMA-C 绑定并在 libdrmaa.so 和 .a 二进制文件中提供。我知道 Sun Grid Engine 包含一个提供 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 unsatisfied link error)。

结论:这样不行!经过一番搜索,我只看到以下几个选项:

  1. 在 Globus 工具包上安装 GridWay。安装在 PBS 之上的 GridWay 声称以 Java 提供 DRMAA。对于我的设置来说,看起来太复杂了。
  2. 报废 DRMAA,通过从 Java 调用系统命令 qsub、qstat 等提交给 PBS。简单但不是很好。
  3. 自己实现一个 drmaa 绑定。太复杂了...

  4. 切换到网格引擎。在我看来,GE 在语言绑定方面优于 PBS。

我倾向于选择选项 2。或 4。有什么建议吗?

4

3 回答 3

3

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

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

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

关于提到的选项:

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

  2. 使用系统命令,qsub、qstat、qdel。优点:快速 hack 缺点:肮脏的 hack,需要为输出实现解析器,如果出现问题可能不会注意到,从 stdin/stdout/stderr 传递消息,不可移植

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

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

  5. 更改来自不同供应商的现有 drmaa 库。不知道这是否可行......我们也会对此进行调查。

于 2010-04-29T13:58:17.447 回答
2

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

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

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

于 2013-06-07T03:58:30.523 回答
1

你有没有决定如何处理这个?您是否设法让 Java DRMAA 绑定与 Torque/PBS 一起使用?我正在寻找一些在 Torque/PBS 系统上工作的 Java DRMAA 代码,如果你已经完成了艰苦的工作,我很想窃取它。

但是,如果你没有,做一些 Java 绑定应该不会太糟糕,如果没有其他人做,我会做。几年前,我成功地修改了 SGE 的 DRMAA Java 绑定,以使用 Xgrid 的新 DRMAA 实现(现在已经过时,但可能很快就会恢复)。

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

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

于 2010-09-02T16:11:33.813 回答