本家様 http://www2.mrc-lmb.cam.ac.uk/relion/index.php/Main_Page

Relion/Update Relion/GPU
MacOSX(ctffind4)
TORQUE連携

過去ログRelion/1.4

入手方法

GitHubにて提供中。
http://www2.mrc-lmb.cam.ac.uk/relion/index.php/Download_%26_installに書かれているようにgit cloneで入手します

[root@c ~]# cd /Appl/src/
[root@c src]# git clone https://github.com/3dem/relion.git
Cloning into 'relion'...
remote: Counting objects: 574, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 574 (delta 0), reused 0 (delta 0), pack-reused 570
Receiving objects: 100% (574/574), 1.23 MiB | 356.00 KiB/s, done.
Resolving deltas: 100% (319/319), done.
[root@c src]#

*gitコマンドを使うとリリース情報が得られます

[root@c src]# cd relion
[root@c relion]# git log -2
commit 195e6f2a06aed4bb2d7758db53ec919876c17a7d
Author: Bjoern Forsberg <bjorn.forsberg@scilifelab.se>
Date:   Thu Jan 26 17:42:45 2017 +0100
 
    v2.0.3 - stable
 
commit 54bbb714cbfff3e9dce721741273df99247d2014
Author: Dari Kimanius <dkimanius@gmail.com>
Date:   Thu Nov 24 17:58:46 2016 +0100
 
    v2.0.2
[root@c relion]#

コンパイル環境の準備

yumで開発環境と必要なパッケージをインストールします

[root@c ~]# yum groupinstall "Development Tools"
[root@c ~]# yum --enablerepo=epel install cmake openmpi-devel openmpi libpng12 \
              compat-libtiff3 \
              evince \
              texlive-latex \
              ghostscript \
              texlive-latex-bin-bin-svn14050.0-38.20130427_r30134.el7.noarch
[root@c ~]#

*CentOS7.3だとcmake-2.8.12がインストールされる。
CentOS7.2ではcmake-2.8.11がインストールされるので、epelリポジトリからcmake3をインストールしていた

evinceはepsファイルを表示するプログラムです。MotionCor2で得られるepsファイルの表示に使います。
「export RELION_PDFVIEWER_EXECUTABLE=evince」と指定しないとDisplay:の選択肢でエラーに遭遇する

  1
  2
  3
  4
sh: $'p\f\243\202~\177': コマンドが見つかりません
とか
sh: $'p\354Ge0\177': コマンドが見つかりません
とか

この違いは不明だが、この環境変数 RELION_PDFVIEWER_EXECUTABLE を定義して回避可能

コンパイル [nvidiaをもってない]

relion-2.xからnvidiaのGPUによる計算アシストが使えます。なくても構いません。GPU版はこちらRelion/GPU
ここではnvidiaカードが装備されていないマシンでのコンパイルを示します。
インストール先は、バージョン番号を付けた /Appl/relion-2.0.3 にしています

[root@c src]# cd relion
[root@c relion]# mkdir build-170130 && cd build-170130
[root@c build-170130]#
[root@c build-170130]# export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib64/openmpi/bin
[root@c build-170130]# export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib
 
[root@c build-170130]# cmake -DCUDA=OFF -DCMAKE_INSTALL_PREFIX=/Appl/relion-2.0.3 .. -L
-- The C compiler identification is GNU 4.8.5
-- The CXX compiler identification is GNU 4.8.5
-- Check for working C compiler: /bin/cc
-- Check for working C compiler: /bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /bin/c++
-- Check for working CXX compiler: /bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- BUILD TYPE set to the default type:  'Release'
-- Setting fallback CUDA_ARCH=35
-- Setting cpu precision to double
-- Setting gpu precision to single
-- Using non-cuda compilation....
-- Found MPI_C: /usr/lib64/openmpi/lib/libmpi.so
-- Found MPI_CXX: /usr/lib64/openmpi/lib/libmpi_cxx.so;/usr/lib64/openmpi/lib/libmpi.so
-- MPI_INCLUDE_PATH : /usr/include/openmpi-x86_64
-- MPI_LIBRARIES : /usr/lib64/openmpi/lib/libmpi_cxx.so;/usr/lib64/openmpi/lib/libmpi.so
-- MPI_CXX_INCLUDE_PATH : /usr/include/openmpi-x86_64
-- MPI_CXX_LIBRARIES : /usr/lib64/openmpi/lib/libmpi_cxx.so;/usr/lib64/openmpi/lib/libmpi.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so
-- Looking for XOpenDisplay in /usr/lib64/libX11.so;/usr/lib64/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib64/libX11.so
-- Could NOT find FLTK (missing:  FLTK_LIBRARIES FLTK_INCLUDE_DIR FLTK_FLUID_EXECUTABLE)
-- FLTK was NOT found
-- -------------------------------------------------
-- ------- WILL USE LOCALLY BUILT FLTK LIBS --------
-- -------------------------------------------------
-- no previous fltk found, the following paths are set for libs/headers TO BE built
-- FLTK_INCLUDE_DIR: /Appl/src/relion/external/fltk/include
-- FLTK_LIBRARIES:   /Appl/src/relion/external/fltk/lib/libfltk.so
-- Double-precision FFTW was NOT found
-- -------------------------------------------------
-- ------- WILL USE LOCALLY BUILT FFTW LIBS --------
-- -------------------------------------------------
-- no previous fftw found, the following paths are set for libs/headers TO BE built
-- FFTW_INCLUDES:     /Appl/src/relion/external/fftw/include
-- FFTW_LIBRARIES:    /Appl/src/relion/external/fftw/lib/libfftw3.so
-- Looking for sincos
-- Looking for sincos - found
-- Looking for __sincos
-- Looking for __sincos - not found
-- Building shared libs (smaller build size and binaries)
-- CMAKE_BINARY_DIR:/Appl/src/relion/build-170130
-- added autopick...
-- added autopick_mpi...
-- added display...
-- added find_tiltpairs...
-- added helix_toolbox...
-- added image_handler...
-- added maingui...
-- added manualpick...
-- added mask_create...
-- added particle_polish...
-- added particle_polish_mpi...
-- added particle_reposition...
-- added particle_sort...
-- added particle_sort_mpi...
-- added particle_symmetry_expand...
-- added pipeliner...
-- added postprocess...
-- added postprocess_mpi...
-- added preprocess...
-- added preprocess_mpi...
-- added project...
-- added reconstruct...
-- added refine...
-- added refine_mpi...
-- added run_ctffind...
-- added run_ctffind_mpi...
-- added run_motioncorr...
-- added run_motioncorr_mpi...
-- added stack_create...
-- added star_combine...
-- added star_compare...
-- added tiltpair_plot...
-- Configuring done
-- Generating done
-- Build files have been written to: /Appl/src/relion/build-170130
-- Cache values
BUILD_SHARED_LIBS:BOOL=ON
CMAKE_BUILD_TYPE:STRING=
CMAKE_CXX_FLAGS_BENCHMARKING:STRING=-O3 -DNDEBUG
CMAKE_CXX_FLAGS_PROFILING:STRING=-O3 -DNDEBUG
CMAKE_C_FLAGS_BENCHMARKING:STRING=-O3 -DNDEBUG
CMAKE_C_FLAGS_PROFILING:STRING=-O3 -DNDEBUG
CMAKE_EXE_LINKER_FLAGS_BENCHMARKING:STRING=
CMAKE_EXE_LINKER_FLAGS_PROFILING:STRING=
CMAKE_INSTALL_PREFIX:PATH=/Appl/relion-2.0.3
CUDA:BOOL=OFF
CUDA_NVCC_FLAGS_BENCHMARKING:STRING=-arch=sm_35  -D__INTEL_COMPILER
CUDA_NVCC_FLAGS_DEBUG:STRING=-arch=sm_35  -D__INTEL_COMPILER
CUDA_NVCC_FLAGS_PROFILING:STRING=-arch=sm_35  -D__INTEL_COMPILER -lineinfo
CUDA_NVCC_FLAGS_RELEASE:STRING=-arch=sm_35  -D__INTEL_COMPILER --disable-warnings
CUDA_NVCC_FLAGS_RELWITHDEBINFO:STRING=-arch=sm_35  -D__INTEL_COMPILER
CUFFT:BOOL=OFF
CachedAlloc:BOOL=ON
CudaForceSTL:BOOL=OFF
CudaTexture:BOOL=ON
CustomAllocMemGuards:BOOL=OFF
DoublePrec_CPU:BOOL=ON
DoublePrec_GPU:BOOL=OFF
FFTW_INCLUDES:PATH=FFTW_INCLUDES-NOTFOUND
FFTW_LIBRARIES:FILEPATH=FFTW_LIBRARIES-NOTFOUND
FFTW_PATH:PATH=FFTW_PATH-NOTFOUND
FLTK_BASE_LIBRARY:FILEPATH=FLTK_BASE_LIBRARY-NOTFOUND
FLTK_CONFIG_SCRIPT:FILEPATH=FLTK_CONFIG_SCRIPT-NOTFOUND
FLTK_DIR:PATH=FLTK_DIR-NOTFOUND
FLTK_FLUID_EXECUTABLE:FILEPATH=FLTK_FLUID_EXECUTABLE-NOTFOUND
FLTK_FORMS_LIBRARY:FILEPATH=FLTK_FORMS_LIBRARY-NOTFOUND
FLTK_GL_LIBRARY:FILEPATH=FLTK_GL_LIBRARY-NOTFOUND
FLTK_IMAGES_LIBRARY:FILEPATH=FLTK_IMAGES_LIBRARY-NOTFOUND
FLTK_INCLUDES:PATH=FLTK_INCLUDES-NOTFOUND
FLTK_INCLUDE_DIR:PATH=FLTK_INCLUDE_DIR-NOTFOUND
FLTK_LIBRARIES:FILEPATH=FLTK_LIBRARIES-NOTFOUND
FLTK_MATH_LIBRARY:FILEPATH=/usr/lib64/libm.so
FORCE_OWN_FFTW:BOOL=OFF
FORCE_OWN_FLTK:BOOL=OFF
GUI:BOOL=ON
MPI_EXTRA_LIBRARY:STRING=/usr/lib64/openmpi/lib/libmpi.so
MPI_LIBRARY:FILEPATH=/usr/lib64/openmpi/lib/libmpi_cxx.so
RELION_FLAGS_BENCHMARKING:STRING=
RELION_FLAGS_DEBUG:STRING=-O0
RELION_FLAGS_PROFILING:STRING=
RELION_FLAGS_RELEASE:STRING=
RELION_NVCC_FLAGS:STRING=-arch=sm_35  -D__INTEL_COMPILER
RELION_NVCC_FLAGS_BENCHMARKING:STRING=-arch=sm_35  -D__INTEL_COMPILER
RELION_NVCC_FLAGS_DEBUG:STRING=-arch=sm_35  -D__INTEL_COMPILER
RELION_NVCC_FLAGS_PROFILING:STRING=-arch=sm_35  -D__INTEL_COMPILER -lineinfo
RELION_NVCC_FLAGS_RELEASE:STRING=-arch=sm_35  -D__INTEL_COMPILER --disable-warnings
RELION_NVCC_FLAGS_RELWITHDEBINFO:STRING=-arch=sm_35  -D__INTEL_COMPILER
X11_INCLUDES:PATH=X11_INCLUDES-NOTFOUND
[root@c build-170130]#

っで、make

[root@c build-170130]# make && make install

これで cmake の際に指定した-DCMAKE_INSTALL_PREFIX=/Appl/relion-2.0.3で/Appl/relion-2.0.3にインストールされる
あとは

[root@c ~]# cd /Appl
[root@c Appl]#
[root@c Appl]# ln -s relion-2.0.3 relion

とかで、環境変数を

[root@c ~]# export RELION_PDFVIEWER_EXECUTABLE=evince
[root@c ~]# export PATH=/Appl/relion/bin:$PATH
[root@c ~]# export LD_LIBRARY_PATH=/Appl/relion/lib:$LD_LIBRARY_PATH

とかにすれば宜しいのかと。
RELION_PDFVIEWER_EXECUTABLEは、pdfを見る際に使用されるコマンドを指定します
fftwを最新版にして使いたい場合 Relion/SeparateCompile

倍精度、単精度計算

CPU演算を倍精度で計算するか、それとも単精度で計算するかが選べる。
既定は倍精度です。
なので倍精度が望ましいのかなと思われます。
*以前、単精度でのコンパイル方法を示したが、、

relionのバージョン番号をGUI画面に出してみる

relion-2.0.5より前だと正しく表記されていなかったが、2.0.5以降fixされた

独自の名称を付けたいのなら「relion/src/macros.h」を修正します

[root@c relion]# vi src/macros.h
 :
#ifndef MACROS_H
#define MACROS_H
 
#define RELION_VERSION "v2.0.5"     <--- 48行目
 
#include <math.h>
#include "src/error.h"
 :
[root@c relion]#

(めも)relion_refine_mpiの実行に際して

間違いがあるかもしれません

「--no_parallel_disc_io」はrank0にparticlesデータを置いて、rank0以外のslaveはそれを読む。
置き場所は、「--preread_images」ならメモリ。「--scratch_dir」ならファイルシステム。

単一ノードで計算なら
「--no_parallel_disc_io」と「--preread_images」の組み合わせなら、メモリー上にデータを展開して計算を行う。
サイズの問題でメモリーに展開できないのなら、「--no_parallel_disc_io」と「--scratch_dir」でデータをファイルシステムに置かせる
「--scratch_dir」で指定する場所は高速なストレージが望ましいかと。
下図は「--no_parallel_disc_io」と「--preread_images」の組み合わせで、relion_refine_mpiを実行しているノードのtop出力
*relionのベンチマークを使ってます。rank0のプロセス(15561)が51GBのデータを持つ(RESと%MEMの値参照)
2016y12m23d_101927388.png

複数ノードで計算なら
「--no_parallel_disc_io」を指定しないで「--scratch_dir」を指定して各ノードの特定の場所に同じデータを持たせて計算させる。
各ノードにメモリーが十分にあるのなら「--scratch_dir」の代わりに「--preread_images」もありかと
*ただし、各rank(プロセス)にデータが展開され、指定するmpirunのnpの値によってはメモリーが逼迫します
2017y01m01d_124014286.png

複数ノードで計算するのに「--no_parallel_disc_io」を指定するとrank0を持つノードにだけデータが置かれます。
するとrank0を持つノードとslaveな他のノードとの通信が多くなる。
*rank0のあるノードでのiftopの画面の一部 slaveを持つノードとの通信で瞬間的に 4.77Gbps を記録(10Gbeで接続)
(「--no_parallel_disc_io」 「--preread_images」で複数ノードによる計算)
2017y01m01d_130915871.png

(めも)計算設定画面とともに

「Compute」タブにて、下図なら
2017y01m26d_131228993.png
「--dont_combine_weights_via_disc --no_parallel_disc_io --preread_images」として渡される。
「/scrach」とスクラッチ用ディレクトリを指定しても、「Pre-read all particle into RAM」が有効なのでこれは無視される

Pre-read all particle into RAM」を「No」に変更すると「Copy particles to scratch directory」が有効になる
2017y01m26d_131735970.png
この場合「--dont_combine_weights_via_disc --no_parallel_disc_io --scratch_dir /scratch」として渡される。

次に、「Use parallel disk I/O?」を「Yes」に変更すると「--no_parallel_disc_io」フラグは消える
2017y01m26d_132412264.png
この場合は「--dont_combine_weights_via_disc --scratch_dir /scratch」として渡される

(めも)画面が自動的に閉じる

relionの画面を開いて、何もしていないと 3600秒(1時間)後に画面が自動的に閉じてしまう。
その回避方法は起動時のフラグでできそう

relion --idle 36000

と 36000(10時間) と、「--idle」で時間を指定すればいいみたい。ためしに

relion --idle 5

とかなら5秒後に画面は閉じます。

(めも)nfs client側でキャッシュを使う

CacheFSを使って擬似 scratch_dir は可能かもしれない。

SSDやNVMeの空き容量があれば、「--scratch_dir /scratch」と指定してデータを一旦高速なストレージに移して計算スピードを上げることは可能でしょうが、試すと以外に転送時間がかかる。ならCacheFSで読み込みデータのキャッシュを溜め込む手法がある。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-06-16 (金) 10:48:20 (62d)