問題タブ [intel-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.

0 投票する
1 に答える
847 参照

profiling - ifort 11.1 からビルドされたプロファイリング コードは __powr8i4 ルーチンを生成します。これは何ですか?

Intel 11.1 で Fortran コードを作成しました。プロファイリング データを生成するために、-p オプションを付けてビルドしました。これらの結果を確認すると、コードの一部ではないルーチンがいくつか存在します。それらはIntelによってそこに置かれたと思います。以下が含まれます:

他にもあります。最適化せずにコードをビルドすると、コードはそれらに多くの時間を費やしません。ただし、結果は __powr8i4 が 3.3% の時間で使用されていることを示しています。ただし、最適化を使用してコードをビルドすると、この数値は約 35% まで上がります。これらのルーチンが何であるかはわかりませんが、コードを最適化するためにどこを見ればよいか知りたいので、結果を混乱させています。

0 投票する
2 に答える
190 参照

fortran - 関数の戻り値の時期尚早なファイナライズ

画面に「Finalization」と書き込むだけt_fileのファイナライズルーチンを備えた派生型があります。closeタイプのインスタンスを返す関数もありますt_file。このプログラムの出力は次のとおりです。

2つの質問があります:

  • 出力のにファイナライズが行われるのはなぜですか?Just opened
  • ファイナライズが2回行われるのはなぜですか?

私のコンパイラはIntel(R)Visual Fortran Composer XE201112.1.3526.2010です。

コードは次のとおりです。

0 投票する
1 に答える
543 参照

arrays - ポインターとして定義されたポインター配列の Fortran 配列 (ifort 11.1 のバグ?)

1 つの質問と 1 つの問題があります (関連していると思います)。

質問: ポインターとして定義されたポインター配列の Fortran 90 配列を使用できますか?

問題: ifort 11.1 が最後の書き込みで segfault を与えるコード (以下を参照) があります。gfortran 4.6.3、ifort 11.1.072、12.0.1 などの他のコンパイラは問題なく動作しました。

コードは、Python の append 関数のシミュレーションと考えることができます。

期待される結果は次のとおりです。

ifort 11.1 では、最後の行でセグメンテーション違反が発生します。今、奇妙なことが来ます。文字列型の整数の宣言をコメントアウトすると、ifort 11.1 でも期待される結果が得られます。

これはコンパイラの問題ですか、それとも非標準の Fortran 90 構造を使用していますか?

0 投票する
2 に答える
12325 参照

visual-studio-2010 - エラー LNK2019: 未解決の外部シンボル MPI_INIT が関数で参照されています

Visual Studio 2010 と Intel Composer XE 2011 SP1 の試用版、Intel と組み合わせた ifort Visual fortran コンパイラを使用して、MPI を使用した X 線吸収スペクトル モデリング用の FDMNES というソフトウェア パッケージを Windows で初めてコンパイルしようとしています。 Pararel Studio 2011. 64 ビット バージョンの ifort を使用してすべてのオブジェクト ファイルをコンパイルすることができましたが、ファイルをリンクするときに、次のエラーが表示されます。

コマンド /L"C:\PathtoMPILibrary\" を追加して、64 ビット Intel MPI ライブラリと MPICH2 64 ビット ライブラリにリンクしようとしましたが、うまくいきませんでした。また、mingw32 パッケージの gmake で実行するこの makefile を使用してみました。

しかし、gmake を実行すると、次のエラーが表示されます。

フォーラムを使い果たしました。64 ビット ウィンドウで MPI を使用してコンパイルする必要があります。どんな助けでも大歓迎です!ありがとう。

0 投票する
1 に答える
586 参照

generics - ifortコンパイラで一般的な内部プロシージャを使用する

以下はgfortranまたはf95で機能しますが、ifortでは機能しません。

ifortはこのエラーを返します:

どのモジュールプロシージャも使用できず(モジュールにaddrとaddiを含めたくない)、ifortをコンパイラとして使用する必要があると想定します。どんな助けでもいただければ幸いです。

0 投票する
2 に答える
2142 参照

fortran - ループカウンターを最終値より大きくしないようにするにはどうすればよいですか?

したがって、サンプルループ:

2の最終値として私を与えますi。WindowsでIntelFortranfor Visual Studioをセットアップして、の最終値を取得するにはどうすればよい1ですiか?

0 投票する
1 に答える
1770 参照

makefile - Makefile:Intel fortran、フォルダー内のソースファイル、およびIntel Math Kernel Library

/exフォルダーにmain.f90があります。また、f77サブルーチンファイルは/ ex/srcにあります。また、サブルーチンファイルは再びBLASおよびLAPACKライ​​ブラリを使用します。BLASとLAPACKの場合、Intel MathKernelLibraryを使用する必要があります。

IntelFortranおよびmklフォルダーは次のようになります。

コンパイルされる/exのmain.f90のmakefileコードは何ですか?ありがとう!

0 投票する
2 に答える
2396 参照

fortran - ifortを使用した配列コピーのプログラムクラッシュ

このプログラムはIllegal instruction: 4MacOSXLionand ifort(IFORT)12.1.020111011でクラッシュします

同じプログラムがgfortranで動作します。問題ありません。何か案は ?コピーを展開し、列に対して明示的なループを実行すると、両方のコンパイラで機能します。

ポインタの代わりに割り当て可能であることに注意してください。問題はありません。

ステートメントがモジュール内にあるかどうかに関係なく、動作は同じです。ifort(IFORT)12.1.320120130でも同じ動作を確認します。

どうやら、Linuxとifort12.1.5では問題は発生しません

次のリンクオプションを使用してスタックサイズを増やしてみました

ifort -Wl,-stack_size,0x40000000,-stack_addr,0xf0000000 test.f90

しかし、それでも同じエラーが発生します。ulimit-sを同じ問題に増やす。

編集2:もう少しデバッグを行いましたが、アレイのスプライシング操作時に問題が発生するようです

16Mのデータに疑わしいほど近い値が含まれます。

作成されたオペコードを比較していますが、よりコミュニケーションのとれた中間コード形式を見る方法があれば、喜んで感謝します。

0 投票する
1 に答える
12515 参照

visual-studio-2010 - Fortran 90 モジュールの不思議な性質

Fortran 90 モジュールはエバネッセント クリーチャーです。私はしばらくの間、(単一の)モジュールを使用していましたが、ある程度成功しました(Intel Visual FortranとVisual Studio 2010を使用してコンパイルしました)。次に、このエラーを受け取る前に、別のモジュールを作成して別の関数で使用しようとしました。

そのため、問題のあるモジュールを削除しました。しかし、元のモジュールにアクセスしようとすると、同じエラーが表示されます!

これらの謎の生き物をどのように見つけることができますか? 1 つのモジュールでは機能するのに 2 つのモジュールでは機能しないのはなぜですか? それらを削除して再コンパイルするか、何らかの方法でそれらを含めるようにコンパイラーに指示する必要があると想定しています。ソース コードのファイルの場所は知っていますが、コンパイル先がわかりません。

0 投票する
0 に答える
1178 参照

linux - Intel ifort コンパイラーを使用して標準出力へのバッファー付き I/O を有効にする

-assume buffered_ioifort (またはを使用) でバッファリングされた I/O を有効にすることに関する Intel ドキュメントを読みましたが、FORT_BUFFERED=trueこれはファイルへの直接出力で機能します。ただし、ファイルにリダイレクトされるstdout (write(*,*)または など) に書き込む大規模なアプリケーションがあります。write(stdout,*)この場合、どちらのバッファリング手法も機能しません。

ファイルに直接書き込むようにコードをリファクタリングする以外に、ifort を使用して stdout でバッファリングされた I/O を有効にする方法はありますか? これは、gfortran などではデフォルトで有効になっています。

SLES 11 で ifort 12.0 を使用しています。

更新: コメントありがとうございます。回避策として、stdbuf および/またはバッファリング プログラム (tee など) を介したパイプ処理を調査しています。まだ、測定可能な違いを生み出すことはできませんでした。

更新 2:

私は Douglas の提案でいくつかの実験を試み、別のプログラムを介してパイプしました。tee と cat の両方がバッファリングします。実際、バッファリングはパイプ自体によって約 8K で行われるようです。ただし、元の write() 呼び出し、パイプ、およびパイピング プログラムのシステム コール (tee、cat など) のオーバーヘッドが高すぎて、これを実行可能なソリューションにすることはできません。