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

計算が速くなるプログラム

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

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

nvidiaのカードをマシンに刺して、cudaライブラリをインストールします。ここでは 20180803 時点で最新のcuda9.2を使います
参照 CUDA

コンパイル

[root@c b-180803]# export PATH=/usr/lib64/openmpi/bin:$PATH
[root@c b-180803]# export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH
 
[root@c b-180803]# cmake -DCUDA=ON -DCudaTexture=ON -DCMAKE_INSTALL_PREFIX=/Appl/relion-3.0-beta-2 ..
 
[root@c b-180803]# make && make install
[root@c b-180803]# ( cd /Appl ; rm -f relion ; ln -s relion-3.0-beta-2 relion )

ちょいと確認

[root@c ~]# cd /Appl/relion-3.0-beta-2/bin/
[root@c bin]#
[root@c bin]# ldd relion_refine_mpi
        linux-vdso.so.1 =>  (0x00007ffcdcdf3000)
        libcufft.so.9.2 => /usr/local/cuda/lib64/libcufft.so.9.2 (0x00007f5c90455000)
        libmpi_cxx.so.1 => /usr/lib64/openmpi/lib/libmpi_cxx.so.1 (0x00007f5c9023a000)
        libmpi.so.12 => /usr/lib64/openmpi/lib/libmpi.so.12 (0x00007f5c8ff56000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f5c8fd52000)
        libfftw3f.so.3 => /lib64/libfftw3f.so.3 (0x00007f5c8f9d9000)
        libfftw3.so.3 => /lib64/libfftw3.so.3 (0x00007f5c8f654000)
        libcurand.so.9.2 => /usr/local/cuda/lib64/libcurand.so.9.2 (0x00007f5c8b716000)
        libcudart.so.9.2 => /usr/local/cuda/lib64/libcudart.so.9.2 (0x00007f5c8b4ac000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f5c8b1a5000)
          :
          :
[root@c bin]#

起動

各自の.bashrc/.cshrcにPATH環境変数とLD_LIBRARY_PATH環境変数を加えておきます

(bash)
export PATH=/Appl/relion/bin:$PATH
export LD_LIBRARY_PATH=/Appl/relion/lib:$LD_LIBRARY_PATH
 
(csh/tcsh)
setenv PATH /Appl/relion/bin:$PATH
setenv LD_LIBRARY_PATH /Appl/relion/lib:$LD_LIBRARY_PATH

*Relionのときと同じ

Intelコンパイラで作ってみる

別にAVX2/AVX512によるCPU-accelerationは採用せず、cudaによるGPU-accelerationを目的に
intelコンパイラでバイナリを作ってみた。

source /opt/intel/compilers_and_libraries_2018/linux/bin/compilervars.sh intel64
source /opt/intel/compilers_and_libraries_2018/linux/mkl/bin/mklvars.sh intel64
source /opt/intel/impi/2019/intel64/bin/mpivars.sh intel64

で有効後に

cd /Appl/src/relion3
cd relion-3.0_beta
 
mkdir b-180813 && cd $_
 
CC=mpiicc CXX=mpiicpc cmake -DCUDA=ON -DALTCPU=OFF -DCudaTexture=ON -DMKLFFT=ON \
-DCMAKE_C_FLAGS="-O3 -ip -g -debug inline-debug-info -xCORE-AVX2 -restrict " \
-DCMAKE_CXX_FLAGS="-O3 -ip -g -debug inline-debug-info -xCORE-AVX2 -restrict " \
-DGUI=ON -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/Appl/relion-3.0-beta-2.icc.cuda
 
make

っがcudaコードの途中で

error -- unsupported ICC configuration! Only ICC 15.0, ICC 16.0, and ICC 17.0 on Linux x86_64 are supported!

と言われる。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2018-08-13 (月) 03:51:55 (4d)