Fortranとlibcxa・改
http://d.hatena.ne.jp/shun_t/20040819#p2に追記
最近、intel(R) Fortran コンパイラ・ユーザーズガイドを見て知ったこと・・・。
以下抜粋
こうすればいいのかorz
コンパイラを起動する前に、環境変数を設定して、各種コンポーネントの場所を設定する必要があります。インテル® Fortran コンパイラのインストールには、環境変数の設定に使用できるシェル・スクリプトが含まれています。
ソースコマンドを使用して、コマンドラインからシェル・スクリプトを実行します。例えば、bash シェルのスクリプト・ファイルを実行するには次のとおりです:
source /opt/intel_fc_80/bin/ifortvars.sh
C シェルを使用するには、.csh バージョンのスクリプト・ファイルを使用します:
source /opt/intel_fc_80/bin/ifortvars.csh
Linux* の起動時に ifortvars.sh を自動的に実行するには、.bash_profile ファイルを編集し、ファイルの最後に上記の行を追加します。次に例を示します。
# set up environment for Intel compiler
source /opt/intel_fc_80/bin/ifortvars.sh
気が向いたときに直そう・・・。
※追伸
なんか、よう分かりませんが、始めからOpenMPを交えてコンパイルできるようになっているんですか?
書式にしたがってディレクティブをプログラムのコメント行に追記して、
ifort -openmp (filename)
とか実行すればいいんですかね。
かなり理解してないんですが・・・OpenMPって、共有メモリ型の並列計算ができるんですよね?HT対応の計算機だと、2CPUで並列計算してくれるんでしょか?計算機そのものを2台以上にしてスレッドを割り当てて並列計算したいときって、どうやってやるんでしょね?
訳わけめ。
今日分かったことといえば。
とかなっているこの2行目の「*」が、-openmpオプションつけるとなぜかコメント扱いになってコンパイル失敗する。#error:comment doesn't end to the なんたら、と。
a=a*b+c
/*d
プログラム内部の全てのコメント行を消したりして試したんですがダメ。最終的に、
と、「/」と「*」の間にスペース入れると大丈夫かも。「*」が7文字目に来ていると、コメント行か何かと勘違いされるんでしょうか。
a=a*b+c
/ *d
あと、コンパイルの自動並列化オプション-parallelなんですが・・・変数の定義順か何かがおかしいと、並列化が可能でも実行されないようですね。
※追記(9/2):
自動並列化オプションについて、自動並列化がなされないのは変数の定義順ではありませんでした。
色々試した所、どうも、ポータビリティ関数を使うとダメみたいです。
少なくとも、ctimeやtimeやgetcwd使うとだめでした。