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