【问题标题】:Shipping mpiexec/mpirun along with static binary将 mpiexec/mpirun 与静态二进制文件一起发送
【发布时间】:2013-10-05 05:43:03
【问题描述】:

我有一个使用 MPI 的并行代码。使用此代码的正确方法是从 PC/Cluster 上的源代码编译,然后运行为:

mpiexec -n X ./application -options

不幸的是,有些使用此代码的人受到 *nix 挑战,他们发现从源代码构建有点令人生畏(不要问为什么)。这些用户只在自己的台式机/笔记本电脑上使用代码。

对于这样的用户,我只需编译一个静态二进制文件(在一个足够老的操作系统上使用足够老的 glibc,它可以在大多数运行 Linux 的 PC 上运行)。然后用户可以按如下方式运行代码:

./application -options

所以现在我的问题是如何将 mpiexec/mpirun 与我的静态二进制文件一起发布,以便用户可以执行以下操作:

./mpiexec -n 2 ./application -options

这样,他们还可以利用桌面上的多个内核。到目前为止,我一直在告诉他们做正确的事情,即安装 MPI 并从源代码编译我的代码。

通过一些测试,我发现如果我编译 hydra 并将 mpiexec.hydrahydra_pmi_proxy 一起发送,那么我可以运行代码如下:

./mpiexec.hydra -n 2 ./application -options

但我不确定这是否是正确的方法?这会导致任何问题吗?我正在考虑对 Windoze 二进制文件(在 Cygwin 中运行)做同样的事情。

另一种选择是预先构建所有内容的 VBox 图像,但下载大文件会成为问题。

【问题讨论】:

    标签: mpi binaryfiles openmpi mpich


    【解决方案1】:

    由于您使用的是 Hydra,我假设您使用的是 MPICH 或基于它的东西。

    仅提供一小部分完整安装的问题是可能会丢失功能。您可以假设不愿意自己设置 MPI 的用户只会使用某些功能,如果需要更多功能,只需告诉他们正确安装即可。

    还有一个更令人担忧的情况需要考虑。如果他们已经安装了 MPI,但它不是您要运送的,您需要确定您的 MPI 是第一个找到的。在 Windows 中,只需将二进制文件和库放在同一个文件夹中,Windows 会首先找到它们。 Linux 有点棘手,但你可以操纵 PATH 和 LD_LIBRARY_PATH 来获得你的第一个。另一种选择是将 mpirun 调用包装在脚本中。这样可以更轻松地设置您想要的路径,并且更高级的用户可以简单地忽略它。

    【讨论】:

      猜你喜欢
      • 2014-10-06
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多