我有一个使用 MPI 的并行代码。使用此代码的正确方法是从 PC/Cluster 上的源代码编译,然后运行为:
mpiexec -n X ./application -options
不幸的是,有些使用此代码的人受到 *nix 挑战,他们发现从源代码构建有点令人生畏(不要问为什么)。这些用户只在自己的台式机/笔记本电脑上使用代码。
对于这样的用户,我只需编译一个静态二进制文件(在一个足够老的操作系统上使用足够老的 glibc,它可以在大多数运行 Linux 的 PC 上运行)。然后用户可以按如下方式运行代码:
./application -options
所以现在我的问题是,我怎样才能将 mpiexec/mpirun 与我的静态二进制文件一起发布,以便用户可以执行以下操作:
./mpiexec -n 2 ./application -options
这样,他们还可以利用桌面上的多个内核。到目前为止,我一直在告诉他们做正确的事情,即安装 MPI 并从源代码编译我的代码。
通过进行一些测试,我发现如果我编译 hydra 并mpiexec.hydra
一起 发布,hydra_pmi_proxy
那么我可以按如下方式运行代码:
./mpiexec.hydra -n 2 ./application -options
但我不确定这是否是正确的方法?这会导致任何问题吗?我正在考虑为 Windoze 二进制文件(在 Cygwin 中运行)做同样的事情。
另一种选择是预先构建所有内容的 VBox 图像,但下载大文件成为问题。