CPUで有名な[[Intel:http://www.intel.com]]は、実はソフトウェアも販売しており、高性能で中々良い。
 
 *コンパイラ [#q567829c]
 純正Intel製のCPUで相当な速度を引出すらしい。C++とFortranがある。
 **LAPACKのコンパイル [#wfa47253]
 
 工夫次第で上記FortranコンパイラによるLAPACKのビルドも可能のようです。
 [[「Linux で PCクラスタを組む」記:http://atlas.riken.jp/~shinkai/cactus/LinuxPCcluster.html]]にて、大変有用な情報を得ることができました。以下はここの丸写しの様なものです。[[こちら:http://www.ats.ucla.edu/at/software/libraries/lapack.htm]]と併用して以下の様にしたら、さしあたり私の環境(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
 
 上にも述べたとおり、こうしてできたライブラリは差し当たり動いてる感じです。
 
 
 **デバッガ [#q5d9b9d5]
 Intel Fortran Compiler に付属のデバッガidbについてメモしようと思ったが、書くことがなかった。
 
 ***各種コマンド [#r590a376]
  stop at x # x行目にbreakpointを設定
  run # プログラム実行、最初のbreakpointで停止
  sh hoge # シェルでのコマンドhogeを実行
 
 
 *MKL [#ebec02d8]
 性能の高い数値計算ライブラリ。
 **昔苦労したこと(ver.5の話であり、今では完全にobsolete!!!!!!) [#b789eb2a]
 
 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