Relionの特定のプログラムはGPUに処理を回してより高速に計算することができる。
ただし使えるGPUはnvidiaなカードでcompute capability3.5 以上のもの
一応本家様にリストがあります https://developer.nvidia.com/cuda-gpus
こっちの方が見やすいです https://en.wikipedia.org/wiki/CUDA

ここではRelion-3.1(GPU-acceleration版) を CentOS 8にインストールしてみます.

計算が速くなる計算項目

relion_refine と relion_autopick の2種(mpi版の relion_refine_mpi と relion_autopick_mpi も含みます)
relionのGUI画面からすると、下記計算項目のオレンジでくくった箇所の計算がGPU利用可能な計算項目となる。
2019y02m26d_232611777.png

CUDAライブラリをインストール

nvidiaのカードをマシンに刺して、cudaライブラリをインストールします。ここではcuda10.0を使います
参照 CUDA

コンパイル

既にRelionにてパッケージの取得が完了して、コンパイルに必要なパッケージもインストール済みとします

[root@c ~]# cd /apps/src/relion
[root@c relion]#
[root@c relion]# git branch   <--一応どの路線にいるか確認.
  master
  ver3.0
* ver3.1
[root@c relion]# git pull                    <--最新版にする
[root@c relion]# mkdir build && cd build     <--ビルドの場所を作ってそこに移ります
[root@c build]# module load mpi              <--openmpi環境をロードします
 
[root@c build]# cmake -DCUDA=ON -DCudaTexture=ON -DCUDA_ARCH=52 -DCMAKE_INSTALL_PREFIX=/apps/relion-3.1 ..
(-DCUDA_ARCHはMaxwell系なら5x, 10x0なら61, 20x0なら75)
(-DCMAKE_INSTALL_PREFIXはインストール先を指定します)
  :
-- BUILD TYPE set to the default type:  'Release'
  :
[root@c build]# make                         -->「make VERBOSE=1」で詳細表示になります
[root@c build]# make install

これでインストールは完了です

ちょいとcudaライブラリが参照できるか確認してみる

[root@c ~]# ldd /apps/relion-3.1/bin/relion_refine_mpi
        linux-vdso.so.1 =>  (0x00007ffc90b13000)
        libcufft.so.10 => /usr/local/cuda/lib64/libcufft.so.10 (0x00007effda503000)
          :
[root@c ~]#

大丈夫みたい. これで使用できます.



(備考1)
GPU-accelerationに intel Math Kernel Library(MKL)の FFT を組み入れてみる. relion_refineで10%前後の効果があったけど系に寄るかな
一応作り方は事前にMKLを導入してから下記の流れで作ります
*Intel Compilers runtime ライブラリ」にはヘッダファイルが含まれていないので無理

source /opt/intel/bin/compilervars.sh intel64
(あるいは「source /opt/intel/compilers_and_libraries/linux/mkl/bin/mklvars.sh intel64」)
 
module load mpi
cmake -DCUDA=ON  -DCudaTexture=ON -DCUDA_ARCH=52 -DCMAKE_INSTALL_PREFIX=/apps/relion-3.1.0 -DMKLFFT=ON ..
make
make install



(備考2)
GCCのオプションも使ってより最適化を図りたいなら「-DCMAKE_CXX_FLAGS_RELEASE」を使って修正する. 既定は「-O3 -DNDEBUG」みたい
単純に「-DCMAKE_CXX_FLAGS_RELEASE='-O3 -DNDEBUG -march=core-avx2'」とかで.
でも却って遅くなる場合もあるようなので要注意. ...実際にrelion_refine計算は遅くなりました

source /opt/intel/bin/compilervars.sh intel64
(あるいは「source /opt/intel/compilers_and_libraries/linux/mkl/bin/mklvars.sh intel64」)
 
cmake -DCUDA=ON  -DCudaTexture=ON -DCUDA_ARCH=52 -DCMAKE_INSTALL_PREFIX=/apps/relion-3.1.0 -DMKLFFT=ON -DCMAKE_CXX_FLAGS_RELEASE='-O3 -DNDEBUG -march=core-avx2' ..
make VERBOSE=1
make install

実行

参照 Relion#l84c3f30


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2020-08-24 (月) 00:21:32 (96d)