1

MPI を使用する並列コードがあります。このコードを使用する適切な方法は、PC/Cluster でソースからコンパイルし、次のように実行することです。

mpiexec -n X ./application -options

残念ながら、このコードを使用している一部の人々は、ソースからビルドするのが少し難しいと感じている *nix に挑戦しています (理由は聞かないでください)。これらのユーザーは、自分のデスクトップ/ラップトップでのみコードを使用します。

そのようなユーザーのために、私は単純に静的バイナリをコンパイルします (Linux を実行しているほとんどの PC で実行される十分に古い glibc を備えた十分に古い OS で)。その後、ユーザーは次のようにコードを実行できます。

./application -options

だから今私の質問は、ユーザーが次のようなことをできるように、静的バイナリと一緒に mpiexec/mpirun を出荷するにはどうすればよいかということです。

./mpiexec -n 2 ./application -options

このようにして、デスクトップで複数のコアを利用することもできます。今まで、私は MPI をインストールしてソースからコードをコンパイルするなど、正しいことを行うように彼らに言い続けてきました。

いくつかのテストを行った結果、ハイドラをコンパイルして出荷すると、次のようにコードを実行できることがわかりましmpiexec.hydrahydra_pmi_proxy

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

しかし、これが正しいアプローチであるかどうかはわかりませんか?これにより問題が発生しますか? Windoze バイナリ (Cygwin で実行) についても同じことを考えています。

もう 1 つのオプションは、すべてが事前にビルドされた VBox イメージですが、大きなファイルのダウンロードが問題になります。

4

1 に答える 1

0

Hydra を使用しているので、MPICH またはそれに基づくものを使用していると仮定します。

完全なインストールのごく一部のみを出荷する場合の問題は、機能が失われる可能性が高いことです。MPI を自分でセットアップしたくないユーザーは、特定の機能のみを使用し、さらに必要な場合は正しくインストールするように指示するだけであると想定できます。

ただし、考慮すべきさらに懸念される状況があります。すでに MPI がインストールされていて、それがあなたが出荷しているものではない場合、最初に見つかったのがあなたのものであることを確認する必要があります。Windows では、バイナリとライブラリを同じフォルダーに置くだけで、Windows はそれらを最初に見つけます。Linux は少しトリッキーですが、PATH と LD_LIBRARY_PATH を操作して最初に取得することができます。もう 1 つのオプションは、スクリプトで mpirun 呼び出しをラップすることです。これにより、パスを希望どおりに設定しやすくなり、上級ユーザーは単純に無視できます。

于 2014-04-17T15:32:41.640 に答える