#author("2025-08-13T12:37:50+00:00","default:sysosa","sysosa") #author("2025-08-14T18:29:07+00:00","default:sysosa","sysosa") 本家様 [[https://relion.readthedocs.io/en/latest/>+https://relion.readthedocs.io/en/latest/]] git [[https://github.com/3dem/relion>+https://github.com/3dem/relion]] RelionをRHEL9系のRockyLinuxで構築してみます. 全ての計算はCPUで行えます. 特定の計算項目によっては、NVIDIA様、AMD様、Intel様のGPU(Graphics Processing Unit)カードで計算速度が向上します. -NVIDIA謹製GPU: &color(magenta){compute capability}; が &color(magenta){''3.5''}; 以上のモノが必要です. [[https://en.wikipedia.org/wiki/CUDA>+https://en.wikipedia.org/wiki/CUDA]] 10x0なら6.1(Pascal)、20x0なら7.5(Turing)、30x0(Ax000)なら8.6(Ampere)、40x0(x000ada)なら8.9(Ada Lovelace)、50x0なら12.0(Blackwell) &size(10){nvidia driverが必須です. driverのversionによって利用可能なCUDAライブラリが異なります. またGPUカードによっては搭載可能なdriverの制限があります}; -AMD謹製GPU: HIP/ROCm, (Heterogeneous-compute Interface for Portability/Radeon Open Compute platform), AMD Radeon PROシリーズやコンシューマー向けのRadeon RX 6000/7000も対応している様子 [[https://en.wikipedia.org/wiki/ROCm]] -intel謹製GPU: SYCL,SYstem-wide Compute Language 仕様なコンパイラでコンパイルするならintel謹製GPUも使えるらしい. GPUの恩恵が得られない計算項目でも[[oneAPI]]を使えば処理速度の向上が図られる場合があります. メモ事: [[Relion/OpenPBS]] relion向けにジョブ管理システム「OpenPBS」を作成する &size(10){[[slurm]]の場合 [[Relion/slurm]]}; [[Relion/qsub/original]] ジョブ管理システム経由でrelionを利用する場合の「qsub.sh」について [[Relion/qsub]] ジョブ管理システム経由でrelionを利用する場合の「qsub.sh」について. その2. &size(10){パネルを変えてみた}; [[Relion/oneAPI]] intel謹製コンパイラで作ってみた [[Relion/napari]] DynaMightの描画を向上したい ***下拵え [#b9bd1d8c] relionのコンパイル要件は本家様にも書かれております relion-5.0[[https://relion.readthedocs.io/en/release-5.0/Installation.html>+https://relion.readthedocs.io/en/release-5.0/Installation.html]] relion-4.0[[https://relion.readthedocs.io/en/release-4.0/Installation.html>+https://relion.readthedocs.io/en/release-4.0/Installation.html]] relion-3.1[[https://relion.readthedocs.io/en/release-3.1/Installation.html>+https://relion.readthedocs.io/en/release-3.1/Installation.html]] まずは必要なパッケージをインストール #code(nonumber){{ (RHEL7系) yum groupinstall "Development Tools" yum --enablerepo=epel install cmake openmpi-devel libX11-devel fftw-devel libtiff-devel texlive-latex-bin \ texlive-cm texlive-dvips ghostscript evince fltk-fluid pbzip2 zstd (RHEL8系) dnf groupinstall "Development Tools" dnf install cmake openmpi-devel libX11-devel fftw-devel libtiff-devel texlive-latex-bin \ texlive-cm texlive-dvips ghostscript evince python2-tkinter pbzip2 zstd dnf --enablerepo=devel,powertools install fltk-fluid (RHEL9系) dnf groupinstall "Development Tools" dnf install cmake openmpi-devel libX11-devel fftw-devel libtiff-devel texlive-latex-bin \ texlive-cm texlive-dvips ghostscript evince pbzip2 zstd dnf --enablerepo=devel install fltk-fluid (ubuntu20.04/22.04) apt update apt install cmake git build-essential mpi-default-bin mpi-default-dev libx11-dev libfftw3-dev libtiff-dev libpng-dev libfltk1.3-dev \ evince xdvik-ja texlive-fonts-extra texlive-fonts-recommended texlive-lang-cjk xdvik-ja python2 python-tk python3-tk pbzip2 }} &size(10){python2-tkinter, python-tkは relion_it.py に必要だから. REHL9はpython2を未サポートなので relion_it.py は使えないみたい. pbzip2はパラレルでbzip2で圧縮されたイメージを展開できる代物}; あとnvidiaドライバーとcudaライブラリのインストールを行います. 参照[[NVIDIA]] ***relion-5.0の構築 [#m9c41bba] ver5からrelion向けにpythonアプリを構築する必要があります. このサイトではpythonアプリは pyenv を敷いて、その上にanaconda(miniforge)を置いてpython仮想実行環境を用意しています. #code(nonumber){{ git clone https://github.com/yyuu/pyenv.git /apps/pyenv export PYENV_ROOT=/apps/pyenv export PATH=$PYENV_ROOT/bin:$PATH pyenv install --list <--これでanaconda,minicondaのバージョンが一覧されます. pyenv install anaconda3-2025.06-1 pyenv global anaconda3-2025.06-1 source /apps/pyenv/versions/anaconda3-2025.06-1/etc/profile.d/conda.sh conda update conda (既に「pyenv-anaconda」環境があるなら) source /apps/pyenv/versions/anaconda3-2025.06-1/etc/profile.d/conda.sh }} これでrelion向け pythonアプリ の構築準備が整いました relionのソースコードをgitで取得します. ここでは /apps/src にソースを置いてアプリは /apps/ に配置してます. #code(nonumber){{ [root@rockylinux9 ~]# mkdir /apps/src && cd $_ [root@rockylinux9 src]# git clone https://github.com/3dem/relion [root@rockylinux9 src]# cd relion [root@rockylinux9 relion]# git checkout ver5.0 <--- git操作で ver5.0 系に切り替えます branch 'ver5.0' set up to track 'origin/ver5.0'. Switched to a new branch 'ver5.0' [root@rockylinux9 relion]# git branch master * ver5.0 [root@rockylinux9 relion]# (確認) [root@rockylinux9 relion]# less src/macros.h : #define RELION_SHORT_VERSION "5.0.0" : [root@rockylinux9 relion]# }} まずは relion向けpythonアプリのpython仮想実行環境を作ります #code(nonumber){{ [root@rockylinux9 relion]# ls -l environment* -rw-r--r--. 1 root root 940 Aug 13 07:54 environment_blackwell.yml <-- blackwall向け -rw-r--r--. 1 root root 880 Aug 13 07:53 environment.yml [root@rockylinux9 relion]# conda env create -f environment.yml [root@rockylinux9 relion]# conda env list : relion-5.0 /apps/pyenv/versions/anaconda3-2025.06-1/envs/relion-5.0 <-- 作られたrelion向けpythonアプリが入ったpython仮想実行環境 : [root@rockylinux9 relion]# exit <-- 一旦ログアウトします(condaの環境を引きずっているので) }} 再度rootでログインしてrelionアプリを構築 ここではインストール場所は「/apps/relion-5.0.0」、GPUカードが RTX A2000なので CUDA_ARCHは 86、CUDAライブラリは「/usr/local/cuda-12.8」 relion向けpython仮想実行環境は「/apps/pyenv/versions/anaconda3-2025.06-1/envs/relion-5.0」にあるので、そのpythonは 「/apps/pyenv/versions/anaconda3-2025.06-1/envs/relion-5.0/bin/python」となる. そしてモデルファイルの配置場所が「/apps/relion-torch」にした. #code(nonumber){{ [root@rockylinux9 ~]# mkdir /apps/relion-torch <-- 「/apps/relion-torch」はモデルファイルの配置場所 [root@rockylinux9 ~]# mkdir /apps/src/relion/50 <-- コンパイル場所を用意します [root@rockylinux9 ~]# cd /apps/src/relion/50 [root@rockylinux9 50]# module load mpi/openmpi-x86_64 <-- openmpiの実行環境(PATH,LD_LIBRARY_PATら)をmodule コマンドでロードします [root@rockylinux9 50]# cmake .. -DCMAKE_INSTALL_PREFIX=/apps/relion-5.0.0 \ -DCUDA_ARCH=86 \ -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.8 \ -DPYTHON_EXE_PATH=/apps/pyenv/versions/anaconda3-2025.06-1/envs/relion-5.0/bin/python \ -DTORCH_HOME_PATH=/apps/relion-torch (この段階で/apps/relion-torch に Classranker model、Blush model、ModelAngeloのweightsファイルがダウンロードされます) [root@rockylinux9 50]# [root@rockylinux9 50]# make -j 20 ; make install <-- コンパイルとインストール [root@rockylinux9 50]# du -hs /apps/relion-torch 12G /apps/relion-torch [root@rockylinux9 50b]# make -j 20 ; make install [root@rockylinux9 50]# /apps/relion-5.0.0/bin/relion --version RELION version: 5.0.0-commit-c6a99b Precision: BASE=double, CUDA-ACC=single [root@rockylinux9 50]# }} これで一応完成. PATHを通して relion と実行するとこんな感じ &ref(2023y10m29d_013549794.png,nolink,50%); ***EnvironmentModules(relion-5.0.0) [#r12f6d3b] 「/apps/modulefiles/relion/5.0.0」 #code(nonumber){{ #%Module1.0 module load mpi set RELION /apps/relion-5.0.0 prepend-path PATH $RELION/bin setenv RELION_QSUB_COMMAND sbatch --gres=gpu:4 # guiパネルで使用するGPU枚数を修正可能に. setenv RELION_MPIRUN mpirun setenv RELION_QSUB_TEMPLATE $RELION/bin/qsub.sh setenv RELION_QUEUE_NAME workq setenv RELION_QUEUE_USE false setenv RELION_QSUB_NRTHREADS 4 setenv RELION_THREAD_MAX 16 setenv RELION_QSUB_NRMPI 4 setenv RELION_MPI_MAX 32 setenv RELION_MPIRUN "mpirun --mca mtl psm2 --mca btl ^ofi" # mpi通信に使うnicによって変化 setenv RELION_ERROR_LOCAL_MPI 32 #ローカルで32mpiより多く指定して計算するとエラー掲示 setenv RELION_SHELL csh # ctffindを外部コールに使用するSHELL setenv RELION_EXTERNAL_RECONSTRUCT_EXECUTABLE relion_external_reconstruct setenv RELION_CTFFIND_EXECUTABLE /apps/ctffind-4.1.14/bin/ctffind setenv RELION_MOTIONCOR2_EXECUTABLE /apps/MotionCor2/MotionCor2_1.6.4_Cuda121_Mar312023 setenv RELION_GCTF_EXECUTABLE /apps/GCTF_Gautomatch_Cu10.1/GCTF_v1.18_sm30-75_cu10.1 setenv RELION_RESMAP_EXECUTABLE /apps/ResMap/ResMap-1.1.4-linux64 setenv RELION_PDFVIEWER_EXECUTABLE evince setenv RELION_SCRATCH_DIR \$TMPDIR # scratchの場所. pbsproのTMPDIRを使うなら setenv RELION_EXTERNAL_RECONSTRUCT_EXECUTABLE /apps/SIDESPLITTER/sidesplitter_wrapper.sh setenv SIDESPLITTER /apps/SIDESPLITTER/sidesplitter }} ***relion-4 [#kbe42211] 一つ前のrelionを用意したい gitでver4.0に移ってcmake/makeで終わりかな #code(nonumber){{ [root@rockylinux9 ~]# cd /apps/src/relion/ [root@rockylinux9 relion]# git branch master * ver5.0 [root@rockylinux9 relion]# git checkout ver4.0 branch 'ver4.0' set up to track 'origin/ver4.0'. Switched to a new branch 'ver4.0' [root@rockylinux9 relion]# git branch master * ver4.0 ver5.0 [root@rockylinux9 relion]# less src/macros.h : #define RELION_SHORT_VERSION "4.0.2" : [root@rockylinux9 relion]# mkdir 40 [root@rockylinux9 relion]# cd 40 [root@rockylinux9 40]# [root@rockylinux9 40]# module load mpi/openmpi-x86_64 [root@rockylinux9 40]# cmake -DCMAKE_INSTALL_PREFIX=/apps/relion-4.0.2 .. -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.8 -DCUDA_ARCH=86 [root@rockylinux9 40]# make -j 20 && make install [root@rockylinux9 40]# /apps/relion-4.0.2/bin/relion --version RELION version: 4.0.2-commit-27a67b Precision: BASE=double [root@rockylinux9 40]# }} ***EnvironmentModules(relion-4.0.2) [#j38cec3d] 「/apps/modulefiles/relion/4.0.2」 基本、「/apps/modulefiles/relion/5.0.0」をコピーして一部を修正でいいかな #code(nonumber){{ set RELION /apps/relion-5.0.0 ↓ set RELION /apps/relion-4.0.2 }} ***memo [#b0921f83] DynaMightでの描画ツールを動かそうとしているのだが、なかなか重い. リモート操作で結構なデータ転送がある. あとちょっと動かすとアクセス先のCPUが結構使われる. &size(10){ある分だけ?}; Xming/mobaXterm経由で画面描画は遅い. XDMCPでも重い. nvidiaドライバ由来の openGL ライブラリを使うと多少は軽くなるっぽい. &size(10){XDMCPとX11サーバとで}; #code(nonumber){{ (nvidia-smiの出力) |=======================================================================================| | 0 N/A N/A 5381 G /usr/libexec/Xorg 4MiB | <-- 「graphical.target」ならgdmが使うので. | 0 N/A N/A 8468 C+G ...023.09-0/envs/relion-5.0/bin/python 1090MiB | type欄のCはCompute(CUDAを使った計算など), GはGraphics(描画プロセス). +---------------------------------------------------------------------------------------+ nvidia由来のopenGLライブラリがないと「C」のみ表記される }} 左がOS由来のopenGL、右がNVIDIA由来のopenGLでの「glxinfo -B」の結果. #code(nonumber){{ [root@rockylinux9 ~]# glxinfo -B [root@rockylinux9 ~]# glxinfo -B name of display: localhost:10.0 name of display: localhost:10.0 display: localhost:10 screen: 0 display: localhost:10 screen: 0 direct rendering: Yes direct rendering: Yes Extended renderer info (GLX_MESA_query_renderer): Memory info (GL_NVX_gpu_memory_info): Vendor: Mesa/X.org (0xffffffff) Dedicated video memory: 6138 MB Device: llvmpipe (LLVM 15.0.7, 256 bits) (0xffffffff) Total available memory: 6138 MB Version: 22.3.0 Currently available dedicated video memory: 5925 MB Accelerated: no OpenGL vendor string: NVIDIA Corporation Video memory: 15983MB OpenGL renderer string: NVIDIA RTX A2000/PCIe/SSE2 Unified memory: yes OpenGL core profile version string: 4.6.0 NVIDIA 535.113.01 Preferred profile: core (0x1) OpenGL core profile shading language version string: 4.60 NVIDIA Max core profile version: 4.5 OpenGL core profile context flags: (none) Max compat profile version: 4.5 OpenGL core profile profile mask: core profile Max GLES1 profile version: 1.1 Max GLES[23] profile version: 3.2 OpenGL version string: 4.6.0 NVIDIA 535.113.01 OpenGL vendor string: Mesa/X.org OpenGL shading language version string: 4.60 NVIDIA OpenGL renderer string: llvmpipe (LLVM 15.0.7, 256 bits) OpenGL context flags: (none) OpenGL core profile version string: 4.5 (Core Profile) Mesa 22.3.0 OpenGL profile mask: (none) OpenGL core profile shading language version string: 4.50 OpenGL core profile context flags: (none) OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 535.113.01 OpenGL core profile profile mask: core profile OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20 OpenGL version string: 4.5 (Compatibility Profile) Mesa 22.3.0 OpenGL shading language version string: 4.50 OpenGL context flags: (none) OpenGL profile mask: compatibility profile OpenGL ES profile version string: OpenGL ES 3.2 Mesa 22.3.0 OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20 }} 「NAPARI_PERFMON=1 relion」と実行すると描画のスピード(?)が表示される. &size(10){1フレームに掛かった秒数でしょうか}; noVNCとか、xrdpとか、VirtualGLとかでも検証かなぁ.