使えるGPUはnvidiaなカードでcompute capability3.5 以上のもの
*relion20_tutorial.pdfの2.2.1 GPU-acceleration項から
一応本家様にリストがありますが、https://developer.nvidia.com/cuda-gpus
こっちの方が見やすいです https://en.wikipedia.org/wiki/CUDA

relion-2.0でGPU計算が可能なのはスタンドアローンで実行する
refine(実態はrelion_refine)

autopick(relion_autopick)

そして、mpiを使って計算する
refine_mpi(relion_refine_mpi)

autopick_mpi(relion_autopick_mpi)
だけ。

*ただし mpi計算で rank0 に該当する refine_mpi はGPU計算できない。autopick_mpi はrank0でもGPU計算を行う
*なので、refine_mpiで計算する際、GPUカードが4枚なら 5mpi、9mpi、13mpiとかrank0以外が均等に分散されるように-npを調整する

メモRelion/GPU/memo

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

201610現在、最新のライブラリはcuda8.0である。CentOS7へはyumでインストール可能。参照CUDA

ここではcuda8.0をインストールしています。
*MotionCor2はcuda7.5が必要(161223現在)なので、cuda7.5で用意するのが宜しいかも
*MotionCor2(v01302017)がcuda-8.0に対応になったようです(170205現在)

openmpiをインストール

OS提供のopenmpiをインストールします

[root@s ~]# yum install openmpi openmpi-devel

これでcuda対応のrelionは実行できます。
あるいは、cuda対応のopenmpiを別途用意します CUDA/openmpi効果は不明

relion コンパイル

*Relion-2.0.2はfftw-3.3.4をソースで指定している。もし最新のfftw-3.3.5が使いたければ、cmake/BuildFFTW.cmakeを修正する必要がある

CPU演算を単精度もしくは倍精度のいずれかで行うようにコンパイル可能です。ここでは既定とさている倍精度でコンパイルします。
GPU演算も選べるが、倍精度にすると速度が遅くなるようで、こちらは単精度とします(GPU演算の既定は単精度)

コンパイルにはCMake-2.8.12以上が必要で、CentOS7.3で提供されるcmakeは2.8.12.2なのでこれをインストールします。

[root@s ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@s ~]# yum install cmake

そして本体をコンパイルする
ここではインストール先を /Appl/relion としています

[root@s ~]# cd /Appl/src
[root@s src]# git clone https://github.com/3dem/relion.git
[root@c src]# cd relion
 
[root@s relion]# mkdir 180821 && cd 180821 
[root@s 180821]#
 
[root@s 180821]# export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib64/openmpi/bin
[root@s 180821]# export LD_LIBRARY_PATH=/usr/lib64/openmpi/lib
 
[root@s 180821]# cmake -DCUDA=ON -DCMAKE_INSTALL_PREFIX=/Appl/relion -DDoublePrec_CPU=ON .. -L
 
[root@s 180821]# make && make install

これで/Appl/relionにインストールされます。実行時には

export PATH=/Appl/relion/bin:/usr/lib64/openmpi/bin:/bin:/usr/bin
export LD_LIBRARY_PATH=/Appl/relion/lib:/usr/lib64/openmpi/lib

とかして、
relion
と実行する

メモ

当初、-DCUFFT=ON を使ってコンパイルしたがrefine_mpiの途中で止まる現象が発生した
CUDA向けfftwは使えないのかもしれない

cuda-smi

relionでgpuカードを使用する時、物理的にどのpci-eに刺さったgpuを指定しているかはこの cuda-smi で見るしかないみたい

本家https://github.com/al42and/cuda-smi


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-08-21 (月) 16:25:04 (61d)