問題タブ [fortran]
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.
macos - Mac OS X 用 Fortran デバッガー
Mac 用の優れた Fortran デバッガーを推奨できる人はいますか (fink または macports を介して gdb などをインストールする以外に)。
fortran - Fortran 技術クエリ
Fortran には次の関数シグネチャがあります。私は Fortran 言語を初めて使用し0.
ます。以下の関数の意味は何ですか?
optimization - 速度を上げる
私が知っている幅広い質問ですが:
Fortran プログラムの実行速度を上げるための一般的なヒントはありますか?
static - gfortran および gcc と静的にリンクする混合言語
静的にリンクされた実行可能ファイルにコンパイルしたい C と Fortran で書かれたコードがあります。-fno-underscoring
( gfortranのオプションを使用して) コードを動的にコンパイルすると、すべて正常に動作します。ただし、これを .so ファイルにリンクし、必要なライブラリのほとんどを静的にリンクしてから、このブログ投稿libkrb5
で説明されている方法と非常によく似た方法で に動的にリンクしたいと考えています。
前回のブログ投稿の手順に従い、問題なく .so ライブラリをコンパイルできました。nm
Fortran サブルーチンと C 関数が表示されており、良好な状態であることを示しています。
最初の関数は Fortran で、2 番目の関数は C で記述されています。これらにはアンダースコアなどがないため、リンクする必要があります。私のメイン プログラム (Fortran) は、他の Fortran ソース ファイルと同じようにコンパイルされています。ただし、リンクしようとすると、エラーが発生します。
collect2: ld が 1 つの終了ステータスを返しました
ではmain_program.o
、
すべてが順調に見えるのに、リンクしていないのはなぜですか?
c++ - BLAS はどのようにしてこのような極端なパフォーマンスを実現するのでしょうか?
好奇心から、私は独自の行列乗算関数と BLAS の実装をベンチマークすることにしました。結果には少なくとも驚きました。
カスタム実装、1000x1000 行列乗算の 10 回の試行:
BLAS 実装、1000x1000 行列乗算の 10 回の試行:
これは単精度浮動小数点数を使用しています。
私の実装:
2 つの質問があります。
- nxm * mxn は n*n*m の乗算を必要とするため、1000^3 または 1e9 演算を超える場合。BLAS の 2.6Ghz プロセッサで 10*1e9 操作を 1.32 秒で実行するにはどうすればよいですか? 乗算が 1 回の操作で他に何も実行されていない場合でも、約 4 秒かかります。
- 実装が非常に遅いのはなぜですか?
fortran - Fortran 構造体とポインター
C の関数があります。この関数を Fortran から呼び出したいと考えています。この関数には、ポインターによって渡される 2 つの構造体が含まれています。Fortran でこれを行うにはどうすればよいですか?
元:
C:
これを Fortran から呼び出すにはどうすればよいですか? これa
が入力構造で、b
が出力構造です。Fortran で構造体を埋めることはできますが、通過後にデータを維持することができません。
fun(*a,*b)
Fortranで呼び出すにはどうすればよいですか?
fortran - Fortran 実行時エラーは、出力を書き込むことで「修正」されました
インテル Fortran コンパイラーを使用してコンパイルしたい研究用の古いコードに問題があります。write
特定のサブルーチンでは、ループ インデックスの値を出力するだけのステートメントを追加しない限り、セグメンテーション違反が発生します。
この書き込みステートメントでセグメンテーション違反が修正されるようなエラーの原因は何ですか? (注: j は整数として宣言されます)
ありがとう、キーリー
fortran - Fortran関数と戻り値
入力と出力の両方を引数として受け取る関数をFortranで作成するにはどうすればよいですか?例えば:
出力値を利用したい。このようなことを試しましたが、出力変数が値を保持していません。
具体的には、入力と出力をパラメーターとして受け取るFortranからC関数を呼び出しています。入力値を正常に渡すことができますが、出力変数が値を取得していません。
printing - PRINT または WRITE ステートメントをフォーマットして、コンソール画面の現在の行を上書きするにはどうすればよいですか?
DOループで行った計算の進行状況をコンソール画面に表示したい。次のように、進行状況変数を端末に出力できます。
コンソール画面での上記のコードの出力は次のとおりです。
10.00 20.00 30.00 40.00 50.00 60.00 70.00 80.00 90.00 100.00
すべてが同じ行にあり、コンソール ウィンドウによってのみラップされます。
ADVANCE='No'引数とTL10 (タブが非常に多くのスペースを残した) 編集記述子は、同じ行のテキストを上書きするのにうまく機能します。たとえば、次のコードの出力です。
は:
500
それ以外の:
100 500
TL4 編集記述子のためです。
これら 2 つの例から、WRITE ステートメントは、別の WRITE ステートメントによって、または同じ WRITE ステートメントの前の実行 (DO ループなど) によって書き込まれたものを上書きできないと結論付けることができます。
これはどうにか克服できるでしょうか?
Windows 7 RC1 で FTN95 コンパイラを使用しています。(G95 コンパイラのセットアップ プログラムは Windows 7 RC1 をブルースクリーンしますが、Vista では問題なく動作します。)
Fortran 95 書き込みステートメントで改行を抑制するという質問については知っていますが、その質問に対する答えは、同じ行の前の出力に新しい出力が追加されることを意味するため、私にはうまくいきません。新しい出力が以前の出力を上書きする代わりに。
前もって感謝します。
arrays - INTEGER 配列のサイズを 200,000,000 に指定すると、StackOverflowException が発生するのはなぜですか?
200,000,000 は、最大の 32 ビット INTEGER である 2,147,483,647 よりもはるかに小さいです。