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利用可能な計算項目となる。
2018y09m13d_054046510.png

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コンパイラ(インテル Parallel Studio XE 2018)でバイナリを作ってみた。cuda10を使ってます
intel様のmpiでもいいのですが、openmpiを使ってます

source /opt/intel/compilers_and_libraries_2018/linux/bin/compilervars.sh intel64
bzip2 -cd openmpi-1.10.7.tar.bz2 | tar xf - && cd openmpi-1.10.7
CC=icc CXX=icpc FC=ifort ./configure --prefix=/Appl/local/openmpi-1.10.7_intel-18.0.2 
make && make install
cd relion-3.0_beta
 
mkdir b-181101 && cd $_
source /opt/intel/compilers_and_libraries_2018/linux/bin/compilervars.sh intel64
export PATH=/Appl/local/openmpi-1.10.7_intel-18.0.2/bin:$PATH
export LD_LIBRARY_PATH=/Appl/local/openmpi-1.10.7_intel-18.0.2/lib:$LD_LIBRARY_PATH
 
CC=mpicc CXX=mpicxx cmake -DCUDA=ON -DALTCPU=OFF -DCudaTexture=ON -DMKLFFT=ON -DCUDA_ARCH=61 \
-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

一応、作ることはできたけど、、、relion_refine_mpiで試したが、gcc版より遅くなった....

*cuda-9.2の時は下記メッセージが表示されました。

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-11-02 (金) 02:20:01 (47d)