Relion3からCPUの拡張命令を活用したCPU-acceleration版が作れるみたい。
拡張命令を活用できるのは relion_refine のみですが、他のプログラム(relion_run_ctffind, relion_run_motioncorrら)も使えます。

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

relionのドキュメントにはintel CPUの拡張命令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

準備

インテルコンパイラーの導入方法は省略
インストール項目は

    インテル(R) C++ コンパイラー 19.0 Update 4
        インテル(R) C++ コンパイラー
 
    インテル(R) Fortran コンパイラー 19.0 Update 4
        インテル(R) Fortran コンパイラー
 
    インテル(R) MKL 2019 Update 4 (C/C++)
        インテル(R) MKL コア・ライブラリー (C/C++)
        クラスターサポート (C/C++)
        インテル(R) TBB スレッド化サポート
        GNU* C/C++ コンパイラー・サポート
 
    インテル(R) TBB 2019 Update 6
        インテル(R) TBB
 
    インテル(R) MPI ライブラリー 2019 Update 4
        インテル(R) MPI ライブラリー、インテル(R) 64

以前Relion/icc/191110は openmpi をインテルコンパイラーでコンパイルして、そのmpiccでrelionをコンパイルしていました。
今回は intel謹製の mpi で整備します。

コンパイル

インストール先を「/apps/relion-3.0.8.icc」とします。

[root@c ~]# cd /apps/src
 
[root@c src]# git clone https://github.com/3dem/relion
[root@c src]# cd relion
[root@c relion]# git checkout -b v3.0.8 refs/tags/3.0.8
[root@c relion]# git branch
  master
* v3.0.8
 
[root@c relion]# 
[root@c relion]# source /opt/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64
[root@c relion]#
 
[root@c relion]# mkdir b && cd b
 
[root@c b]# CC=mpiicc CXX=mpiicpc F90C=mpiifort cmake -DCUDA=OFF -DCudaTexture=OFF -DALTCPU=ON -DMKLFFT=ON \
            -DGUI=ON -DCMAKE_INSTALL_PREFIX=/apps/relion-3.0.8.icc ..
 
[root@c b]# make ; make install

実行

source /opt/intel/compilers_and_libraries/linux/bin/compilervars.sh intel64

と環境を整えて

relion

と実行する。

確かに早くなるが、、GPU版でいいかなあ.
だが、relion謹製MotionCorrはicc版がgcc版より早い。

メモ

  • modulefiles
    #%Module1.0
    set RELION /Appl/relion-3.0.8.icc
    set intel  /opt/intel/compilers_and_libraries/linux
     
    set intelmpi=$intel/mpi/intel64/libfabric/lib:$intel/mpi/intel64/lib/release
    set intelkml=$intel/mkl/lib/intel64
    set inteltbb=$intel/tbb/lib/intel64/gcc4.7
     
    prepend-path PATH            $RELION/bin:$intel/mpi/intel64/bin
    prepend-path LD_LIBRARY_PATH $intel/lib/intel64:$intelmpi:$intelkml:$inteltbb
     
    setenv RELION_QSUB_TEMPLATE  $RELION/bin/qsub.sh
    setenv RELION_QUEUE_NAME     s3
    setenv RELION_QUEUE_USE      false
    setenv RELION_RUN_VERSION    3.0.8.icc
     
    setenv RELION_CTFFIND_EXECUTABLE     /Appl/ctf/ctffind-4.1.13-linux64-compat/ctffind
    setenv RELION_MOTIONCOR2_EXECUTABLE  /Appl/MotionCor2/MotionCor2_1.3.0-Cuda101
    setenv RELION_GCTF_EXECUTABLE        /Appl/Gctf/bin/Gctf-v1.06_sm_30_cu8.0_x86_64
    setenv RELION_RESMAP_EXECUTABLE      /Appl/ResMap/ResMap-1.1.4-linux64

トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2019-11-10 (日) 05:08:39 (28d)