2010年11月12日金曜日

Intel MKL での SDPA,SDPARA リンク

SDPA, SDPARA のコンパイルができたので、そのメモをしておく。
基本的に Intel MKL の場合、C は icc, C++ は icpc, Fortran は ifort なので、SDPA の場合には、最終的に icpc でリンクしている。

icpc -openmp -O -funroll-all-loops -fPIC -o sdpa sdpa_exe.o -L. -lsdpa \
-L${mumps_dir}/single/lib -ldmumps -lmumps_common -lpord -L${mumps_dir}/mumps/single/libseq -lmpiseq -L/opt/intel/11.1.072/mkl/lib/em64t -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread -L/opt/apps/isv/intel/11.1.072/lib/intel64 -lifcore

のような感じでリンクしている。
なお、MUMPS については、Makefile.INTEL.SEQ を Makefile.inc にしているが、CC が gcc になっているので、これを CC = icc に修正している。

SDPARA の場合の最終リンクは
mpicxx -O -funroll-all-loops -openmp -fPIC -o prsdpa sdpa_exe.o libprsdpa.a \
-L${mumps_dir}/parallel/lib -ldmumps -lmumps_common -lpord \
-L/opt/intel/11.1.072/mkl/lib/em64t -lmkl_scalapack_lp64 -lmkl_blacs_openmpi_lp64 -lmpi_f77 \
-L/opt/intel/11.1.072/mkl/lib/em64t -lmkl_intel_lp64 -lmkl_core -lmkl_intel_thread \
-L/opt/intel/11.1.072/lib/intel64 -lifcore
のようにしている。
これで mpirun で実行できるが、このまま単純に実行すると SDPA 自体のマルチスレッドと MKL の OpenMP が衝突するので(CPU使用率が2000%を超えたりする)、
export OMP_NUM_THREADS=1
として、OpenMP を1スレッドだけにするように設定している。

ただし、今日のところは PBS にうまく submit できていないようで、PBS からの実行はできていない。


今日の作業内容:SDPA, SDPARA コンパイル + SDPA パッケージング + 最短路問題下調べ
今日のBGM: FF12 OST [2,3,4]
今日のランチ:らく 鶏くわ焼丼とおそば
明日の予測作業時間:4h

0 件のコメント:

コメントを投稿