問題タブ [openmpi]
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.
c++ - C++からScaLAPACKを呼び出す
こんにちは、C++からScaLAPACKを呼び出すためのMakefileの例を教えてください。問題が発生しています。
すべてのテストに合格して、最新バージョンを正しくコンパイルしました。FedoraでGCCとOpenMPIを使用してコンパイルしました。また、リポジトリからビルド済みのバイナリを使用してみましたが、運が悪かったです。
cuda - OpenMPI CUDA および CUDPP
クラスター上のいくつかのプロセスに大きな配列を分散させる mpi プログラムがあります。
各プロセスは、配列要素の独自の合計を計算し、結果をホストに返します。
各プロセスの配列要素に対して並列プレフィックス スキャンを実行したいと考えています。
CUDPPで可能かどうかについての考え。?
openmpi と cudpp を一緒に使った人はいますか?
shared-libraries - mpicc を使用した共有オブジェクトの作成 - pthread ルーチンが見つからないようです
Linux で共有ライブラリを作成する方法を学んでおり、その後、並列化された科学計算プログラムを開発しています。ここから共有ライブラリのおもちゃの例を取り上げました。おもちゃの例に合わせて、この質問の Makefile を変更しました。私のMakefileは今
Makefile で作成するとCC = gcc
、問題なく動作します。mpirun でもバイナリを実行できました。
MakefileをCC = mpicc
作成すると、次のエラーが発生します。
libpthread.so,.a へのパスを LD_LIBRARY_PATH に追加しましたが、役に立ちませんでした。私は自己コンパイルしたopenmpi-1.5.4を持っています。これがopenmpiの依存関係である場合、構成時に解決されているはずではありませんか?
このエラーはよく知られていますか? gcc 4.5.2 で Ubuntu 11.04 を使用しています。私はすでにいくつかの mpi 並列プログラムを正常に構築して実行しています。しかし、それらは autotools で構成された大きなパッケージです。config.log の 1 つに同じエラーが表示されます。しかし、それでも問題なく動作します。
mpi を使用して静的/共有ライブラリを作成する例への参照も歓迎します (ただし、Openmpi は完全に静的なライブラリを推奨していません)。
どうもありがとうございました、
エラン。
c - C、Open MPI:MPI_Finalize()の呼び出しからのセグメンテーション違反。特にプロセス数が少ない場合、セグメンテーション違反が常に発生するとは限りません。
MPI_Datatypeを定義し、MPI_Gathervと組み合わせて使用する方法を学ぶための簡単なコードを書いています。MPI_Finalize()を呼び出すまでは、プロセス上で構造化データの可変長の動的に割り当てられた配列を組み合わせることができることを確認したかったのですが、これは正常に機能しているようです。これが、printステートメントとEclipse PTPデバッガー(バックエンドはgdb-mi)を使用して、問題が明らかになり始める場所であることを確認しました。私の主な質問は、セグメンテーション違反をどのように取り除くことができるかということです。
コードを実行するたびにセグメンテーション違反が発生するわけではありません。たとえば、2つまたは3つのプロセスでは発生していませんが、約4つ以上のプロセスで実行すると定期的に発生する傾向があります。
また、このコードをvalgrindで実行すると、セグメンテーション違反は発生しません。ただし、valgrindからエラーメッセージが表示されますが、MPI関数を使用すると、ターゲットを絞った抑制が多数ある場合でも、出力を理解するのは困難です。また、より多くの抑制を使用すると、有用なエラーメッセージが表示されなくなるのではないかと心配しています。
これらのフラグを使用して通常のコードをコンパイルするため、どちらの場合もC99標準を使用しています。 -pedantic -std = c99 -Wall -g
どちらもgcc4.4mpiccコンパイラを使用し、OpenMPIv1.4.5でRedHatLinuxを使用するクラスタで実行されます。他の重要な情報を省略した場合はお知らせください。これがコードです、そして事前に感謝します:
parallel-processing - MPI内部:プロセス間の通信実装
私は、MPIコミュニケーター内で実際のプロセス通信がどのように行われているのかを把握しようとしています。私には8つのノードがあり、それぞれに12のコアがあります(96のインスタンスが実行されています)。各プロセスには一意のランクが割り当てられており、プロセスは相互に通信できます。では、プロセスはどのようにして一意のランクを取得し、実際のメッセージを送信することができますか?いくつかのスライドによると、Open Run-Time Environment(ORTE)があります。これは、「そのセルでプロセスが起動されるマシン上にあります(たとえば、クラスターのフロントエンド)。セルでプロセスを起動する責任があります。セルの状態を監視します。 (ノード、プロセス)。セルの状態を残りのユニバースに報告します。セル間の通信をルーティングします。」MPI実装の開発者向けドキュメントやアーキテクチャペーパーを見つけることができませんでした。MPIプロセス間の実際の通信がどのように実装されているか、つまり、どのようにして自分自身を見つけてランクを割り当てられるかについて、誰もが考えていますか?ルーティング用の中央または複数の中央MPI内部プロセスがありますか(ノードごとなど)?
ありがとう、デビッド
openmpi - Openmpiコンパイルエラー:mpicxx.h「数値定数の前に予期された識別子」
openmpiを使用してプログラムをコンパイルしようとしていますが、コードでエラーは発生しませんが、代わりにmpiヘッダーの1つでエラーが発生します。
ヘッダーの関連するコード行は、次のようになっています。
私はmpiCCコンパイラを使用しています。私は何か間違ったことをしていますか?またはこれはopenmpiのバグですか?
前もって感謝します。
c - OpenMPIノードとネットワークトポロジ
私は現在、より大きなプロジェクトの一部として小さなユーティリティライブラリを構築しています。OpenMPIには十分に文書化されたAPIライブラリがありますが、ノード間の低レベルの通信に関しては少し戸惑っています。アルゴリズムを作成するときは、残りのノードと通信し、「グローバル」MPIランク(アルゴリズムで定義されている)に基づいてアルゴリズムの一部を実行し、すべてのノードと通信する計算を行うことが期待されるすべてのノードにアルゴリズムを分散します。ノードは前後に同期します。ただし、グローバルを引用符で囲んだ理由は、openMPIがIPレベルで通信するため、実行アルゴリズムがすでに長いと言いますが、MPIを実行すると、アイドリング状態で、MPIプロセスを実行していないノードがあります。その上のアルゴリズム、MPI_COMM_WORLDに参加して、ネットワークトポロジ全体の一部になるのでしょうか、それとも、そのノードをMPI_COMM_WORLDの一部にするために必要な「ブードゥー」がありますか。また、ノードがその特定のアルゴリズムのMPI_COMM_WORLDの一部になることができる場合、この新しいノードを登録/識別するにはどうすればよいですか?
読書の参考文献も役に立ちます。
どうもありがとう!
tl; dr MPIノードはMPI_COMM_WORLDからホットスワップ可能ですか?
openmp - OpenMPI を使用した OpenMP
A
現在、スケーラビリティに深刻な問題を引き起こしている 1 つのプロセス ( と呼びます) を持つ MPI アプリケーションがあります。現在、他のすべてのプロセスはMPI_Recv
、その 1 つのプロセスが情報を送信するのを待っています。
できるだけ少ない労力でこれを高速化したいので、OpenMP の並列化プロセスを使用することを考えていましたA
。これは実用的ですか?
ノードを共有する他のプロセスA
は にあるMPI_Recv
ため、そのノードのすべてのリソースを使用してプロセスで作業できますかA
、またはそれをMPI_Recv
防ぐことができますか?
A
OpenMP を使用するもう 1 つの利点は、処理に時間がかかるため、メモリを共有できることです。
ところで、プロセッサがMPI_Send
ではなく で待機している場合、何か変化はありMPI_Recv
ますか?
c - 別のプロセスをフォークした MPI プログラムを終了する方法
異なるクラスター ノードでいくつかのプロセスを開始するだけの MPI プログラムを作成する必要があります。これは私のサンプルコードです。
プロセスは正常に開始されますが、MPI アプリケーションは終了しません。MPI_Finalize() が呼び出された後も待機します。
このコードの何が問題になっていますか? MPI プログラムが他のアプリケーションを起動するだけで、何も待たないようにするにはどうすればよいですか。
よろしくお願いします、ロボ。