問題タブ [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 - fortran netcdf を使用した f2py
f2py を使用して、netcdf ライブラリを使用する Fortran コードをコンパイルしようとしています。コンパイルは機能しているように見えますが、Python でモジュールをインポートしようとすると、次のエラー メッセージが表示されます。
コンパイル中に次の出力もあります。
私が使用しようとしているコードは次のとおりです(これは問題を示すための単純化されたコードであることに注意してください):
それをコンパイルするには、次のコマンドを使用します。
これを正しく機能させる方法を知っている人はいますか? ご提案いただきありがとうございます。
ティム
numpy - コンパイラ フラグの起源の特定
コンパイル時に、どのコンパイラ フラグが設定されているかをどのように判断できますか? 環境変数が設定されていない場合、次のような奇妙な問題に対処しています。
次に、gfortran はこれらすべてのフラグを使用します。
-Wall -arch i686 -arch x86_64 -Wall -undefined dynamic_lookup -bundle
一方、これらが設定されている環境では
唯一のフラグは次のとおりです。-Wall
コードを配布するときに一貫したビルド環境を確保する方法について、私はただ迷っています。
編集: さらなる調査により、この魔法が で発生する可能性があることが示唆されてnumpy.distutils.fcompiler
いますが、わかりません!
python - f2py を使用した FORTRAN モジュールのコンパイル
私はずっと前に f2py で FORTRAN プログラムをコンパイルしていました。しかし、今日再コンパイルに失敗したとき。その理由は、適切なコンパイラを指していないことだと思います。前回、私のマシンはクリーンで、唯一のコンパイラとして gnu がインストールされていましたが、今日は からのコンパイルが多すぎますvisualstudio2012
Parallel Studio XE 2013
MinGW32-xy
Rtools
。一般的に、コードは正しいと確信しています。では、f2py を使用するための引数について、誰かが私にいくつかの提案をしてくれませんか? 以下は私のコマンドです:
その後、この投稿に基づいて、ユーザー環境に VS90COMNTOOLS=%VS110COMNTOOLS% を追加しましたが、次のエラーが発生しました。あなたの助けに本当に感謝します!
アップデート:
2 番目のコンパイル方法は機能しましたが、コンパイル プロセスでエラーが発生しました。これらのエラーを常に無視できるかどうかわかりません。
python - Fortran ライブラリを使用した Python マルチプロセッシング
Python で multiprocessing モジュールを使用して、一連のジョブをできるだけ多くのコアにマップしています。私がラップしているジョブは、ほとんどの場合、ラップされた fortran コード (f2py でラップ) で実行されます。ジョブのみを呼び出すと、すべてのコアを使用して問題なく処理されます。ただし、最初Pool().map()
に (関数を介さずに) fortran ライブラリを個別に呼び出そうとすると、次にマップを呼び出すと、プログラム全体がハングします (知りたい場合は、threading.py の 339 行目で正確にハングします。コードは) です。waiter.acquire()
私が書いているプログラムでは、ライブラリを呼び出してマップする前にライブラリを呼び出す必要があります。最初に単一のプロセスを使用して呼び出すことでこれを回避しましたPool().map()
が、これはハックであり、なぜこれをしなければならないのか知りたいです!
より明確にするために、これは機能しません。
しかし、これは:
は、Fortran ライブラリでpycamb
ある CAMB の python ラッパーです。
python - Python コード内で f2py を実行する方法
Linux Mint で python 2.7 を使用しており、f2py を使用して python コードにインポートする fortran コードがいくつかあります。
だから私は端末に入力します:
そしてそれはうまくいきます。
ここで、端末ではなく Python コード内で f2py を使用したいと考えています。私は次のようなことを試しました
しかし、うまくいきません。それが私が得るものです:
Fortran と Python の両方のコードが同じディレクトリにある
distutils を使用する必要があるかもしれませんが、方法がわかりません
どんな考えも役に立ちます
ありがとうございました
python - Python から Fortran への (およびその逆の) 配列の受け渡し
背景:
現在、私のプログラムは Python で配列をアセンブルしています。これらの配列はフロントエンド UI に接続されており、インタラクティブな要素 (つまり、配列要素内のユーザー指定の値) を持っています。これらの配列は、.txt ファイルに保存されます (後で使用する場合によって異なります)。その後、ユーザーは Python プログラムを終了し、Python 出力ファイルに基づいてシステムをシミュレートする別の Fortran スクリプトを実行する必要があります。これにはせいぜい数分しかかかりませんが、理想的には、Python UI を離れることなくプロセスを自動化したいと考えています。
配列を組み立てる (Python) ->配列を編集する (Python) ->ファイルにエクスポートする (Python)
->ファイルをインポートする (Fortran) ->シミュレーションを実行する (Fortran) ->結果をファイルにエクスポート (Fortran)
->ファイルを UI にインポート、グラフを表示 (Python)
質問:
これは可能ですか? このプロセスを自動化するためのオプションは何ですか? ファイルの繰り返しエクスポート/インポートを完全に削除できますか?
編集: FortranスクリプトがLapackを使用していることにも言及する必要があります。それが違いを生むかどうかはわかりません。
python - F2Py を使用した Fortran 行列の断続的なメモリ割り当てエラー
背景:
Fortran コードを使用して集中的な計算を行う Python スクリプトがあります。これを行うためにF2Pyを使用しています。特定の Fortran サブルーチンの 1 つが、後の計算で使用される行列を構築します。このサブルーチンはループで繰り返され、各ステップで解決されます。重要な配列と変数を使用するコードのスニペットを以下に示します。
ただし、何らかの理由で、このサブルーチンによって Python プログラムがクラッシュし、次の malloc エラーが生成されます。
このエラーは、毎回発生するわけではなく、かなりの割合でしか発生しないという点で異常です。エラーの原因は次の行にあると判断しました。
次のように変更したかのように:
エラーが停止します。ただし、Complex_Var は出力に不可欠です。それ以外の場合、プログラムは単にゼロを生成します。このスレッドは私の問題といくつかの類似点がありますが、その問題は実行するたびに発生するように見えましたが、私はそうではありません。配列が一致しないように注意しました。他の配置 (つまり、numpy の異なる配列形式を考慮していない) は、予想どおり、すぐにセグメンテーション違反を引き起こします。
質問
Complex_Var がコードを壊すのはなぜですか? 問題が系統的ではなく断続的に発生するのはなぜですか? そして、これを回避するための明白な (またはそれほど明白ではない) ヒントはありますか?
どんな助けでも大歓迎です!