問題タブ [mvapich2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - マルチ GPU の MVAPICH が原因でセグメンテーション違反が発生する
Debian 7 マシンで MVAPICH2 2.1 を使用しています。テスラK40mのカードが複数あります。コードは次のとおりです。
つまり、最初にデバイスを GPU 0 に設定し、何かを送信します。次に、デバイスを GPU 1 に設定し、何かを送信します。
出力は次のとおりです。
それで、最初の送信はOKです。しかし、デバイスを別の GPU に設定してから MPI を送信するとすぐに、ブームが発生します。なぜこれが起こっているのだろうか。
また、以下のコマンドでMVAPICHをビルドしました。
デバッグを有効にし、スタック トレースを出力しました。うまくいけば、これは役に立ちます..
tcp - MVAPICH2 に tcp を使用するように指示するには?
2 つのノード間の通信にインフィニバンドを使用すると (MPI 実装として MVAPICH2 を使用)、アプリケーションで間違った結果が生成されます。
OpenMPI は、ネットワークを指定する可能性を提供します
MVAPICH2 に似たものはありますか?
fortran - 不明な MPI メッセージ
私は並列アプリケーションを実行していますが、いくつかのコアから次のメッセージが表示され、突然中止されるまで適切に実行されます。
MPIの使用/デバッグは初めてです。私の検索では明確な結論が得られませんでした (つまり、https://software.intel.com/en-us/node/535587 )。上記のマッサージは何を指していますか? このようなメッセージを含む並列 (Fortran) コードのバグを見つける方法は?
フォローアップの質問: 私のアプリケーションに、ノードの一部が時間を費やしている内部の重いブロックがある場合、タスクを終了したノードは、Infiniband
輻輳に達する前にインターフェースで遅いブロックをどれくらい待つことができますか? ?
mpi - mvapich2-2.1 を PGI でコンパイルする
現在、CentOS 6 マシンで pgcc 15.10 を使用して mvapich2-2.1 をコンパイルしようとしています。走る
そしてそれは失敗します(診断出力の多くを除く)
この問題の解決策は何ですか? 私はアセンブラを使用した経験がないので、ヒントやアドバイスをいただければ幸いです。ありがとう。
mpi - Toy プログラムは OpenMPI 1.6 を使用すると失敗しますが、Mvapich2 では動作します
私のバージョンの OpenMPI 1.6 が機能しない理由を突き止めようとしています。CentOS 6.6 で gcc-4.7.2 を使用しています。おもちゃのプログラム (つまり、hello.c) が与えられた場合
でコンパイルしmpicc hello.c
て実行するとmpirun -np 8 ./a.out
、エラーが発生します:
mvapich2-2.1 と gcc-4.7.2 を使用してこれを実行するとHello World from Task N
、これらのエラーや警告が表示されなくなります。
にリンクされているライブラリを見るとa.out
、次のようになります。
mvapich2で再コンパイルすると、
ここで何が問題なのですか?これは、openmpi の場合に infiniband ライブラリがリンクされていないためですか?
memory - ロックされたメモリが不足しています (rdma_setup_startup_ring: cq を作成できません)
CentOS 7 でロックされたページで使用可能なメモリの量に問題があります。slurmでノードを割り当てた後、MPI (mvapich) でジョブを起動すると、次のエラーが発生します。
ロックされたメモリが不足しているためと思われます。ulimit -a
ただし、次のように返されるため、無制限に設定されているようです。
mpirun
sudoで起動すると動作しています。
c - Comparing CPU utilization during MPI thread deadlock using mvapich2 vs. openmpi
I noticed that when I have a deadlocked MPI program, e.g. wait.c
When I compile wait.c
with the mvapich2-2.1 library (which itself was compiled using gcc-4.9.2) and run it (e.g. mpirun -np 4 ./a.out
) I notice (via top
), that all 4 processors are chugging along at 100%.
When I compile wait.c
with the openmpi-1.6 library (which itself was compiled using gcc-4.9.2) and run it (e.g. mpirun -np 4 ./a.out
), I notice (via top
), that 2 processors are chugging at 100% and 2 at 0%.
Presumably the 2 at 0% are the ones that completed communication.
QUESTION : Why is there a difference in CPU usage between openmpi and mvapich2? Is this the expected behavior? When the CPU usage is 100%, is that from constantly checking to see if a message is being sent?
mpi - インフィニバンドとギガビット イーサネット、MPI プログラムでどちらを使用するかを制御するにはどうすればよいですか
イーサネット接続と Infiniband 接続の両方を持つコンピューター クラスターで実行される MPI プログラムがあります。mpavich2 の mpicc でコンパイルすると、自動的に Infiniband ライブラリにリンクされます。
mpi プログラムのコンパイル時に使用するネットワークを制御する方法はありますか?
mpicc のマニュアル ページを確認しましたが、役に立ちませんでした。
multithreading - MPI で「不明なイベント 17 を取得しました...継続中...」とはどういう意味ですか?
MPI ジョブを実行していますが、次の警告メッセージが表示されます。
MVAPICH 2.1 を使用して、icc (ICC) 15.0.2 20150121 でコンパイルしています。
メッセージの意味は何ですか? 有害ですか?
cuda - 1 つの K80 内の 2 つの GPU 用の CUDA 対応 MPI
LAMMPS ( https://github.com/lammps/lammps )と呼ばれる MPI+CUDA ベンチマークのパフォーマンスを最適化しようとしています。現在、2 つの MPI プロセスと 2 つの GPU で実行しています。私のシステムには 2 つのソケットがあり、各ソケットは 2 つの K80 に接続します。各 K80 には内部に 2 つの GPU が含まれているため、各ソケットは実際には 4 つの GPU に接続します。しかし、私は 1 つのソケットで 2 つのコアと、そのソケットに接続された 2 つの GPU (1 K80) のみを使用しています。MPI コンパイラは MVAPICH2 2.2rc1 で、CUDA コンパイラのバージョンは 7.5 です。
それが背景でした。アプリケーションのプロファイリングを行ったところ、通信がパフォーマンスのボトルネックであることがわかりました。そして、GPUDirect 技術が適用されていないことが原因だと思います。そこで、MVAPICH2-GDR 2.2rc1 に切り替え、その他の必要なライブラリとツールをすべてインストールしました。しかし、MVAPICH2-GDR には、システムで使用できない Infiniband インターフェイス カードが必要なため、「チャネルの初期化に失敗しました。システムでアクティブな HCA が見つかりません」というランタイム エラーが発生します。私の理解では、K80 にはこれら 2 つの GPU 用の内部 PCIe スイッチがあるため、1 つのノードで 1 つの K80 内の GPU のみを使用する場合、Infiniband カードは必要ありません。これらは私の疑問です。質問を明確にするために、次のようにリストします。
私のシステムでは、1 つのソケットが 2 つの K80 に接続されています。1 つの K80 の 2 つの GPU が別の K80 の GPU と通信する必要がある場合、GPUDirect を使用するには IB カードが必要ですよね?
1 台の K80 内で 2 つの GPU を使用するだけでよい場合、これら 2 つの GPU 間の通信には IB カードは必要ありませんよね? ただし、MVAPICH2-GDR には少なくとも 1 つの IB カードが必要です。この問題を解決するための回避策はありますか? または、システムに IB カードをプラグインする必要がありますか?