Fortranでよく見られるように、私は大規模な並列科学コードを作成しています。私のコードの初めに、私が使用したいソルバーのタイプを教えてくれる設定ファイルを読んだ。今では(メイン実行中)サブルーチンで、私はいくつかの混乱を避けるためにFortranで関数ポインタがある場合
if(solver.eq.1)then
call solver1()
elseif(solver.eq.2)then
call solver2()
else
call solver3()
endif
編集を持っていることを意味します。私の時間積分ループ内にあると私は内部の3つのネストされたループであるものを持っている。この場合。
私の質問は、solver
変数が実行中に変更されないため、初期化手順以外では関数ポインタを使用する方が効率的ではないでしょうか。
明らかに、関数ポインタはF2003です。私がgfortran 4.6を使用している限り、それは問題ではありません。しかし、私は主にBlueGene Pを使用していますが、f2003コンパイラがあるので、Web上で決定的な証拠は見つけられませんでしたが、そこでもうまくいくと思います。
BlueGeneで作業している場合、なぜXLFortranを使用していないのですか?それは非常によく文書化されています。ここから始めることができます。http://www-01.ibm.com/software/awdtools/fortran/ –
申し訳ありませんが明示的ではありません。もちろん、私はBGでXLFortranを使用します。なぜ今日このページを見つけられなかったのですか?間違ったキーワードを探していたに違いありません。プロシージャポインタが正常であることを明確に述べています。どうも。この特定の状況のために – Azrael3000
私はプリプロセッサを使用し、すべての実行可能ファイルから条件文を取得します。 – agentp