問題タブ [f2py]
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.
python - f2py は、サブルーチン内の明示的な整形配列を好まない
を使用して、いくつかの Fortran コードから python モジュールをコンパイルしようとしていますf2py
。コードは ifort で問題なくコンパイルされますが、f2py を使用するとエラーが発生します。コードは次のとおりです (2 つのファイルにまたがっています)。
gdat.f90:
part.f90:
を使用してコンパイルしましf2py -c gdat.f90 part.f90 -m part
たが、nx と ny が定義されていないというエラーが表示されます。 /src.linux-x86_64-2.7/untitledmodule.c:180: エラー: 'nx' 宣言されていません (この関数で最初に使用)
明示的に整形された配列の定義に問題があるようARR
です。私が言うように、それはifortでうまくコンパイルされます。
これが単純なコードであり、別の方法で記述できることはわかっていますが、これは私が書いた単なるテスト ピースです。 (中央モジュールの変数を使用して境界を定義します)、この他のコードを書き直すのではなく、これを機能させたいと思います!
python - Mac OS X で f2py を使用しようとするとエラーが発生しますか?
Mac でf2pyを使用しようとしています。f2py
ターミナルに入力すると、次のように返されます。
これを修正する方法はありますか?numpy と scipy をインストールしました。
python - Pythonをフロントエンド、Fortranをバックエンドにしたい。私もFortran部分を並列にしたい - 最善の戦略は?
私は大まかにこれをやりたいpythonスクリプトを持っています:
いくつかの粒子位置を配列に呼び出します
アルゴリズムを 512^3 のすべての位置で実行して、それらを NxNxN 行列に分配します
その行列を python にフィードバックします
Pythonでプロットを使用してマトリックスを視覚化します(つまりmayavi)
最初にシリアルで記述する必要がありますが、理想的にはステップ 2 を並列化して計算を高速化する必要があります。どのようなツールや戦略から始めることができるか。私は Python と Fortran をよく知っていますが、特定の問題のために 2 つを接続する方法についてはあまり知りません。現時点では、Fortran ですべてを実行してから、Python プログラムをロードしています。一度にすべて実行したいと考えています。ありがとう
編集:私が並列にしたいのは「恥ずかしいほど並列」であり、それはN個の粒子の単なるループであり、そのループをできるだけ早く通過したい.
python-2.7 - Python で Cython と iso_c_bindings を使用して fortran90 サブルーチンを使用する方法
最近まで、私は計算問題の大部分に IDL を使用してきました。私が最も頻繁に使用するルーチンの 1 つは、C でラップされ、CALL_EXTERNAL 関数を使用して IDL から呼び出されるちょっとした fortran90 コードです (これは私が書いたものではありません)。さまざまな理由から、計算の大部分を Python に移行していますが、Fortran コードを組み込むための適切な方法がわかりませんでした。F2PY が最も明白な方法のように見えますが、実際には結果として得られるモジュールは非常に不安定なようです。
基本的に、問題にアプローチするためのより良い方法があるかどうか疑問に思っています。既存の C ラッパーと Cython を Python のコードを使用するように作り直すのは比較的簡単なようですが、私は C/Cython について完全に無知であり、Python にはまったく慣れていないことを告白しなければなりません。 .
参考までに、既存の C ラッパーを以下に含めます。
編集: これを他の誰かに言及した後、中間のCラッパーの必要性をバイパスして、fortran ISO_C_BINDINGSモジュールを使用してCythonと直接インターフェースすることも可能であるべきだと彼らは提案しました。
python - f2py と distutils の混合
Fortran サブルーチンを使用する myscript.py ファイルを含む Python パッケージ「trees」があります。
通常、私は fortran モジュールをコンパイルします
そして、私はそれを行うことができます
calctree.so を利用する
実行してdistutilsですべてをパッケージ化すると
setup.py の内容はどこにありますか
MANIFEST.inファイルに「include trees/calctree.f90」を指定すると、.f90ファイルをインクルードできますが、ユーザーのコンピューターでf2pyでコンパイルし、.soファイルを配置する方法がわかりません適切な場所で。誰でも助けることができますか?
ありがとうございました!
python - F2PY でモジュールが見つからない
f2py でコンパイルされたモジュールを Python で動作させるのに苦労しています。
Linux 64 ビット マシンで適切にコンパイルされる Fortran で書かれたソフトウェアがあります。さらに F2Py では、Fortran ビットも使用する Python モジュールをコンパイルします。
Python モジュールのコンパイル方法は次のとおりです。
しかし、そのモジュールをインポートしようとすると、(Ipython で) エラーが発生します。
正直なところ、私はこのエラーに混乱しています。検索はあまり役に立たなかったので、ここで質問する必要があります。どうすれば検索を機能させることができますか? modファイルと同じディレクトリにpythonモジュールコードを配置すると、同じエラーメッセージが表示されます。
ここに私の(プリミティブ)コードの一部があります:
少し前のことを正しく思い出せば、このモジュールはインポート可能でしたが、debian64 インストールまたは debian32bit コンピュータでは動作しないようです。
python - f2py を使用して Python から Fortran にその場でベクトルを割り当てる
Pythonによって呼び出されるサブルーチンの次の開始があります。
以下を使用して Python から呼び出されます。libomp.cic(pos,mpart,boxsize,dim,npart)
Python スクリプト実行時のエラー:
何らかの理由でnpart
、整数として設定すると機能npart
しますが、Pythonから受信してその場で配列を作成することはできませんpos
。mesh
を使用しても機能しdim
ませんがpos
、なぜですか? それらが呼び出される順序と関係がありますか?
distutils - F2PYコンパイルステップをsetup.pyに変換します
私は、プログラムが実行されるたびに対話型コマンドプロンプトを介して大量のユーザー入力を必要とするプログラムブロックを介して実行されるいくつかのサブルーチンを実装するFortran77コードを継承しました。コードの実行を自動化したいので、すべてのサブルーチンをモジュールに移動し、F2PYを介してラッパーコードを記述しました。2ステップのコンパイル後、すべてが正常に機能します。
これにより、最終的に、、、、およびの3つのファイルが作成さmy_module.o
れます。これは、レガシーFortranコードにアクセスするためにPythonにインポートするモジュールです。my_wrapper.o
my_module.mod
my_wrapper.so
my_wrapper.so
私の目標は、このコードを科学コードのより大きなパッケージに含めることです。このパッケージには、Cythonモジュールの構築にすでにsetup.py
使用されています。distutils
今のところCythonコードを完全に無視していますが、2ステップのビルドを拡張機能に変換するにはどうすればよいですsetup.py
か?私が理解できた終値は次のようになります。
ただし、これは機能しません。私のコンパイラはに多くの警告をスローしますmy_module.f90
が、それでもコンパイルされます(上記のコンパイラ呼び出しを使用しても警告はスローされません)。ただし、ラッパーをコンパイルしようとすると、my_module.mod
正常に作成されていても、は見つかりません。
何かご意見は?些細なことを見逃しているような気がしますが、ドキュメントはそれが何であるかを示すのに十分に具体化されていないようです。
python - 商用ライブラリからのサブルーチン呼び出しの除外
多くの便利なサブルーチンを含む fortran ファイルがあり、f2py を使用して Python インターフェイスを作成したいと考えています。
この問題は、一部の fortran サブルーチンが NAG ライブラリ (c06ebf という名前) から FFT サブルーチンを呼び出すために発生します。Python にインポートすると、「undefined symbol: co6ebf」という警告が生成されます。
Fortran サブルーチン内で FFT を実行し、f2py を使用してそこから Python インターフェイスを作成できる他の方法はありますか?
python - f2py とインクルード ファイル
prog.f という Fortran プログラムをコンパイルしています。これには、test.inc という名前のインクルード ファイルが含まれています。以下は正常に実行され、インクルード ファイルが見つかったことを示しています。prog.so ファイルが生成されました。
ただし、Python からこのモジュールを呼び出すと、次のエラー メッセージが表示されます。
コンパイルの引数に何か関係があると思いますが、Fortran にはあまり詳しくありません。インクルード ファイルも含める必要がありますか? もしそうなら、どのように?