2017-05-18 6 views
0

私はRDMAをサポートするMicrosoftのAzure上のいくつかのH16Rインスタンスを設定している、とIntelのピンポンテストが正常に動作します:Microsoft Azure上でMPIアプリケーションをコンパイルするにはどうすればよいですか?

mpirun -hosts <host1>,<host2> -ppn 1 -n 2 -env I_MPI_FABRICS=dapl -env I_MPI_DAPL_PROVIDER=ofa-v2-ib0 -env I_MPI_DYNAMIC_CONNECTION=0 IMB-MPI1 pingpong 

私は(例えばLAMMPS、)MPIアプリケーションをコンパイルしたい場合しかし、問題が発生します。これらのH16RインスタンスがインテルMPIを使用して通信しているにもかかわらず、マイクロソフトはHPC CentOS 7.1イメージにインテルコンパイラを含めるようには見えません。

OpenMPIをインストールし、mpic++を使用してLAMMPSをコンパイルしました。しかし、OpenMPIのmpirunは何も言いません。

私は実際にこのタスクのためにインテルコンパイラを購入する必要がありますか?これらのVMでOpenMPIを使用する方法はありませんか?これは個人的なプロジェクトではかなり高価です。

答えて

0

Intel MPIを使用するためにIntelコンパイラは必要ありません。 GCCでもうまく動作します。 IMPIはインテル固有のコンパイララッパー(mpiicc,mpiicpc,mpiifort)と一般的なもの(mpicc,mpicxx,mpif90など)を提供しています。後者は互換性のあるコンパイラで動作します。

LAMMPSためmpicxxを使用するには、コマンドライン引数でそれを提供することで、どちらかのGCCを使用するラッパーを伝える必要があります。

$ mpicxx -cxx=g++ ... 

またはI_MPI_CXX環境変数を設定することによって:

$ export I_MPI_CXX=g++ 
$ mpicxx ... 

CおよびFortranラッパーにも同じことが言えます。引数なしでそれらを実行すると、実際のコンパイラ名を提供するために使用できるオプションのリストが表示されます。

代替MPI実装を使用する場合、Azureによって提供される仮想InfiniBandアダプタは共有受信キューのサポートが不足しているようで、Open MPIはデフォルト設定では実行されません。あなたは、次のmpiexecオプションを指定して実行してみてください可能性:

--mca btl_openib_receive_queues P,128,256,192,128:P,2048,1024,1008,64:P,12288,1024,1008,64:P‌​,65536,1024,1008,64 

これは、すべてのプライベートなものにキューを受け取る共有再構成します。 Azure HPCインスタンスにアクセスすることはできません。これはすべてthis questionのエラーメッセージに基づいています(残念ながら、上記の引数がOpen MPIの仕事をしているかどうか、私のお問い合わせにOPは応答していません)

+0

これらはどこにインストールされていますか?彼らはデフォルトでは私のPATHにはなく、 'find/-name" mpiiccを実行しても何も明らかにされません。インストールすべきパッケージはありますか? – Nick

+0

私たちのクラスタでは、ラッパーは '/ opt/intel/impi/5.1.3.181/bin64 /'にあります。 [ドキュメント](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/classic/rdma-cluster)によると、これはIMPOSがCentOSベースのVM。 –

+0

Azureが提供しているCentOS 7.1 HPCイメージからIMPIディレクトリが削除されていると思われますが、IMPIディレクトリは存在しますが、コンパイララッパーは表示されません( 'mpirun'、' mpivars.sh'など)。 – Nick

関連する問題