パスワードを忘れた? アカウント作成
11405015 journal
日記

t-nissieの日記: 【電脳】ScalascaとScore-PとをUbuntu 14.04 LTSにインストールてOpenMPのプロファイルを取る【アイドルをさがせ】

日記 by t-nissie

OpenMPで並列化しているプログラムが
Intel Xeon E5-2680でスケールしてくれない。
X5650ならまあまあスケールする。
理由を知りたい。
NUMAは泥沼。

feram-0.22.04/src/26example-BaTiO3-acoustic-MD/
X5650 1 chip = 06 thread 9192.69 s
X5650 2 chip = 12 thread 5141.94 s
E5-2680 1 chip = 08 thread 4242.12 s
E5-2680 2 chip = 16 thread 4024.90 s

perf(1)ではE5-2680 2 chip = 16 threadでOpenMPで
並列化しているとことでアイドルしているみたいというのはわかる。
しかし、それがどこか特定できない。

今回はE5-2680のマシンではScore-Pがlibiberty.aが
PICでないとかでインストールできなかったので、
とりあえずE5462なUbuntu 14.04 LTSでお試し。

準備

$ sudo apt-get install gcj-jdk libiberty-dev binutils-dev g++ libqt4-dev
$ sudo apt-get install mpich2

なんかMPICH3がインストールされるみたいだけど。

OTF2

$ md5sum otf2-1.4.tar.gz | grep a23c42e936eb9209c4e08b61c3cf5092
$ tar xf otf2-1.4.tar.gz
$ mkdir otf2-1.4/Linux-x86_64-gcc-4.8.2
$ cd $_
$ ../configure --enable-shared --prefix=/usr/local
$ make -j16
$ sudo make install
$ sudo ldconfig
$ file /usr/local/lib/libotf2.so.5.0.0  # 64bit?
$ otf2-config --version
otf2-config: version 1.4

CUBE4

$ tar xf cube-4.2.3.tar.gz
$ md5sum cube-4.2.3.tar.gz | grep 8f95b9531f5a8f8134f279c2767c9b20
$ mkdir cube-4.2.3/Linux-x86_64-gcc-4.8.2
$ cd cube-4.2.3/Linux-x86_64-gcc-4.8.2
$ ../configure --enable-shared --prefix=/usr/local
build-backend/Makefileを JAVACVERSION = "gcj-4.8" と少し直す必要があった
$ make  # Do not use -j option.
$ sudo make install
$ sudo ldconfig
$ file /usr/local/lib/libcube4.so.4.2.2  # 64bit?
$ cube-config --version
cube 4.2.3  (rev. 11262)

Score-P(CUDA supportもできるみたいだけど、今回は使わない。)

$ hash -r
$ md5sum scorep-1.3-rc2.tar.gz | grep 9be1969a511b3541e422e8ccb430d6e1
$ tar xf scorep-1.3-rc2.tar.gz
$ mkdir scorep-1.3-rc2/Linux-x86_64-gcc-4.8.2
$ cd $_
$ ../configure --enable-shared --prefix=/usr/local --with-otf2 --with-cube --with-mpi=mpich2
$ make -j16
$ sudo make install
$ sudo ldconfig
$ file /usr/local/lib/libscorep_adapter_compiler_event.so.2.0.0  # 64bit?

Scalasca

$ tar xf scalasca-2.1-rc2.tar.gz
$ mkdir scalasca-2.1-rc2/Linux-x86_64-gcc-4.8.2
$ ../configure --enable-shared --prefix=/usr/local --with-otf2 --with-cube --with-mpi=mpich3
$ make -j16
$ sudo make install
$ ls -l /usr/local/bin/sca*

使う
feramでconfigureしてできるsrc/MakefileのFC=gfortramをFC=scorep gfortranにしてmake feram
makeだけだと作ってくれない実行形式がある。

$ OMP_NUM_THREADS=4 taskset -c 4-7 scan ./feram acoustic-MD.vs.feram
$ scalasca -examine -s scorep_feram_Ox4_sum
       :
INFO: Score report written to ./scorep_feram_Ox4_sum/scorep.score
$ less scorep_feram_Ox4_sum/scorep.score

OMPがちゃんと計算されているところ?
COMがアイドルしているところか?
通信しているところか?
まあ、インストールできて、動くのはわかった。
MPI並列ならより活用できそう。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...