問題タブ [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.
matrix - MPI 行列多重化コンパイル エラー: 宣言されていません
scanf("%d", &size)
を使用し、行列のサイズを指定して を定義する mpi 行列多重化プログラムをコーディングしましたが、コンパイルするint matrix[size*size]
と、行列が宣言されていないと報告されました。理由、または私の問題を教えてください。
Ed の提案に従って、行列の定義をif(myid == 0)
ブロックに変更しましたが、同じエラーが発生しました。今、私は自分のコードを投稿します。間違いを犯した場所を見つけるのを手伝ってください! ありがとう!
c++ - C++: データの読み取りがメモリにどのように影響する可能性がありますか?
私は最近 C++ に深く入り込んでおり、私のバグは複雑になっているようです。
オブジェクトのベクトルがあり、各オブジェクトにはフロートのベクトルが含まれています。すべてのオブジェクトのすべての float 値を 1 つに含む、さらにフラットな配列を作成する必要があると判断しました。それよりも少し複雑ですが、問題の要点は、float 値を抽出するオブジェクトをループすると、ある時点でオブジェクトのベクトルが変更されたり、奇妙な方法で破損したりすることです。(私の読み取り操作はすべて const 関数です)
もう 1 つの例は、MPI の場合です。私は始めたばかりだったので、まったく同じコードを2つの異なるノードで実行したかっただけで、独自のメモリがあり、データ転送は発生していません。すべて非常に簡単です。驚いたことに、セグメンテーション エラーが発生し、何時間も追跡した後、1 つの変数の 1 つの割り当てがまったく別の変数を NULL に設定していることに気付きました。
ですから、読み取り操作がデータ構造にどのように影響する可能性があるのか 、興味があります。同様に、一見無関係な操作が別の操作にどのように影響するか。これらの簡単な説明では問題の解決策を期待できませんでしたが、アドバイスをいただければ幸いです。
更新: これはコードの一部です。システム全体を理解していないと、コードからどれだけ抽出できるかがわからないため、最初は投稿しませんでした。
ただ、フラットな配列に値を代入するのをやめて、代わりに計算すると、セグメントエラーが消えたことがわかりました。したがって、配列が間違っていると宣言している可能性がありますが、そうであったとしても、それがオブジェクト ベクトルにどのように影響するかはわかりません。
私のフラット配列はメンバー関数です
次のようにコンストラクターで初期化されます。
更新 2:
上記の 2 つの例は関連がなく、最初の例はマルチスレッドではありません。2 番目の MPI の例は技術的なものですが、MPI は分散メモリであり、考えられる最も単純な実装を意図的に試みました。これは、両方のマシンが独立してコードを実行するというものです。ただし、追加の詳細が1つあります。条件付きの言葉を入れました
再びメモリを分離する必要があり、お互いについて何も知らないかのように動作する必要があります..しかし、この条件を削除し、両方のループですべてのキューブを実行すると、エラーが解消されます
python - MPI4Py 散布 sendbuf 引数の型?
MPI4Py Python モジュールの Scatter 関数に問題があります。私の仮定は、sendbuffer の単一のリストを渡すことができるはずだということです。ただし、それを行うか、実際に他の 2 つの引数、recvbuf と root を追加すると、一貫したエラー メッセージが表示されます。
これは、上記の 682 より上の数行から始まる、関連するコードを抜粋したものです。
station_range を初期化するいくつかの組み合わせを試しましたが、Scatter 引数の型を正しく理解していないに違いありません。
Python/MPI の第一人者はこれを明確にしていますか?
c - C: printf() を介して出力される場合、double はどのくらいの長さになりますか
double 値から出力する文字列の正確な長さを指定する必要がありますが、出力を必要以上に制限したくありません。
printf() でフォーマットされた場合、6 桁の精度の double の最大長は?
printf("%X.6lg",doubleValue);
具体的には、値が切り捨てられないようにするには、X にどの値を指定する必要がありますか?
長さについて具体的に説明する必要がある理由は、double 値の多数の文字列表現で構成される MPI 派生データ型を定義しており、ファイルの領域を MPI プロセス間で分割するために正確な長さを知る必要があるためです。
それが明確であることを願っています。答えてくれてありがとう。
algorithm - マルチコア - 各コアで見つかったデータのローカル グループをマージする方法は?
3D メッシュに分散されたスカラー値の大規模なセットがあります (頂点ごとに 1 つの値)。
私の目標は、次のことを示すことです。
- 値がしきい値より大きいメッシュ内のすべてのポイント。
- AND 接続されているポイントをグループ化します (表示を簡略化するため)。
したがって、私の基本的な解決策は次のとおりです。
- しきい値テストに合格するポイントを見つける
- グループ化されていないポイントごとに、新しいグループを作成し、接続されているすべてのポイントを再帰的にそのグループに入れます。
マルチコアソリューションの使用を開始するまで、これは正常に機能します。
- データセットは複数のコアに分割されています
- 各コアは、他のコアが共有する境界点を認識しています。
- コア間の通信に MPI を使用しています。
私は独自のアルゴリズムを使用して、「ローカル」グループを単一のコアで見つけました。
私の課題は、「ローカル」グループをグローバル グループに統合することです。この問題は、いくつかの理由で複雑になります。接続されたグループは、多くのコア境界を超える可能性があります。1 つのコアでは分離しているように見えるグループは、2 番目のコアのグループによって接続できます。
前もって感謝します。ジェフ
c - MPI_Cart_create、MPICH で NULL コミュニケーターを取得する
宿題 (並列プログラミング) のためにこのプログラムを作成しましたが、実行中にエラーが発生します。
これはソースです:
そして、ここに私が得ているエラーがあります:
mpi - MPI I/O はどのように実装されていますか?
長い背景
心臓電気生理学シミュレーション用のコードの並列化に取り組んでいます。ユーザーは組み込みのスクリプト言語を使用して独自のシミュレーションを指定できるため、通信と計算のトレードオフを管理する方法を知る方法がありません。これに対抗するために、私は一種のランタイム プロファイラーを作成しています。これは、実行するシミュレーションと動作する必要があるハードウェア環境を確認した後で、ドメイン分割の処理方法を決定します。
私の質問はこれです:
MPI I/O は舞台裏でどのように実装されていますか? 各プロセスは実際に他のノード上の単一のファイルに書き込んでいますか? それとも、各プロセスがいくつかのスパース ファイルに書き込んでいて、ファイルが閉じられたときにそれらのファイルが再び結合されるのでしょうか?
これを知ることで、I/O 操作を通信と計算のどちらと見なすかを決定し、それに応じてバランスを調整することができます…</p>
あなたが提供できる洞察を前もって感謝します。
ロス
c++ - C++ プログラムへの MPI サポートの追加
MPI サポートを追加したい C++ で実装されたプログラムがあります。名前空間 MPI とすべてを備えた、C++ 用の MPI バインディングがあります。
私の場合、クラスターへの並列化プロセスに適した特定のオブジェクトがあります。
私の質問は次のとおりです。
- 誰かが前にこのようなことをしたことがありますか? これを実装するための最善の方法についてアドバイスをいただけますか?
- コンストラクター内で MPI を初期化するにはどうすればよいですか? クラスのコンストラクター内で MPI を初期化した後、すべての中間呼び出しも並列化されますか?
例えば: