CPUで有名なIntelは、実はソフトウェアも販売しており、高性能で中々良い。

コンパイラ *

純正Intel製のCPUで相当な速度を引出すらしい。C++とFortranがある。

LAPACKのコンパイル *

工夫次第で上記FortranコンパイラによるLAPACKのビルドも可能のようです。 「Linux で PCクラスタを組む」記にて、大変有用な情報を得ることができました。以下はここの丸写しの様なものです。こちらと併用して以下の様にしたら、さしあたり私の環境(Debian, Kernel 2.4.18, ifc 7.1)で動作したようです。しかし細かい検証は**一切**行っていないため、トラブルを内包している可能性があります。

make.incは以下の様にします。

FORTRAN  = ifc
OPTS     = -O3
DRVOPTS  = $(OPTS)
NOOPT    = -O0
LOADER   = ifc
LOADOPTS = -O0 -L /opt/intel/compiler70/ia32/lib -lPEPCF90

次にMakefileの最後に以下を付け足します。

.f.o:
        $(FORTRAN) $(OPTS) -c $*.f
dcabs1.o:
        $(FORTRAN) $(NOOPT) -c $*.f
xerbla.o:
        $(FORTRAN) $(NOOPT) -c $*.f
dlamch.f:
        $(FORTRAN) $(NOOPT) -c $*.f
slamch.f:
        $(FORTRAN) $(NOOPT) -c $*.f

そして、先の「Linux で PCクラスタを組む」記から辿れるLAPACKのパッチをあてて、以下の様にコンパイルします。

make install
make blaslib
make lapacklib

上にも述べたとおり、こうしてできたライブラリは差し当たり動いてる感じです。

デバッガ *

Intel Fortran Compiler に付属のデバッガidbについてメモしようと思ったが、書くことがなかった。

各種コマンド *

stop at x # x行目にbreakpointを設定
run # プログラム実行、最初のbreakpointで停止
sh hoge # シェルでのコマンドhogeを実行

MKL *

性能の高い数値計算ライブラリ。

昔苦労したこと(ver.5の話であり、今では完全にobsolete!!!!!!) *

Linuxのmklは不具合を修正したsp1なるものも配布されているのですが、sp1自体にもLAPACKまわりに結構なバグがあって注意を要します。共有ライブラリのlibmkl_lapack.so(実体はlibmkl_lapack64.so)で定義されていない関数があるのです。

$ nm -A libmkl_lapack64.so | grep __MKL_LAPACK__dgeqrf
libmkl_lapack64.so:    U __MKL_LAPACK__dgeqrf

次のバージョンであるmkl6.0で修正されているようなのですが、リリースまでは静的にリンクするなどの対策を要します。また、マニュアルに記載されていない事項もあり、Cから使う場合はf2c依存性があるとかlibguideライブラリもリンクしなればならないとかで、実際に使えるようになるまでには随分と苦労しました。結局LAPACKをiccから使う時、リンクの際のコマンドラインは以下のようになります。(mkl.hをインクルードする必要もあります)

icc -I/opt/intel/mkl/include hoge.c -L/opt/intel/mkl/lib/32 \
/opt/intel/mkl/lib/32/libmkl_lapack.a \
/opt/intel/mkl/lib/32/libmkl_p4.a \ <---- Pentium4用
-lguide -pthread -lc -lm -lf2c

Last-modified: Thu, 24 Feb 2005 23:38:54 JST