本家様 http://sphire.mpg.de/

入手

[root@c ~]# cd /Appl/src/
[root@c src]# curl -O http://sphire.mpg.de/downloads/sphire_beta_20161216.tar.gz
[root@c src]# curl -O http://sphire.mpg.de/downloads/pydusa-1.15es-fftmpi-6__2016_09_07.tgz

展開

専用のディレクトリを掘って、そこに配置してみた

[root@c ~]# mkdir -p /Appl/sphire
[root@c ~]# cd /Appl/sphire
[root@c sphire]# 
[root@c sphire]# gzip -cd ../src/sphire_beta_20161216.tar.gz | tar xf -
[root@c sphire]# ls -l
合計 4
drwxr-xr-x 11 12686 domain users 4096 11月 27 03:38 EMAN2
[root@c sphire]#

ディレクトリ「EMAN2」が作られる。ファイル、ディレクトリ所有者を直す(不要かもしれないが)

[root@c sphire]# chown -R root:root ./EMAN2/

ディレクトリ「EMAN2」の中にあるinnstallerを実行して、環境設定ファイル(eman2.bashrc)を作る

[root@c sphire]# cd EMAN2
[root@c EMAN2]# ls -l
合計 48
lrwxrwxrwx 1 root root    6 12月 15 20:24 Python -> extlib
drwxr-xr-x 2 root root 8192 12月 15 22:34 bin
-rw-r--r-- 1 root root   32 11月 27 03:38 build_date.2016-11-26
drwxr-xr-x 2 root root 4096 11月 27 03:37 doc
-rwxr-xr-x 1 root root 3791 11月 27 03:38 eman2-installer
drwxr-xr-x 2 root root 8192 11月 27 03:37 examples
drwxr-xr-x 9 root root   96  5月 20  2014 extlib
drwxr-xr-x 2 root root   45 11月 27 03:37 fonts
drwxr-xr-x 3 root root 4096 12月 15 22:09 images
drwxr-xr-x 4 root root 4096 11月 27 03:37 include
drwxr-xr-x 4 root root 4096 11月 27 03:38 lib
drwxr-xr-x 3 root root   15 11月 27 03:37 test
[root@c EMAN2]#
[root@c EMAN2]# ./eman2-installer
export LC_CTYPE=en_US.utf8
export LC_ALL=en_US.utf8
Please add the following line to the end of your /root/.bashrc :
source /Appl/sphire/EMAN2/eman2.bashrc
[root@c EMAN2]#

作成したeman2.bashrcファイルを読み込ませれば、sphireが実行できます。っでこのeman2.bashrcの中身は

[root@c EMAN2]# cat /Appl/sphire/EMAN2/eman2.bashrc
export EMAN2DIR=/Appl/sphire/EMAN2
export PATH=${EMAN2DIR}/bin:${EMAN2DIR}/extlib/bin:$PATH
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin:${PYTHONPATH}
alias sphire=sxgui.py
alias sparx=sx.py
[root@c EMAN2]#

となってます。

次に、pydusaをインストールします。「eman2.bashrc」を読み込むことが必須

[root@c EMAN2]# source /Appl/sphire/EMAN2/eman2.bashrc
[root@c EMAN2]# cd $EMAN2DIR
[root@c EMAN2]# pwd
/Appl/sphire/EMAN2
 
[root@c EMAN2]# tar xvf /Appl/src/pydusa-1.15es-fftmpi-6__2016_09_07.tgz
[root@c EMAN2]# chown -R root:root pydusa-1.15es-fftmpi-6/
[root@c EMAN2]# ls -l
合計 56
lrwxrwxrwx 1 root root    6 12月 15 20:24 Python -> extlib
drwxr-xr-x 2 root root 8192  5月 22 10:55 bin
-rw-r--r-- 1 root root   32 11月 27 03:38 build_date.2016-11-26
drwxr-xr-x 2 root root 4096 11月 27 03:37 doc
-rwxr-xr-x 1 root root 3791 11月 27 03:38 eman2-installer
-rw-r--r-- 1 root root  196  5月 22 10:55 eman2.bashrc
drwxr-xr-x 2 root root 8192  5月 22 10:55 examples
drwxr-xr-x 9 root root   96  5月 20  2014 extlib
drwxr-xr-x 2 root root   45 11月 27 03:37 fonts
drwxr-xr-x 3 root root 4096 12月 15 22:09 images
drwxr-xr-x 4 root root 4096 11月 27 03:37 include
drwxr-xr-x 4 root root 4096  5月 22 10:55 lib
drwxr-xr-x 9 root root 4096  9月  8  2016 pydusa-1.15es-fftmpi-6
drwxr-xr-x 3 root root   15 11月 27 03:37 test
[root@c EMAN2]#

ひとまず、ここまで。
*オンラインドキュメントには ./EMAN2/utils/ があるとされているが、存在しないみたい

mpiライブラリの準備

sphireはopenmpiを使って並列計算ができるみたいで、その設定を行います。っが、openmpiを組み込む必要があります。
sphireでは「openmpiは dlopen を含まないこと」と書かれている。OS提供のopenmpiで含まれているかは「orte-info」で調べられる

[root@c ~]# /usr/lib64/openmpi/bin/orte-info |grep dl
              dl support: yes
                  MCA dl: dlopen (MCA v2.0, API v1.0, Component v1.10.3)
                MCA odls: default (MCA v2.0, API v2.0, Component v1.10.3)
                 MCA ras: loadleveler (MCA v2.0, API v2.0, Component v1.10.3)
[root@c ~]#

とCentOS7で提供しているopenmpiには dlopen が組み込まれているので駄目みたい。なので別途用意する
*オンラインドキュメントには openmpi-2.0.1 を例に挙げている。ここではopenmpi-1.10.7を取り上げた

[root@c ~]# cd /App/src
[root@c src]# curl -O https://www.open-mpi.org/software/ompi/v1.10/downloads/openmpi-1.10.7.tar.bz2
[root@c src]# bzip2 -cd openmpi-1.10.7.tar.bz2 | tar xf - && cd openmpi-1.10.7
[root@c openmpi-1.10.7]# export PATH=/sbin:/bin:/usr/sbin:/usr/bin
[root@c openmpi-1.10.7]# export LD_LIBRARY_PATH=""
[root@c openmpi-1.10.7]# ./configure --prefix=/Appl/sphire/openmpi-1.10.7_gcc-4.4.7 --disable-dlopen \
   --with-tm --without-slurm
 
[root@c openmpi-1.10.7]# make && make install

dlopenを確認すると

[root@c ~]# /Appl/sphire/openmpi-1.10.7_gcc-4.4.7/bin/orte-info |grep dl
              dl support: no
                MCA odls: default (MCA v2.0, API v2.0, Component v1.10.7)
                 MCA ras: loadleveler (MCA v2.0, API v2.0, Component v1.10.7)
[root@c ~]#

とサポートされていない事がわかる

インストール(再開)

openmpiの準備を済ませて

[root@c ~]# cd /Appl/sphire/EMAN2
 
[root@c EMAN2]# source ./eman2.bashrc
 
[root@c EMAN2]# export PATH=/Appl/sphire/openmpi-1.10.7_gcc-4.4.7/bin:$PATH
[root@c EMAN2]# export LD_LIBRARY_PATH=/Appl/sphire/openmpi-1.10.7_gcc-4.4.7/lib

としてopenmpiのパスとLD_LIBRARY_PATHを定義させます。eman2.bashrcに組み込むのもいいかもしれません

そうして、pydusaをインストールします。

[root@c EMAN2]# cd $EMAN2DIR
[root@c EMAN2]# cd pydusa-1.15es-fftmpi-6/
[root@c pydusa-1.15es-fftmpi-6]# ./install_mpi.py

*openmpiのコンパイルも同様、開発環境が必要です

インストールが完了すると eman2.bashrc に追記があり

[root@c pydusa-1.15es-fftmpi-6]# cat /Appl/sphire/EMAN2/eman2.bashrc
export EMAN2DIR=/Appl/sphire/EMAN2
export PATH=${EMAN2DIR}/bin:${EMAN2DIR}/extlib/bin:$PATH
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin:${PYTHONPATH}
alias sphire=sxgui.py
alias sparx=sx.py
export LD_LIBRARY_PATH=/Appl/sphire/EMAN2/pydusa-1.15es-fftmpi-6/fftw_mpi/installation/lib:$LD_LIBRARY_PATH
[root@c pydusa-1.15es-fftmpi-6]#

となる。「LD_LIBRARY_PATH」の部分が追記されます。
openmpi部分の連携が必要なので、ここでは下記のようにします

export EMAN2DIR=/Appl/sphire/EMAN2
export PATH=${EMAN2DIR}/bin:${EMAN2DIR}/extlib/bin:$PATH
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin:${PYTHONPATH}
alias sphire=sxgui.py
alias sparx=sx.py
export LD_LIBRARY_PATH=/Appl/sphire/EMAN2/pydusa-1.15es-fftmpi-6/fftw_mpi/installation/lib:$LD_LIBRARY_PATH
#
#
export PATH=${PATH}:/Appl/sphire/openmpi-1.10.7_gcc-4.4.7/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/Appl/sphire/openmpi-1.10.7_gcc-4.4.7/lib

実行

eman2.bashrcではaliasで定義されている。どんな方法でも構わないのだが、PATHが他のopenmpiに影響されないようにする必要があって

[root@c ~]# vi /Appl/local/bin/sphire
#!/bin/bash
export EMAN2DIR=/Appl/sphire/EMAN2
PATH=${EMAN2DIR}/bin:${EMAN2DIR}/extlib/bin:$PATH
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin:${PYTHONPATH}
LD_LIBRARY_PATH=/Appl/sphire/EMAN2/pydusa-1.15es-fftmpi-6/fftw_mpi/installation/lib:$LD_LIBRARY_PATH
export PATH=${PATH}:/Appl/sphire/openmpi-1.10.7_gcc-4.4.7/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/Appl/sphire/openmpi-1.10.7_gcc-4.4.7/lib
sxgui.py
 
[root@c ~]# chmod +x /Appl/local/bin/sphire
 
[root@c ~]# vi /Appl/local/bin/sparx
#!/bin/bash
export EMAN2DIR=/Appl/sphire/EMAN2
PATH=${EMAN2DIR}/bin:${EMAN2DIR}/extlib/bin:$PATH
export PYTHONPATH=${EMAN2DIR}/lib:${EMAN2DIR}/bin:${PYTHONPATH}
LD_LIBRARY_PATH=/Appl/sphire/EMAN2/pydusa-1.15es-fftmpi-6/fftw_mpi/installation/lib:$LD_LIBRARY_PATH
export PATH=${PATH}:/Appl/sphire/openmpi-1.10.7_gcc-4.4.7/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/Appl/sphire/openmpi-1.10.7_gcc-4.4.7/lib
sx.py
 
[root@c ~]# chmod +x /Appl/local/bin/sparx

でもいいのかなって思っている

テスト

openmpiの読み込みをテスト

[illya@c ~]$ sparx
WARNING: IPython History requires SQLite, your history will not be saved
Python 2.7.3 (default, Jul 30 2013, 15:07:49)
Type "copyright", "credits" or "license" for more information.
 
IPython 1.2.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
Welcome to the interactive SPARX-GUI Python interface, provided by ipython
   SPARX v4.0 (GITHUB: Sat Nov 26 12:37:45 2016)
 
In [1]: import mpi
 
In [2]: quit
[illya@c ~]$

IPythonで警告があるが、import mpiで問題はない
次に、sphire。

[illya@c ~]$ sphire

GUIが起動した
2017y05m22d_162834769.png

qsub

計算にはジョブスケジューラーが使えるみたい。
sphireのサイトでは、sun grid engineの場合のテンプレートを示している。
参照先:http://sphire.mpg.de/wiki/doku.php?id=howto:submissions
ここではTorqueを使っているので、その例を作ってみた

テンプレートに使えるGUIから上書きされる変数は3つ

  • XXX_SXMPI_NPROC_XXX
  • XXX_SXMPI_JOB_NAME_XXX
  • XXX_SXCMD_LINE_XXX

queueの指定項目がない。Torqueで必要なノード数(nodes)とノード当たりのコア数(ppn)の指定もない
なのでGUI画面でこれらを指定する必要がある。具体的には
2017y05m22d_164053672.png
Submission command:欄には

qsub -q batch -l nodes=3:ppn=8

として、Submission script template:は「qsub.sh」ファイルとして中身は下記とします

#!/bin/bash
#PBS -j oe
cd $PBS_O_WORKDIR
source /Appl/sphire/EMAN2/eman2.bashrc
 
mpirun --mca plm_rsh_agent rsh -machinefile $PBS_NODEFILE  -np XXX_SXMPI_NPROC_XXX  XXX_SXCMD_LINE_XXX

実行プログラムがrelionのようなハイブリッドではなく、従来のmpi仕様かなと思っている。
そうならば、「--bind-to core」で、クラスターに合わせた「--map-by ppr:8:node」(ノードに8mpi埋めたら次のノードへ)とかを付けるのが宜しいかと思われる

計算(MOVIE)

MPIプロセスが1に固定されているが、MPIで計算を行うのではなく一つのノードで「unblur」「summovie」を計算する
「number of thread」で「unblur」が使用するthread数を定めている
「Submit job to queue」を使わないとsphireを起動したマシンで計算されてしまうので注意
「Submission command」で「qsub -q batch -l nodes=1:ppn=8」とかでqueueを指定して計算ノードでの計算が宜しいかと
*「qsub -q batch -l nodes=n1.sybyl.local:ppn=8」とかnodesで特定ノードを指定するのがいいのかも

計算(CTER)

MPIで計算可能。計算対象となるmrcファイル枚数より少ない「MPI processors」を指定する
16coreなノードが二台あって、それのqueue名がbatchなら
「MPI processors」を32
「Submit job to queue」を有効にして
「Submission command」を「qsub -q batch -l nodes=2:ppn=16」として実行
「Submit job to queue」が無効なら、sphireを実行しているマシンでMPI計算が行われる
*ImportError: libfftw3_mpi.so.3: undefined symbol: fftw_ialignment_of」とエラーが生じたが
当方ではxmipp由来のLD_LIBRARY_PATHの優先順位を下げて回避できた

計算(ISAC 2D Clustering)

CTERと同じでMPIで計算可能


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-06-01 (木) 10:08:24 (1168d)