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

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

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

コンパイル

インストール場所は「/Appl/relion-3.0.cuda10」とします

[root@c b-190226]# export PATH=/usr/lib64/openmpi/bin:$PATH
[root@c b-190226]# export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib
 
[root@c b-190226]# cmake -DCUDA=ON -DCudaTexture=ON -DCUDA_ARCH=52 -DCMAKE_INSTALL_PREFIX=/Appl/relion-3.0.cuda10 ..
(-DCUDA_ARCHはMaxwell系なら5x, 10x0なら61, 20x0なら75)
 :
-- Using provided CUDA_ARCH=52
-- CUDA enabled - Building CUDA-accelerated version of RELION
-- Setting cpu precision to double
-- Setting accelerated code precision to single
-- Found CUDA: /usr/local/cuda (found version "10.0")
 :
-- Found TIFF: /usr/lib64/libtiff.so (found version "4.0.3")
 :
[root@c b-190226]# make && make install

ちょいと確認

[root@c ~]# cd /Appl/relion-3.0.cuda10/bin/
[root@c bin]#
[root@c bin]# ldd relion_refine
        linux-vdso.so.1 =>  (0x00007fff64273000)
        libcufft.so.10.0 => /usr/local/cuda/lib64/libcufft.so.10.0 (0x00007f97eb2a3000)
        libmpi_cxx.so.1 => /usr/lib64/openmpi/lib/libmpi_cxx.so.1 (0x00007f97eb088000)
        libmpi.so.12 => /usr/lib64/openmpi/lib/libmpi.so.12 (0x00007f97eada4000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f97eaba0000)
        libtiff.so.5 => /lib64/libtiff.so.5 (0x00007f97ea92c000)
        libfftw3f.so.3 => /lib64/libfftw3f.so.3 (0x00007f97ea5b3000)
        libfftw3.so.3 => /lib64/libfftw3.so.3 (0x00007f97ea22e000)
          :
          :
[root@c bin]#

cudaライブラリは10.0を読んでいることを確認

起動

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

(bash)
export PATH=/Appl/relion-3.0.cuda10/bin:/usr/lib64/openmpi/bin:$PATH
export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib
 
(csh/tcsh)
setenv PATH /Appl/relion-3.0.cuda10/bin:/usr/lib64/openmpi/bin:$PATH
setenv LD_LIBRARY_PATH /usr/lib64/openmpi/lib

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: 2019-02-26 (火) 23:53:39 (23d)