問題タブ [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.
mpi - MPI と OpenMP。私にも選択肢がありますか?
より高速に実行しようとしている線形代数コードがあります。これは、ループと行列ベクトルの乗算を含む反復アルゴリズムです。これまでのところ、MATMUL (Fortran Lib.)、DGEMV を使用しました。OpenMP で独自の MV コードを作成しようとしましたが、アルゴリズムはスケーラビリティの点で優れていません。割り当てているプロセッサの数に関係なく、スピードアップはかろうじて 3.5 ~ 4 です (64 個のプロセッサを試しました)。プロファイリングは、Matrix-Vector でかなりの時間が費やされていることを示しており、残りはごくわずかです。私の質問は、大量の RAM とプロセッサを備えた共有メモリ システムを使用していることです。コードの OpenMP 実装 (Matrix Vector を含む) を微調整しようとしましたが、役に立ちませんでした。MPI でのコーディングは役に立ちますか? 私は MPI のプロではありませんが、メッセージ通信を微調整する機能は少し役立つかもしれませんが、確信は持てません。コメントはありますか?
より一般的には、私が読んだ文献によると、MPI = Distributed、OpenMP = Shared ですが、それらは他の領域でうまく機能しますか? Shared の MPI のようなものですか? それはうまくいきますか?うまくやれば、OpenMP 実装よりも優れていますか?
linux - パスを計算ノードにエクスポートする方法、並列プログラミング
ifort の使用に問題があります。コードを ifort/mpich1 でコンパイルしましたが、複数のノードで実行しようとすると、コードが特定のポイントに達し、エラーが発生してハングします。
調べてみると、これは ifortvars シェル スクリプトが計算ノードでソースされていないことが原因であると確信しています (1 つのノードでコードをシリアルに起動しようとしても、ifort vars をソースしていない場合、同じ結果が得られます)。正確なエラー)。
この問題を回避する最善の方法は何ですか? .bashrc ファイルに「source ...」コマンドがあるため、mpirun を実行すると「.bashrc」ファイルが実行されないようです。また、 /etc/bash.bashrc ファイルに行を追加しようとしましたが、うまくいきませんでした。あるいは、コンパイル時の静的リンクで問題が解決するのではないかと考えたので、含めました
ifort でコンパイルしても役に立たない場合でも、エラーが発生します。
誰もがこの問題を回避する方法を知っていますか? 基本的に、コンパイルされたプログラムを実行するときに「ソース ifortvars」を必要としないように ifort でコンパイルする方法 (より望ましい解決策)、または私のパスをプッシュする方法、またはMPI 呼び出しを介して変数をソースしますか? ありがとう。
debugging - gdb-デバッグシンボルが見つかりません-しかし、デバッガーはとにかく動作します
gdbでデバッグを可能にするには、デバッグシンボルを見つける必要があると思いましたが、gdbはそれらがなくても動作するようです(?)。私はcコードとfortranコードを混ぜています。今日の私の目標は、コードのc部分をデバッグすることでした。メインはcにあり、Fortranコードは、このメインによって呼び出される一部のライブラリにのみ介入します。興味のあるコードのビットを、Linux上のiccで次のフラグを使用してコンパイルします。
コードでgdbを実行すると、
'/my/path/myexecutable.outからシンボルを読み取っています...(デバッグシンボルが見つかりません)...完了しました。
しかし、その後、cコードを正しくデバッグすることに成功しました。コード行を読み取り、正しくステップするなど。すべてが機能することを非常に嬉しく思いますが、私の質問は、gdbがデバッグシンボルが見つからないことについてのステートメントを表示する必要があるかどうかです。または多分それらは必要ありませんか?
ありがとう!
c - idbが関数を見つけることができません—ヒントはありますか?
idbが私の関数の1つにステップインできないことがわかりました。
cプログラム(main.c)を、別のモジュール(mod2)の別の関数(func2)にリンクするモジュール(mod1)に属するfortran90関数(func1)にリンクしています。構造はそのようなものです
main.c(c)---> func1からlib1.a(fortran)のmod1へ---> func2からlib2.a(fortran)のmod2へ
*問題は次のとおりです。idbを使用してfunc2にステップインできません。func1からfunc2にステップインしようとすると、デバッガーはfunc1の次の行に移動します。fortranモジュールにステップインできないことがわかっているので、gdbを使用しませんでしたか?
次のフラグを使用してIntel11.1でコンパイルしています。
どうしたらいいかわからない、ヒントをいただければ幸いです
Edit:IIは、lib1.aを使用せずにlib2.aを直接呼び出す単純なFortran90プログラムを作成しました。idbもlib2.aにステップインできないことがわかりました。
私は次のようにライブラリをコンパイルします
何が問題になっているのかわかりません。通常、そのようなライブラリをコンパイルすると、デバッガーが機能します。
何か案が?
c - コンパイラによって定義されたプリプロセッサ マクロのリストを生成します
gcc と gfortran を使用すると、コンパイラによって定義されたプリプロセッサ マクロのリストを生成できます (ouah の回答を反映するように編集されています)。
と
それぞれ (少なくとも Linux では)。
Intel コンパイラの icc と ifort で同じことを行うにはどうすればよいですか? ifort の場合、これらのマクロがここで定義されていることは知っていますが、使用中の正確なマクロとその値は使用するコンパイラ オプションに依存するため、このリストを自分で生成できるようにしたいと考えています。また、 predefプロジェクトについても認識しています。
fortran - Fortranでのサブルーチンの呼び出し(セグメンテーション違反)
次のコードは、Linuxシステムでpgf90を使用してコンパイルするとセグメンテーションエラーが発生しますが、WindowsでIntelVisualFORTRANを使用すると正常に実行されます。
これについて何か説明はありますか?
fortran - ディレクトリが存在するかどうかをテストする
Fortan90 を使用してディレクトリが存在することを確認しようとしています。私が見つけたさまざまなサイトで:
ただし、ディレクトリが存在するかどうかをinquire
返し、このコードを2回実行するとエラーメッセージが表示されますFalse
ディレクトリを作成できません。ファイルは既に存在します
私が使用する場合:
既存のファイル テストでは、 をinquire
返しますtrue
。
ディレクトリの存在を確認するにはどうすればよいですか? ubuntu 11.04 と ifort コンパイラを使用しています。
environment-variables - ifort 環境変数セットのエラー
Intel コンパイラが必要だったので、Intel Composer XE をインストールしました。
問題は、インストールを完了すると、次のメッセージが表示されることです。
/home/gsrodrigues/intel/composer_xe_2011_sp1.9.293 にあるインテル(R) Composer XE 2011 Update 9 の使用を開始するには:
次のいずれかを使用して、ターミナル ウィンドウの環境変数を設定します (32 ビット プラットフォームを使用している場合は、「intel64」を「ia32」に置き換えます)。
csh/tcsh の場合:
バッシュの場合:
インストールされたコンパイラを呼び出すには: $ source install-dir/bin/compilerv ars.sh intel64
ヘルプを表示するには、-help オプションを追加するか、man コマンドを前に付けます。
入門ドキュメントの表を表示するには: install-dir/Documentation/en_US/documentation_f.htm。
しかし、「intel64」コマンドを使用しようとするたびに、次のメッセージが表示されます。
-bash: /home/gsrodrigues/intel/composer_xe_2011_sp1.9.293/bin/intel64/idbvars.sh: そのようなファイルまたはディレクトリはありません
「ia32」コマンドを使用しても問題は発生しませんが、単純な fortran 実行可能ファイルを作成できません。
fortran - Fortran 90 サブルーチンを "PURE" にするには、何を変更する必要がありますか?
コード モジュール (Fortran F90 ファイル) を定義し、次の 2 つのサブルーチンを提供しました。
コンパイラ (Intel Fortran 12、32 ビット Windows を対象とするものは何でも) は、1 つのエラー メッセージを返します。
error #7137: PURE プロシージャで参照されるすべてのプロシージャ (定義された操作または代入を介して参照されるものを含む) は、PURE を明示的に宣言する必要があります。【エクスローテーション】
私は少し困惑しています。PURE サブルーチン「DummyDummy」がコンパイルされるように、このコードを変更するにはどうすればよいですか?
formatting - 変数に依存する出力のフォーマット文字列
いくつかの変数に依存するように書式設定された Fortran 書き込みステートメントが必要です。たとえば、次のように書くことができます。
どこでnvari = 3
。しかし、場合によっては、実際に 4 つの変数 (つまりnvari = 4
) がある場合はどうなるでしょうか。私はこのようなものを書きたいと思います:
さて、nvari
何でもかまいませんし、出力は私が好きなように機能します。どうすればこのようなものを作ることができますか?