【问题标题】:ompi_evesel->dispatch() failed when running OpenMPI process from Java ProcessBuilder从 Java ProcessBuilder 运行 OpenMPI 进程时,ompi_evesel->dispatch() 失败
【发布时间】:2013-07-23 08:15:28
【问题描述】:

我正在尝试创建一个 Java GUI 来控制和运行 MPI 进程。我可以从命令行运行 MPI 进程,但无法通过 Java Process Builder 运行。

进程开始后我立即收到以下错误:

[SCI053_VM003:02928] ..\..\openmpi-1.6.4\opal\event\event.c: ompi_evesel->dispatch() failed.

我怀疑存在环境问题,但我不确定如何诊断。我已将 java 进程构建器看到的环境以及 mpiexec 进程看到的环境打印到日志中,但我没有发现任何问题!?!?

所有代码和输出日志都贴在gist

我正在尝试使用为MPI4PY 打包的 OpenMPI 1.6.4 在 Windows 环境中运行

似乎主要是一个 OpenMPI 问题,所以我发布到 UserList,但希望能在任何我能得到它的地方得到帮助...

大卫

PS - 我能够在我的 MacOS 环境中运行 Java 程序来启动和运行相同的代码,但是我使用 brew 安装的 MPICH2。

【问题讨论】:

  • 我今天将测试使用 python 子进程调用 mpiexec。如果这被证明是一个可行的中介 Java ProcessBuilder => Python Subprocess => OpenMPI MPIExec => 运行我的并行应用程序......我会使用它,但它并不能真正回答我的问题(或赏金)
  • 更新:我写了一个简短的 python 程序来调用 mpiexec 或你传递的任何命令。它在命令行中效果很好:
  • 更新:我写了一个简短的 python 程序来调用 mpiexec 或你传递的任何命令。 gist.github.com/dstuebe/6170563 它非常适合作为从命令行运行任何程序的间接方式,但是当我在 Java 中的 ProcessBuilder 中使用它时,它会以同样的方式失败!

标签: java python windows processbuilder openmpi


【解决方案1】:

我怀疑问题是因为您使用的是 Windows。我不记得 OpenMPI 何时停止支持 Windows,但在某些时候确实如此。您可以尝试使用适用于 Windows 的 Microsoft 的 MPICH 端口,看看是否满足您的需要。我不记得 URL 了,但你可以在 MPICH 下载页面 (http://www.mpich.org/downloads/) 找到端口。

【讨论】:

  • 如果我在 cmd 窗口中运行该作业,它会起作用 - 我不会称它为终端,因为它太糟糕了......但它在 Windows 中“起作用”,只是当我从 java 执行它。
  • 啊。那么在这种情况下,我的专业知识就会丢失。我远非 Windows/Java 人。
  • 如果我需要找一个精通 Windows、Java 和 OpenMPI 更不用说 Python 和 MPI4py 的人,我想我可能会被搞砸......
  • 是的,不幸的是,真正尝试在 Windows 中使用 MPI 的人并不多。实际上已经没有任何大型 Windows 集群了,所以没有人认真对待它。
【解决方案2】:

我也不能直接说出原因,但我对 java 下系统进程的经验是最好由其他人处理。

这是我的建议。调用外部应用程序时,我总是使用您的 apache commins exec。 基础教程链接http://commons.apache.org/proper/commons-exec/tutorial.html 希望它有所帮助。它易于实现和使用。

刚刚读完你的要点。我缺少的是,您设置工作目录的位置。 尝试将工作目录设置为可以从命令行启动的目录。

【讨论】:

  • 我可以从命令行在同一个工作目录中运行就好了。您可以在 env.py 的输出中看到工作目录——它执行得很好——但是 MPI 出错了,并且像 bcast.py 这样的 mpi 程序将无法工作。我将尝试 apache commons-exec 作为最后的手段。我已经有很多围绕 ProcessBuilder 编写的代码。感谢您的帮助!
【解决方案3】:

当你从cmd.exe成功运行mpiexec.exe时,你在哪个目录?我对您的输出日志中显示的 LD_LIBRARY_PATH 很好奇...奇怪的是在 Windows 上设置了 LD_LIBRARY_PATH:

LD_LIBRARY_PATH=C:\Python27\Lib\site-packages\mpi4py\bin/../lib:C:\Python27\Lib\site-packages\mpi4py\bin\..\lib

当您将 PATH 变量设置为指向 MPI bin 和 lib 目录时,是否可以从 Windows 启动 mpiexec.exe? these Open MPI instructions apply 我不肯定,但他们提到设置 PATH 环境变量。

【讨论】:

  • 尝试将路径添加到 ProcessBuilder 环境,我可以在 env.py 的输出中看到它,但我仍然从 mpiexec 收到错误。
猜你喜欢
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 2023-03-08
  • 2017-02-04
  • 1970-01-01
相关资源
最近更新 更多