2

LinuxValgrindを完全にサポートしてインストールしようとしています。ValgrindのドキュメントMPIによると。既にインストールされている状態でコンパイルする必要がありますが、 MPICHOpenMPIの両方のドキュメントによると、既にインストールされている状態でコンパイルする必要があります。これはかなり紛らわしいので、どちらを最初にインストールすればよいでしょうか?MPIValgrind

4

2 に答える 2

2

ここには循環依存はありません。むしろ、Valgrind クライアント要求を異なる場所に配置する 2 つの異なる方法に直面しています。

Open MPI は、OMPI 固有の Valgrind サポートを使用して構築できます。これは、OMPI 内部もチェックできるという点で、MPI サポートを使用して Memchecker をビルドするのとは異なります (そのため、OMPI でデバッグを有効にする必要もあります)。Memchecker クライアント リクエストは、非常に OMPI 固有の方法でライブラリ コードの一部になります。これは、Valgrind コードを変更する必要はありません。つまり、どの Valgrind インストールでも動作するはずです (最小バージョン要件が満たされている場合)。

一方、Open MPI やその他の MPI 実装は、PMPIプロファイリング インターフェイスを提供します。これは Memchecker が汎用 MPI サポートを提供するために使用できます。ドキュメントで説明されているように、Memchecker は、元の MPI 呼び出しを置き換える (およびラップする) 関数のライブラリを構築します (これがPMPIメカニズムのしくみです。すべてのMPI_*呼び出しは弱いシンボルであり、同じ名前の他のシンボル、真の MPI によってオーバーライドされる可能性があります)。呼び出しは実際PMPI_*にはMPI_*ELF システムでは弱いエイリアスとして定義されています)。これには、MPI ライブラリ コードを変更する必要はありません。どの MPI 実装でも動作するはずですが、正しくデバッグされるのはユーザー メモリだけです。つまり、MPI ライブラリ コード内で誤検知が検出される可能性があります (ただし、誤検知である必要はなく、ライブラリ自体にバグがあることを意味する場合もあります)。

同じことが MPICH での Valgrind サポートにも当てはまります。

于 2013-02-12T18:11:02.607 に答える
1

MPIをサポートするvalgrindをインストールするとします。つまり、mpiccまたはその他のmpiコンパイラを使用する可能性があります。valgrindが求めているのは、同じコンパイラでビルドすることです。valgrind自体を使用してこれらのmpiコンパイラのいずれかをデバッグする場合は、Valgrind統合セクションの手順に従う必要があります。

使用しているディストリビューションに関する情報はありません。Debianシステムでは、valgrind-mpiが探しているパッケージである可能性があります。

于 2013-02-12T02:09:32.677 に答える