問題タブ [scalapack]

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 に答える
356 参照

c - BLACS コンテキスト値と複数の MPI コミュニケーター

複数の MPI コミュニケーターを使用する BLACS/Scalapack (C インターフェイス、Intel MKL バージョン) でいくつかのテストを行おうとしています。特に、取得しようとしているのは、(1 対 1) に対応する BLACS コンテキスト/グリッドのセットです。 (互いに素な) MPI コミュニケーターのセット。単一の「グローバル」コミュニケーター ( MPI_COMM_WORLD) を使用する場合は問題ありませんが、複数のコミュニケーターの場合は問題があります。次の問題について、いくつかのヒントを教えていただければ幸いです。

への呼び出し後の BLACS コンテキスト変数値の更新について少し混乱しています。コミュニケーターCblacs_gridinitに対応する「グローバル」コンテキストから始めるとしましょうMPI_COMM_WORLD。次の呼び出しで、対応する BLACS コンテキストを取得できます。

その上にグリッドを作成します

たとえば、char c_blacsGridOrdering('R').

この場合の globalContext 値は 0 です。

6 つの MPI タスクを使用している私のコードのある時点で、localCommunicatorID を持つ 4 つのタスクのグループに対応する MPI コミュニケーター ( )が作成されています。この時点で、このための新しい BLACS コンテキスト ( )[0;3]を作成したいと思います。localContext「ローカル」コミュニケーターとその上のローカル グリッド。私はコードでそれを行うことができます

ここで、上記の関数呼び出しシーケンスは、ローカル コミュニケーターに含まれるタスクによってのみ実行されます。

localContext呼び出し後の値はCsys2blacs_handle(ローカル コミュニケーターの各タスクに対して) 1 ですが、その後の の呼び出しによって変更され、0 に設定されCblacs_gridinitます。

明らかに、これはコードの残りの部分でいくつかの問題を引き起こします。たとえば、 へlocalContextの呼び出しで に対応する MPI コミュニケーターを取得しようとCblacs2sys_handleすると、初期の に対応する 6 つのタスク コミュニケーターが取得されるからglobalCommunicatorです。

ほとんどの場合、非常にばかげたエラー (いくつかの BLACS 関数の呼び出しが欠落している??) を行っているか、複数の MPI コミュニケーターと BLACS コンテキスト/グリッド間の相互作用が明確ではありませんが、コードの何が問題なのかを見つけることができません。

上記の問題に関して何か提案はありますか?助けてくれて本当にありがとうございます!

更新 1

観察された問題の解決策または少なくとも説明を見つけるのに役立つ可能性のある私の質問の更新があります。利用可能なすべての MPI タスクが含まれるようなサイズのタスク グリッド (たとえば、MKL_INT i_nTaskRow(1)および など) MKL_INT i_nTaskCol(MPI_COMM_WORLD size)。この動作は BLACS に期待されるものですか? ご支援いただきありがとうございます。

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

c++ - MKL ScaLapack の問題

http://acts.nersc.gov/scalapack/hands-on/etc/pddttrdrv/pddttrdrv.c.htmlから単純な Hello World (MKL) ScaLapack の例を実行しようとしていますが、問題に遭遇しました (使用していますMPICH2 で、私の OS は Windows です)。

MPI フラグを指定してコードを実行すると

-localonly 2

私は得る:

PDDTTRF, D&C alg.: only 1 block per proc

パラメータを再確認し、オンライン参照と比較して、値が正しいかどうかを確認しましたが、問題は見つからなかったようです.

コードは次のとおりです。

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

optimization - ScaLapack の操作、単語数とメッセージ数

Scalapackルーチンが実行する操作の数、特に送信するメッセージの数と単語の数をカウントする論文またはワーキングノートを誰かが知っているかどうか疑問に思っていました.

操作カウントに関しては、Golub と Van Loan の優れた Matrix Computations を参照するか、Lapack の LAWN 41 をチェックして、ScaLapack であまり変化しないと仮定することができますが、メッセージと単語のカウントについては何も見つけることができず、これは最終手段です。コードを調べます。

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

parallel-processing - プロセッサー数によって変化する scalapack を使用した線形システムの結果

Jonathanコードを使用して A*X=B を解こうとしましたが、プロセッサの数によって結果が変わります。誰でもこの点で私を助けてくれませんか。

行列 A と B は scalapack の例です。それらをバイナリ形式で書き直しただけです。したがって、それらは上記のプログラムで使用できます。

とB

たとえば、1 つのプロセッサの場合:

mpirun -np 1 ./array 9 A.dat B.dat

および 2 プロセッサの場合

6 プロセッサの場合、エラーが表示されます

mpirun -np 6 ./a.out 9 A.dat B.dat

これは、scalapack の例では発生しません。

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

compiler-errors - サンプル scalapack アプリケーションのコンパイルに関する問題

私がする時:

私は得る:

ライブラリがリンクされている順序に問題があるのでしょうか。

MPI を使用してサンプル プログラムを実行する方法

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

matrix - 分散下・上三角行列の上・下部分のインプレース復元

三角行列を一般的な行列に戻す、つまり下部/上部を上部/下部にコピーする Scalapack ルーチンが存在するかどうか疑問に思っていますが、まだ見つかりませんでした。対角線を操作して p?geadd を使用する簡単な回避策があることは知っていますが、それは理論的に必要なメモリの 2 倍のメモリを消費するので、その余裕はありません...だから、Scalapack/PBLAS がこの比較的単純な問題を解決するルーチンを提供しないでください。私より詳しい人がいたら教えてください!

-ありがとう