2009-04-08

fortran compilers installation on CentOS

ubuntu へのインストールは、
http://naturesflyers.blogspot.com/2010/04/ubuntu910-serverifort101025.html
の entry を参照。

----
ifort

1. 落とす
2. 計算機の適当なフォルダへ転送(via 共有)
3. 計算機に SSH でログインし、
  $ su -
  # cd /home/maz/pack_ifort
  # tar xfvz l_foobar.tgz  (←tar のオプションにはハイフンを付けないこと)
  # cd l_foobar
  # ./install.sh

license terms は space key でかっ飛ばせる。

もし、「libstdc++.so.5 が足りませんが何か?」とか言われたら、
yum でがんばる:参照


デフォルトのとこにインストールしたら、

  # ln -s -i /opt/intel/...<中略>.../ifort /usr/bin/ifort

でシンボリックリンクを作る(パスを通す代わり)。

ifort 2011 以降では、ちょっとわかりづらくなっている。似たような名前のフォルダがいくつかあって、ifort というものも複数ある。ビルド番号まで含めたディレクトリの下にあるやつが正解。2013 の場合、
  # ln -s -i /opt/intel/composer_xe_2013.1.117/bin/intel64/ifort /usr/bin/ifort
となる。

4. 依存関係のあるパッケージが足りないことがあるようなので、yum -y update しておいた方がよさそう(特に ifort 2011 以降?)。それでも -fast オプションをつけたときに
  ld:cannot find -lm
と、エラーが出た。これは、
http://uklifememo.blogspot.jp/2011/06/lm.html
にある通り、
  # yum install glibc-static
で解決した。

追記2015-01-05: ここでもエラーが出た場合、fastestmirror の問題の可能性があるので、
# vim /etc/yum/pluginconf.d/fastestmirror.conf
して enabled=1 を 0 にすればいけるかも(参考ページ)。

なお、この場合でも -fast でコンパイルすると毎回、
warning: the use of `mktemp' is dangerous, better use `mkstemp'
と言われるのだが、ググったところ飽くまで警告であって、実害はなさそうだ。

----
g95

1. 落とす
2. tar xfvz で解凍
3. # mv g95-install /opt (ここからは su でないと無理っぽい)
4. # ln -s /opt/g95-install/bin/ファイル名 /usr/bin/g95
でシンボリックリンク作るだけ。

----
gfortran


CentOS ならデフォルトで入ってる。でも使ったことない・・・

----

11.0 が出てたので入れてみた。
が、-fast オプションをやると「複数ファイルの最適化中にエラー」とかいわれてコンパイル中断された。
単一ファイルのコード(77の古い奴)は大丈夫だったが...
まだバグが残っている可能性があるので、使用中止。

そのかわりに、10.1 のサブバージョンが .018 から .022 にあがっていたので、こちらをインストール。
/usr/bin/ifort のシンボリックリンクを .022 のものに置き換え。
実際に、少し前にB4の学生(T君)が -O3 が原因のエラーに悩まされていたとかあったので、
そういったのが解消されればうれしい。

というか、-O3 って「最速」オプションじゃないんだよね、説明をちゃんと読むと。
11.0 で ifort のコメントが中途半端に日本語化されていたので気づいたけど、
デフォルトの -O2 でも「最大限最適化する」んだな。
-O3 は「更にがんばろうとするけど、場合によっては遅くなることもあるかもよ」らしい。

でもいちいち

  $ ifort -static -no-prec-div -xHOST hoge.f90 -o fuga.exe

ってするのか。せっかく -fast が -xHOST になったのにこれじゃあなぁ...

# この -xHOST ってのは、ver 11.0 から追加された機能で、
これまで -xP とか -xT とかプロセッサごとに選んでたところを自動で選んでくれるらしい。


No comments: