是否有人知道可以与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不满意的链接错误)。

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

  • 在Globus的顶部安装GridWay
    工具包。安装在PBS的顶部,
    GridWay声称将在
    Java。对于我来说看起来太复杂了
    设置。
  • 报废DRMAA,通过提交给PBS
    调用系统命令qsub,qstat,
    等等。简单但并非如此
    很好
  • 实现绑定我的drmaa。
    太复杂了...
  • 切换到Grid Engine。 GE在我
    意见优于PBS
    关于语言绑定。

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

    最佳答案

    经过更多搜索后,看来我必须自己写点东西。似乎还没有最佳答案,但是它可以对尝试这样做的人发出警告。

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

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

    关于上述选项:

  • 使用GridWay / Globus工具包:http://www.gridway.org/doku.php?id=start
    优点:Gridway是一个元调度程序,它支持许多资源管理系统(SGE,PBS等)。可能是目前使DRMAA接口与PBS一起使用的唯一方法。
    劣势:似乎增加了层次和复杂性。没有经验。
  • 使用系统命令qsub,qstat,qdel。
    优势:快速破解
    劣势:肮脏的hack,需要为输出实现解析器,可能不会注意到是否出了问题,传递来自stdin / stdout / stderr的消息,而不是可移植的
  • 使用JNI,应该可以为drmaa.c中的每个c函数创建一个绑定。
    优点:可以提供完整的drmaa实现(希望如此)
    缺点:涉及编译代码,很多手动包装C函数(也许可以自动包装)
  • 切换到另一个网格引擎。可能,我们之前应该做过此分析。但是,我们已经有了另一个Torque集群,并且对此已有经验。运营两个将创建更多异构的基础架构。
  • 更改其他供应商提供的现有drmaa库。不知道这是否可行...我们也会对此进行研究。
  • 09-11 18:11