問題タブ [boost-mpi]

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.

0 投票する
1 に答える
259 参照

c++ - Boost.MPI/Boost.Interprocess - プロセスが同じマシンで実行されているかどうかを検出する方法は?

したがって、boost.mpi を使用して、クラスター内の 2 台のマシンでアプリを実行します。それぞれに 8 つのコアがあり、16 のプロセスが開始されます。私のプロセスは、どのクラスターで実行されているかをどのように確認できるのでしょうか? どうやってマシンに名前を付けて保存するのですか?

0 投票する
2 に答える
4444 参照

c++ - VisualStudio2010を使用してWindowsでOpenMPIを使用してboost::mpiライブラリを構築する方法

Open MPI 1.5.4(64ビット)をインストールし、bjamを使用してBoostライブラリ(1.48)を再構築しようとしています。

明示的なコンパイラパスを使用してmpi行を使用して追加することにより、user-config.jamファイルを変更しました(ただし、mpic ++はすでにPATH環境変数に含まれています)。

次に、コマンドプロンプトから次のコマンドを実行しようとしました。

残念ながら、ビルドプロセスにはさらに多くのヒントが必要です。エラー報告の一部は次のようになります。

WindowsでOpenMPIを使用してBoostMPIをコンパイルできた人はいますか?私は何かが足りないのですか?

0 投票する
3 に答える
2079 参照

c++ - c ++:グローバル変数としてのMPIコミュニケーター

MPIワールドコミュニケーターが関数/クラスメンバー関数でアクセスできるようにする必要があります。ただし、設計/慣例により、MPI環境とコミュニケータは常にの先頭で定義および初期化されますint main()

コミュニケーターへのグローバルポインターを使用することを考えることができる唯一の単純な解決策。

誰かがより良い方法を知っていますか?グローバルポインタソリューションを使用するのは危険ですか?

この問題は、必要最低限​​のMPIとBoost :: MPI(以下で使用)にも同様に当てはまります。

私が提案した解決策の例(未テスト):

0 投票する
1 に答える
779 参照

c++ - 「サブ」ベクトルと「連結」ベクトルを取得します

だから私は並列プログラム(boost.mpi)を書いていて、ベクトル全体を作成するためにアセンブルできるベクトルの断片(std :: vectorのように)を渡したいと思っています。

これを行うために、私は2つのことを実行できるようにしたいと思います。

  1. ベクトルの一部を取得します。つまり、ベクトルに800個の要素がある場合、要素200〜299(または2つのint変数で定義される任意のインデックス)を含むサブベクトルを作成するための最良の方法は何ですか。

  2. ベクトルを一緒に追加して、新しい、より長いベクトルを作成できる演算子を作成したいと思います。基本的に、std :: plus()(文字列を連結できます)が提供するのと同じ機能が必要ですが、ベクトル用です。この演算子を二項演算子として渡すことができる必要があります(std :: plus()と同じ型である必要があります)。

これで少しでも助けていただければ幸いです。

0 投票する
0 に答える
194 参照

parallel-processing - MPI_Barrier()を使用してパフォーマンスを向上させ、バッファーの問題を回避しますか?

パフォーマンスを改善し、より高い反復で発生するバッファーの問題を回避するために、このようなことを行うことはできますか?MaxIterations = 6000

0 投票する
1 に答える
445 参照

c++ - ブール値を使用した all_reduce

all_reduce 関数を使用して各プロセッサからブール値を収集し、ブール値のいずれかが true (つまり、「or」演算子) の場合はそれらを true に削減しようとしています。しかし、これに適した構文を見つけるのに問題があります。私が今持っているのは

これを実行しようとすると、次のコンパイラ エラーが発生します。

or() の代わりに ||() を使用してみましたが、それも機能しません。多分私は何かを逃していますか?それとも、私がこれを行うために行かなければならない別の方法はありますか?

0 投票する
1 に答える
1651 参照

c++ - c++ boost MPI & threading - シリアル化エラー:アドレスがマップされていません

私は困惑しています。 all_gatherプリミティブ (例: int) では機能しますが、単純な STL コンテナーでも失敗します。valgrind は、コンテナーが割り当てられていない/初期化されていないと主張していますが、それは正しくないようです。

要約すれば:

  • 私は、openMP でいくつかのマルチスレッドを実行してから、スレッドを再結合します。
  • シリアルでは、`boost::mpi::all_gather all_gather. std::mapMPI ランクはスレッドではありません。(2 つの MPI ランクがあり、各 MPI ランクには 4 つのスレッドがあります)。
  • 次に、さらに (分離された) マルチスレッドを実行するつもりです。

とても簡単に思えます...ここで何が起こっているのでしょうか?

main.cpp

Conn_Comp.cpp

valgrind は、 of が無効な読み取りになると不平を言いvectorますmap 。ただし、これvectorは呼び出しの直前に作成されたall_gatherものであるため、明らかにスコープ内にあり、並列スレッド領域にはありません。選択された valgrind エラー出力:

ブースト ヘルプ ページの推奨事項に基づいて、MPI_Init_thread を使用します。

uint上で述べたように、マップの代わりにプリミティブ (つまり のみ) を使用すると、正常にall_gather動作します。マップが失敗する理由 boost serializeSTLコンテナをシリアル化するためのメソッドがすでにあるので、それは問題ではありません...

すべての値を保持するベクトルは、すべてを保持するのに十分な大きさになるように自動的にサイズ変更されることにも注意してくださいall_gather(実装を確認しました)。all_gatherとにかく、自分で初期化しても失敗します。

最後に、(適切に割り当てられた)単純な古い配列を使用してもstd::map<uint,uint> *、同じ問題が発生します。

0 投票する
1 に答える
812 参照

c++ - recvとsendが一致した場合、mpiリクエストは終了しますか

2つの一致する非ブロッキング送信および受信操作から1つの要求オブジェクトのみをチェックするだけで十分ですか。

これは私のプログラムでリクエストオブジェクトを処理する労力を減らすので素晴らしいでしょう。

ブーストmpiの小さな例を次に示します。

0 投票する
2 に答える
5294 参照

c++ - MPI収集/操作の混乱を減らしますか?

ブースト チュートリアルには、収集操作と削減操作の例があります。収集のコードは次のとおりです。

reduce の例は次のとおりです。

これらの例の両方で、次のような if/else 条件があります。

ここで私が理解できないのは、if の集団操作と else の whats の違いです。パラメータの数に違いはあるのですが、ロジックがどのように機能するのかよくわかりません。

ありがとう

0 投票する
1 に答える
151 参照

libstdc++ - Boost-MPI HelloWorld コンパイルの問題

編集: 解決済み、正しくないブースト設定 /facepalm

古いシステム/クラスターに boost-mpi をインストールしようとしています。

boost をインストールして bjam --with-mpi を使用した後、boost-mpi セットアップ チュートリアルに付属する hello_world の例をコンパイルしようとしました。mpic++ を使用して bjam の mpi-autoconfig を提供し、次を使用してコンパイルする場合:

次のエラーが表示されます。

ということで、bjamでビルドしたときにGLIBCXX3.4.9が見つかったに違いないと推測したのですが、

使った

そして、それぞれに GLIBCXX の最新バージョンとして 3.4.8 しかありませんでした。

私はこの問題についてかなり混乱しています。どんな助けでも大歓迎です!