Relion3からCPUの拡張命令を活用したCPU-accelerationが用意された。
使えるのは relion_refine のみです。
AVX2とAVX512向けに用意され
AVX2は、Haswell世代、第4世代Intel Coreプロセッサに装備されている(Pentium, Celeronを除く)
AVX512は、Skylake世代、第6世代Intel CoreプロセッサのCore i9(7900Xとか)から装備されている。

世代Haswell
第4世代Core
Broadwell
第5世代Core
Skylake
第6世代Core
Kaby Lake
第7世代Core
Coffee Lake
第8世代Core
Core i7 Extreme
Core i7
Core i5
Core i3
Xeon E3(v3)
E5(v3)
i7
i5
i3
Xeon D
E3(v4)
E5(v4)
i7
i5
i3
i9X(99xx)
i7X(98xx)
i9X(79xx)
i7X(78xx)
Xeon E3(v5)Xeon Bronze
Silver
Gold
Platinum
i7
i5
i3
Xeon E3(v6)i9
i7
i5
i3
Xeon E
AVX2
AVX512xxxxxxxxxx

GNU gccでも作れるようだが、intelから市販品の インテルコンパイラーならgccより早く演算するバイナリーを作れるとの事。
ここでは intel コンパイラー の「インテル Parallel Studio XE 2018 Cluster Edition for Linux」で作ってみた

準備

インテルコンパイラーの導入方法は省略
コンパイル前に環境整備を行う

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

コンパイル

インストール先を「/Appl/relion-3.0-beta-2-AVX2」とします。
*「-DGUI=OFF」としてますので、relion_mainguiは作られません

cd /Appl/src/relion3
cd relion-3.0_beta
 
mkdir b-180804.AVX2 && cd $_
CC=mpiicc CXX=mpiicpc cmake -DCUDA=OFF -DALTCPU=ON -DCudaTexture=OFF -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=OFF -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/Appl/relion-3.0-beta-2-AVX2 ..

その後「make && make install」として完了

「AVX2」の演算ユニットが入ったCPUで使えるバイナリーを得た。

同じ要領で「AVX512」版も作ってみた

rm -rf ./*
CC=mpiicc CXX=mpiicpc cmake -DCUDA=OFF -DALTCPU=ON -DCudaTexture=OFF -DMKLFFT=ON \
-DCMAKE_C_FLAGS="-O3 -ip -g -debug inline-debug-info -xCORE-AVX512 -qopt-zmm-usage=high -restrict " \
-DCMAKE_CXX_FLAGS="-O3 -ip -g -debug inline-debug-info -xCORE-AVX512 -qopt-zmm-usage=high -restrict " \
-DGUI=OFF -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/Appl/relion-3.0-beta-2-AVX512 ..
make && make install

実行

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

と環境を整えて、直接「relion_refine/relion_refine_mpi」を利用します。
確かに早くなるが、、GPU版でいいかなあ.
だが、relion謹製MotionCorrはicc版がgcc版より早い。

っで、gpuを使ったrelion_refine(_mpi)の計算はgcc版を使うけど、それ以外はicc版を使うようなqsub.shを作ってみた。

Relion/icc/qsub.sh

メモ

cuda10は、icc2018にも対応している
っで、GPUを使える形でiccでコンパイルしてみた。
結果は確かにgpuを使ってrefineを行ってくれるのだが、、、cuda.gccほど早くは無く、遅い。。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2018-12-17 (月) 21:59:15 (1d)