問題タブ [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.
fortran - ifort のスレッド化された DGEMM
DGEMM を呼び出す作業プログラム (FORTRAN、コンパイラ: Intel ifort 11.x) を実装しました。次のようにコンパイルすることで、これを並列化する簡単な方法があることを読みました。
私はクアッドコア プロセッサを使用しているので、(bash 経由で) プログラムを実行します。
私の仮定では、DGEMM は自動的に 4 つのスレッドを呼び出し、その結果、行列の乗算が高速化されるというものでした。それは起こっていないようです。何か不足していますか?どんな助けでも大歓迎です。
fortran - 引数としての DGEMM と数値定数
BLAS DGEMM行列乗算関数を使用しているときに、初期化されていない結果行列 C を次のように呼び出すと、結果に NaN が含まれることに気付きました。
ただし、事前に ALPHA と BETA を宣言すると、次のようになります。
その後、乗算は正常に機能します。引数の宣言が機能する理由について、誰か考えがありますか?
インテル Fortran コンパイラーとその MKL ライブラリーを使用していることに注意してください。
fortran - Compaq VisualFortranとGNUFortranの違いは何ですか?
Linuxでは、gfortranを使用しましたが、WindowsのCompaq Visual Fortran 6.5(CVF)で開発されたFortran77コードのコンパイルに失敗しました。TYPE
一部のエラーは、CVFやPRINT
gfortranなど、さまざまなキーワードの変更に関連しています。
CVFとgfortranの詳細な比較はありますか?
linker - Compaq Visual Fortran - .LIB ファイルのリンク中にクラッシュする
Compaq Visual Fortran でコンパイルすると、ワークスペースに追加したはずの .lib ファイルにあるはずのエラー (リンカー プロセスの開始時) が表示されます。
私がググった場所によると、Compaq Visual Fortran (バージョン 6、FYI) はライブラリ ファイルを見つけることができないようです...
私の主な質問は、それらをどのように使用するのですか? 他に見つからないファイルがある可能性はありますか? これが私が試したことです:
- 右クリック -> FileView ウィンドウでファイルを追加
- [プロジェクト] -> [設定] の下に移動し、[リンク] タブをクリックし、入力カテゴリの下で、オブジェクト/ライブラリ モジュール (bprop.lib rprop.lib) の下にライブラリ ファイルを追加し、追加のライブラリ パスがファイルの場所を指すようにします。また、[リソース] タブの下でこれを行い、[追加のリソース インクルード ディレクトリ] と表示されている場所に、これらのファイルが配置されているディレクトリを配置しました。
- 私のベースをカバーするために、これらのファイルを、コンパイルされた実行可能ファイルが生成されるプロジェクトワークスペースファイルの場所、およびこれらのファイルを見つけるために CVF が検索する可能性があると私が考えることができるほとんどすべての場所に配置しました。
少し背景:
90 年代に最後にコンパイルされたこの Fortran 実行可能ファイルがあります。私の調査によると、これは 16 ビットでコンパイルされたものであり、64 ビット マシンでは動作しません。
元のコードには、少なくとも収集できる限り、16 ビットのコンパイル済みライブラリが含まれています。元のコンパイラがなければ、それらの見方や使い方がわかりません。また、実際には .FOR ファイルである (半) 同等のライブラリ ファイルもあります。私たちが知っている限りでは、BPROP.FOR と BPROP.LIB は同じファイルである可能性があります (これらは同じソース コード領域で見つかりました)。BPROP.FOR ファイルを使用する場合、プログラムはコンパイルできますが、そのファイルで使用/収集/処理された情報まで追跡した結果に問題があります。
ただし、32 ビット版 (私たちの考えでは) は同じ .lib ファイルです。そのため、それを使用しようとしています。これは、上記のエラーが発生する Fortran 実行可能ファイルをコンパイルするために使用されているものです。
gfortran - ifort の代わりに gfortran でコンパイルする
ifort 用に最適化されたプログラムがありますが、代わりに gfortran を使用してコンパイルしたいと考えています。提供されるフラグは次のとおりです。
対応するオプションを見つけるために両方のマニュアルエントリを調べましたが、何も見つけることができませんでした (既に知っている -fopenmp の -openmp 以外)。
segmentation-fault - セグメンテーション違反のスタック トレースが長くなりますか?
「-traceback」でコンパイルされた ifort は 10 行しか出力しませんが、少なくとも 10 レイヤー内にある内部サブルーチンでセグメンテーションが発生しました。そのため、seg-fault が発生した正確なルーチンは表示されません。
その MPI プログラムと実行中の gdb は実行可能なオプションではありません..
助けはありますか?
thnx
parallel-processing - コードを並列化しないでください
なぜifortはこのコードを並列化しないのですか?「ループは並列化されていませんでした:並列依存の存在」と言い続けています。依存関係がどこにあるのかわかりません。gfortranは並列コードを生成しますが、高速化はそれほど速くありません。
fortran - ファイルサイズが大きいIntelFortranコンパイラ
私はFortran77で書かれたレガシーコードの大きな部分を持っています。私はそれをコンパイルし、Intel Fortranコンパイラ(バージョン11?)で実行しています。最近、出力ファイルのサイズが2GBに達し、出力がディスクに書き込まれなくなるという問題が発生しました。
これがFortran77標準の一部であるかどうか、または単にコンパイラフラグなどが欠落しているかどうかを確認するために探し回っていますが、問題を示すものは見つかりませんでした。
レガシーコードは数十万行のオーダーであるため、書き込みステートメントを変更することはできません。最悪のシナリオは、数日ごとに出力の前の部分を別のファイルに切り捨てることですが、これを行う必要がないことをお勧めします。
fortran - 合計を並列化する方法は?並列ループとworshareからの異なる結果
タイトルにあるように、OpenMPを使用して合計を並列化したいと思います。私はさまざまなアプローチを探しましたが、それらが何をするのか理解していないか、機能しませんでした。これが私が見つけたものです:
1)
動作しますが、何が起こり、どのようなメリットが得られるのかわかりません。
2)
間違った(1)または3))結果を出します。
3)もちろん、新しい配列(並列化)を計算して、これを最終的に合計することもできます...
それを最もよく行う方法のヒント?
visual-studio - MS Visual Studio 2010 内でサブルーチン/モジュールを検索する方法
MS Visual Studio 2010 (Intel Visual Fortran Composer XE 2011 を使用) でサブルーチンとモジュールを検索する方法はありますか? たとえば、別のサブルーチン サブネームを呼び出すサブルーチン (他の誰かによって作成された) にいる場合、通常は「ファイル内検索」を使用してこの後者のサブルーチンを見つけますが、関数を右クリックするなど、より直接的な方法 (またはモジュール) 名? 私は何も見つけることができませんでした。ありがとう