問題タブ [petsc]
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.
openmdao - OpenMDAO PetscTgtVecWrapper TypeError
内で1000を超える並列ケースを評価している並列ワークフローを実行しようとしていますParallelGroup
。少量のコアで実行するとクラッシュしませんが、ある時点でノード数を増やすとエラーが発生します。これは、問題がどのように分割されているかに関連していることを示しています。
OpenMDAO と PETSc のディープ ダンジョンから、通信テーブルをセットアップする際のターゲット インデックスに関するエラーが表示されます。以下は、エラーのトレースバックの印刷です。
この答え:
ベクトルを設定した場所を探してtgt_idxs
、正しい dtype で定義されているかどうかを確認しましたPETSc.IntType
。しかし、これまでのところPetsc has generated inconsistent data
、エラーの原因であると思われる配列の dtype を設定しようとしたときにのみエラーが発生します。
--with-64-bit-indices
リンク先の回答で提案されているように、まだPETScを再インストールしようとはしていません。このように構成された PETSc を実行しますか?
編集:私は今、私が得るエラーを再現する問題の簡素化されたバージョンをセットアップしました:
すると、評価するケースが多いため、データサイズが膨大になることもわかります。どうにかしてデータサイズを削減できないか見てみましょう。エラーでクラッシュするため、実際にはこれをまったく実行できません。
またはTypeError
。
python - openmdaoで使用するpetsc4pyをインストールする際のバージョンエラーを修正するにはどうすればよいですか
Python Web サイトにある指示に従って petsc4py をインストールしようとしていますが、エラーが発生します。この正しいバージョンが見つからないというエラーを修正するにはどうすればよいですか? 私の全体的な目標は、openMDAO を使用できるようにすることですが、petsc4py を機能させることから始める必要があります。
以下は、コマンドの入力と、受け取ったエラーです
c++ - PETSC DMDA vec 値が間違った場所に割り当てられます
私は最近 PETSc の学習を始めましたが、いくつかの簡単なタスクを実行しようとしているときに問題に遭遇しました。このコードの問題点:
プロセスランクによってラベル付けされた数量で小さな配列を埋めます。コンパイルとリンクが成功すると、次の結果が得られます。
VecView は、プロセスが他のプロセスに属する場所に書き込みを行ったことを示しています。エラーはどこにありますか? DMDAVecGetArray/DMDAVecRestoreArray が間違った配列を与えるか、VecView が DM オブジェクトから取得した Vec を表示するのに適していませんか?
mpi - 共有メモリを使用する PETSc
行列を使用しない GMRES メソッドで線形方程式系を解くために PETSc を使用する MPI 並列コードがあります。正常に動作しますが、使用するプロセスの数に関係なく、各プロセスはほぼ同じ量のメモリを使用します。そのため、多くのプロセスを使用すると、メモリ使用量が過剰になります。これを回避する方法があるかどうか疑問に思っており、共有メモリのアプローチを使用することが最善の方法であると思います。
PETSc Web サイト共有メモリが PETSc でサポートされていることは理解していますが (簡単にするために MPI 共有メモリが使用されています)、有効化または使用する方法に関する情報が見つかりません。共有メモリで PETSc を使用することは私の問題の可能な解決策ですか? はいの場合、これを行う方法に関するドキュメントはありますか? それとも、追加のコーディングを必要とせずに可能であれば、デフォルトで PETSc で MPI 共有メモリが使用されますか?
petsc - petsc 行列の作成方法は?
私は petsc4py を使用していますが、いくつかの問題に直面しています。私はいくつかの小さな petsc 密行列 mij を持っており、それらを次のような大きな行列 M に構築したいと考えています。
mcve コードを以下に示します。私は PETSc の python ラップを使用していますが、文法は似ています。
そのようなエラーメッセージを報告します:
python - PETSc にリンクされた Fortran コードで f2py を使用する
私の質問はこの投稿に関連しています:
f2py でラップされたモジュールにコンパイルされたモジュールを含めますか (最小限の作業例)?
投稿者が f2py を使用して Fortran コード (Test.f90) をコンパイルし、それを事前にコンパイルされたライブラリ (または私の場合はオブジェクト、myex44f.o) にリンクしようとしていました。その答えにより、Fortran コードをコンパイルし、python モジュールを生成することができました。
私の問題は、オブジェクトが PETSc にリンクされているという点で、上記のポスターの問題とは異なります。f2py で生成したライブラリを Python にインポートしようとすると、PETSc サブルーチンである「VecDestroy」が見つからないというエラーが表示されます。私の最近の試みは:
f2py -c --fcompiler=gfortran -I. myex44f.o ../../../Codes/third_party/petsc/include/petsc/finclude/petscdef.h -m テスト Test.f90
コード Test.f90 は次のとおりです。
mainsub
モジュールから呼び出しますpetsctest
:
私が得るエラーは次のとおりです。
インポート テスト トレースバック (最新の呼び出しが最後): ファイル ""、1 行目、ImportError: ./test.so: 未定義のシンボル: vecdestroy_
誰か提案はありますか?あなたが私に提供できる助けをありがとうございました。
更新:myex44f.o
PETSc の例で提供されているメイクファイルを使用して
、元のオブジェクトを生成しました。リンク行を見て、f2py でコンパイルする場合は、petsc ライブラリをリンクする必要があるかもしれないと考えました。私の現在の試みは:
f2py -c --fcompiler=gfortran -m test Test.f90 -I. myex44f.o -I/home/costoich/Documents/AFPWork/Codes/third_party/petsc/include -I/home/costoich/Documents/AFPWork/Codes/third_party/petsc/arch-linux2-c-debug/include -L/home/costoich/Documents/AFPWork/Codes/third_party/petsc/arch-linux2-c-debug/lib -lpetsc
これは、コンパイル手順中に正しくリンクしているようです (-lpetsc
パスなしで書くと、コンパイラは失敗します)。ただし、入力するとldd test.so
、次のようになります。
linux-vdso.so.1 => (0x00007ffe09886000)
libpetsc.so.3.7 => not found
libgfortran.so.3 => /usr/lib/x86_64-linux-gnu/libgfortran.so.3 (0x00007fc315be5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc31581b000)
libquadmath.so.0 => /usr/lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007fc3155dc000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc3152d3000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc3150bc000)
/lib64/ld-linux-x86-64.so.2 (0x000055a3fad27000)
リンク フラグ Wl,rpath を使用するには 2 つ必要ですか? f2py はこれらを理解していないようです。コメントありがとうございます。
解決済み
問題が見つかりました。f2py に-Wl,rpath
オプションを受け入れさせることはできませんが、環境変数を定義するとLD_LIBRARY_PATH=/home/costoich/Documents/AFPWork/Codes/third_party/petsc/arch-linux2-c-debug/lib
すべてがうまくいきます。ご協力ありがとうございました。
python - petsc を MPI モードで正しく実行するには?
プロジェクトのソルバーとして petsc を使用しています。ただし、並列モードのソルバーは、私の予想よりもはるかに多くのプロセスを作成します。
Pythonとpetsc4pyを使用したコード。マシンには 4 つのコアがあります。(a)。直接実行すると、petsc は行列を組み立てるために 1 つのプロセスのみを使用し、方程式を解くために 4 つのプロセスを作成します (b)。コメント 'mpirun -n 4' を使用すると、petsc は行列を組み立てるために 4 つのプロセスを使用しますが、方程式を解くために 16 のプロセスを作成します。
私は自分のpythonコードをチェックしました.matrix createに関連する主なコンポーネントは次のとおりです。
petsc ソルバーに関連付けられている主なコンポーネントは次のとおりです。
何か提案をしてくれる人はいますか?ありがとう。
c++ - 以下のステートメントでのコンマの役割は何ですか?
C/C++ でこの構文にたどり着いたとき、現在 PETSc を読み込んでいます。
ここのコンマの意味がわかりません。タプルと関係ありますか?それとも過負荷の何かがありますか?