2013-09-29 35 views
1

我有一个使用MPI的并行代码。使用此代码正确的方法是从源代码编译在PC /群集,然后根据运行:将mpiexec/mpirun与静态二进制文件一起运输

mpiexec -n X ./application -options 

遗憾的是有些人利用这个代码* nix的挑战,谁找到源代码构建一个有点令人生畏(不要问为什么)。这些用户只能在自己的台式机/笔记本电脑上使用该代码。

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

./application -options 

所以现在我的问题是,我如何才能发货程序mpiexec /的mpirun我的静态二进制文件一起,以便用户可以这样做:

./mpiexec -n 2 ./application -options 

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

做一些测试中,我发现,如果我hydra_pmi_proxy一起编译水螅和船舶mpiexec.hydra然后我可以按以下方式运行代码:

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

但我不知道这是正确的做法?这会造成任何问题吗?我正在考虑为Windoze二进制文件(在Cygwin中运行)做同样的事情。

另一种选择是VBox映像,其中包含所有预构建的内容,但是随后下载大文件成为问题。

回答

0

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

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

虽然有更多的关注情况需要考虑。如果他们已经安装了MPI,而且这不是您要发货的那个,那么您需要确定您的是第一个找到的。在Windows中,只需将您的二进制文件和库放在同一个文件夹中,Windows就会首先找到它们。 Linux有点棘手,但你可以操作PATH和LD_LIBRARY_PATH来让你的第一个。另一种选择是将mpirun调用包装在脚本中。这样可以更容易地设置您希望的路径,更高级的用户可以忽略它。

相关问题