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

背后的背景是:我想使用符合DRMAA的API将作业提交给Java的新设置Linux群集。集群由 PBS/扭矩. 。扭矩包括PBS DRMAA 1.0库,用于包含DRMA-C结合的扭矩/PB,并在libdrmaa.so和.a二进制中提供。我知道Sun Grid Engine包括Drmaa.jar提供Java-Drmaa API。实际上,我选择使用SGE,但决定先尝试PBS。

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

编辑:我刚刚尝试了Sun Grid Engine包装中的Drmaa.jar,并试图与PBS Libdrmaa.so交叉使用。毫不奇怪,失败(JNI不满足的链接错误)。

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

  1. 安装Globus工具包的网格道。 Gridway已安装了PBS的Ontop,声称可以在Java提供Drmaa。对于我的设置来说,看起来太复杂了。
  2. 从Java调用System Command QSUB,QSTAT等来提交DRMAA,提交给PBS。简单,但不太好。
  3. 我自己实施drmaa约束。太复杂了...

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

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

有帮助吗?

解决方案

经过更多的搜索,看起来我必须自己写东西。似乎还没有最佳的答案,但是对于那些尝试这样的人来说,它可以作为警告。

提出这些问题的最佳场所可能是扭矩邮件列表:www.clusterresources.com/resources/mailing-lists.php

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

关于提到的选项:

  1. 使用网格/Globus工具包: 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实现(希望)缺点:涉及编译的代码,大量的手动包装C函数(也许可以自动化这一点)

  4. 切换到另一个网格引擎。可能,我们应该以前做过此分析。但是,我们已经有了其他扭矩群,并且有经验。操作两个将创建更多的异质基础架构。

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

其他提示

我也有这个问题。这是一个针对PBS/扭矩创建面向对象的C ++和Java Drmaa绑定的项目。

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

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

您是否曾经决定该怎么办?您是否设法使Java Drmaa绑定使用扭矩/PBS?我希望获得一些在扭矩/PBS系统上工作的Java Drmaa代码,如果您已经完成了艰苦的工作,我很想偷它。

但是,如果没有,那么制作一些Java绑定还不错,如果没有其他人这样做,我会做的。几年前,我成功地修改了SGE的Drmaa Java绑定,以与Xgrid的新DRMAA实施合作(现在是Stale,但也许很快要复活)。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top