本家様 https://wiki.dynamo.biozentrum.unibas.ch/w/index.php/Main_Page
MATLABが必要です.
ですが、ダウンロードしたファイルに MATLAB のRuntime版(コンパイル済みのMATLABファイルを実行できる)が入ってますので
それを使えばMATLAB(フル機能版)は不要です.
ここではダウンロードしたファイルに付属の MATLAB Runtime版でDynamoを動かす.
https://www.dynamo-em.org/w/index.php?title=DownloadsからLinux向けのtarファイルを取得します。
ファイル名: dynamo-v-1.1.557_MCR-24.1.0_GLNXA64_withMCR.tar (9.5 GB, 10,216,212,480 bytes )
途中で切れることがあるので、「link」欄からURLを取得して、wgetで取った方がいいかも。途中で切れたら「wget -c 」で継続すればいいので.
このtarには MATLAB のruntime(version 24.1)が入ってます.
MATLAB言語で書かれたプログラムソース(matlab/src/)が(製品版の)MATLABでバイナリーに変換され(matlab/bin)、そのバイナリーを動かすためのruntimeが入っている.
プログラムソースが入っているので(製品版の)MATLABをお持ちなら自分でコンパイル、あるいは修正も可能のようです. dynamoのライセンスはよく分かりませんけど
まずは展開します. 展開したら 10 GB 消費してました
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.5 (Blue Onyx)
[root@rockylinux9 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 570.133.07 Fri Mar 14 13:12:07 UTC 2025
GCC version: gcc version 11.5.0 20240719 (Red Hat 11.5.0-2) (GCC)
[root@rockylinux9 ~]# mkdir -p /apps/dynamo/
[root@rockylinux9 ~]# cd /apps/dynamo/
[root@rockylinux9 dynamo]# ls -l /Public/em/dynamo-v-1.1.557_MCR-24.1.0_GLNXA64_withMCR.tar
-rw-rw-rw-. 1 root root 10216212480 Mar 30 12:55 /Public/em/dynamo-v-1.1.557_MCR-24.1.0_GLNXA64_withMCR.tar
[root@rockylinux9 dynamo]# tar xf /Public/em/dynamo-v-1.1.557_MCR-24.1.0_GLNXA64_withMCR.tar
[root@rockylinux9 dynamo]# du -hs .
10G .
[root@rockylinux dynamo]# ls -CF
C/ ddemos/ dynamo_activate_linux.sh* dynamo_activate.m* dynamo_setup_cluster.sh* examples/ matlab/ mex/ README_dynamo_installation.txt*
cuda/ doc/ dynamo_activate_linux_shipped_MCR.sh* dynamo_compile_mpi.sh* dynamo_setup_linux.sh* licenses/ MCRLinux/ mpi/
[root@rockylinux dynamo]#
これでインストールは完了.
あとはPATHとLD_LIBRARY_PATHの定義で使えるようになります.
ドキュメントではMATLABがなければ「dynamo_activate_linux_shipped_MCR.sh」を実行してMATLAB runtimeの環境を作り、またその中にある「dynamo_activate_linux.sh」で
dynamo実行の向けての環境が整備されます. あとは「dynamo」で動く流れですね.
ここではいつものように environment-modulesで連携しているので 「dynamo_activate_linux_shipped_MCR.sh」 は使わずmodule コマンドで済ませます
「/apps/modulefiles/dynamo」として下記を記載します
#%Module1.0
puts stdout "source /apps/local/bin/dynamo-mkdir;"
set dynamo /apps/dynamo
set MCR $dynamo/MCRLinux
setenv DYNAMO_ROOT $dynamo
prepend-path LD_LIBRARY_PATH $MCR/runtime/glnxa64:$MCR/bin/glnxa64:$MCR/sys/os/glnxa64
prepend-path PATH $dynamo/matlab/bin:$dynamo/matlab/src:$dynamo/cuda/bin:$dynamo/mpi:$dynamo/examples:$dynamo/doc
setenv MCR_CACHE_ROOT /tmp/mcr_cache_root_$env(USER)
他
「/apps/local/bin/dynamo-mkdir」も用意します
#!/bin/bash
if [ ! -d /tmp/mcr_cache_root_$USER ]; then
/bin/mkdir /tmp/mcr_cache_root_$USER
fi
このファイルには実行権を付けます.「chmod +x /apps/local/bin/dynamo-mkdir」
[saber@rockylinux9 ~]$ module use /apps/modulefiles
[saber@rockylinux9 ~]$ module load dynamo
[saber@rockylinux9 ~]$ dynamo
Initializing MATLAB Runtime version 24.1
"MCR libraries starting dynamo. Starting the Dynamo console can take some time. A good choice of MCR_CACHE_ROOT might speed this up."
Launching the console....
(use "dynamo x" for a Dynamo graphics terminal on a independent window)
Dynamo console for standalone modus
-----------------------------------
* Commands starting with the symbol "!" will be passed to the system
* Commands starting with the symbol "\" will be executed as Matlab expressions
* Strings including the symbol ":" are treated as database queries
* Graphic output: enabled
* Type "help" for a list of console control commands
Dynamo >
[Ctrl-C]でdynamoを終了させてプロンプトに戻りますが、
引き続き dynamo のコマンドを実行します
Dynamo > dcm
Passing to MATLAB...
Resize selection
Resize selection
Dynamo >
これでGUI画面が表示されます
mpiプログラムが存在しています. 使えるなら再コンパイルは不要かなと思いますが、
必要なら下記のようにコンパイルします
[root@rockylinux9 dynamo]# module load mpi/openmpi-x86_64
[root@rockylinux9 dynamo]# which mpirun
/usr/lib64/openmpi/bin/mpirun
[root@rockylinux9 dynamo]# source mpi/dynamo_compile_mpi.sh mpic++
Using selected compiler mpic++
trying to compile MPI wrappers for Dynamo standalone executables
/usr/lib64/openmpi/bin/mpic++
ok, mpic++ found, proceeding to compile MPI-wrappers....
./mpi/dynamo_iteration_setup_mpi.cc compiled
./mpi/dynamo_iteration_compute_mpi.cc compiled
./mpi/dynamo_iteration_assemble_mpi.cc compiled
./mpi/dynamo_iteration_check_mpi.cc compiled
./mpi/dynamo_ccmatrix_compute_mpi.cc compiled
./mpi/dynamo_ccmatrix_assemble_mpi.cc compiled
./mpi/dynamo_iteration_compute_mpi_gpu.cc compiled
Warnings are in principle ok
------------------------------------------------
MPI compilation SUCCESSFUL
------------------------------------------------
[root@rockylinux9 dynamo]#
で完成.
[root@rockylinux9 dynamo]# ls -lrt mpi/
-rwxr-xr-x. 1 root root 91144 Mar 31 00:43 dynamo_iteration_setup_mpi
-rwxr-xr-x. 1 root root 104840 Mar 31 00:43 dynamo_iteration_compute_mpi
-rwxr-xr-x. 1 root root 91144 Mar 31 00:43 dynamo_iteration_assemble_mpi
-rwxr-xr-x. 1 root root 91144 Mar 31 00:43 dynamo_iteration_check_mpi
-rwxr-xr-x. 1 root root 91408 Mar 31 00:43 dynamo_ccmatrix_compute_mpi
-rwxr-xr-x. 1 root root 91144 Mar 31 00:43 dynamo_ccmatrix_assemble_mpi
-rwxr-xr-x. 1 root root 91416 Mar 31 00:43 dynamo_iteration_compute_mpi_gpu
mpiプログラムは以上.
次にcudaプログラムも存在していて、これも適切なcudaライブラリがインストールされていればそのまま使えますが、
どうしても使えない場合はコンパイルして用意します.
ここでは /usr/local にcudaライブラリを入れていないマシンでしたので、下記のようにライブラリが不足していました.
[root@rockylinux9 dynamo]# ls -l cuda/bin/
total 420
-rwxrwxrwx. 1 1004 2004 345064 Feb 21 21:56 dynamo_compute_iteration_spp
-rwxrwxrwx. 1 1004 2004 79120 Feb 21 21:56 infoGPU
[root@rockylinux9 dynamo]# ldd cuda/bin/dynamo_compute_iteration_spp
linux-vdso.so.1 (0x00007ffca35df000)
libcudart.so.12 => not found
libcufft.so.11 => not found
libcublas.so.12 => not found
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f4085e00000)
libm.so.6 => /lib64/libm.so.6 (0x00007f4086112000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f40860f8000)
libc.so.6 => /lib64/libc.so.6 (0x00007f4085a00000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4086243000)
[root@rockylinux9 dynamo]#
なので cudaライブラリを入れます.
このマシンに搭載している nvidia ドライバは「570.133.07」なので、このバージョンよりも低いドライバを許容するcudaライブラリを入れます.
っでここでは
「cuda-repo-rhel9-12-8-local-12.8.1_570.124.06-1.x86_64」(ドラバは 570.124.06 で 570.124.06 < 570.133.07 なので採用)
このパッケージを「dnf install cuda-toolkit-12-8」として入れると
[root@rockylinux9 dynamo]# ldd cuda/bin/dynamo_compute_iteration_spp
linux-vdso.so.1 (0x00007ffee8115000)
libcudart.so.12 => /usr/local/cuda/targets/x86_64-linux/lib/libcudart.so.12 (0x00007fbf7f800000)
libcufft.so.11 => /usr/local/cuda/targets/x86_64-linux/lib/libcufft.so.11 (0x00007fbf6e600000)
libcublas.so.12 => /usr/local/cuda/targets/x86_64-linux/lib/libcublas.so.12 (0x00007fbf67400000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fbf67000000)
libm.so.6 => /lib64/libm.so.6 (0x00007fbf7fb8f000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fbf7fb75000)
libc.so.6 => /lib64/libc.so.6 (0x00007fbf66c00000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbf7fcc2000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fbf7fb6e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fbf7fb69000)
librt.so.1 => /lib64/librt.so.1 (0x00007fbf7fb64000)
libcublasLt.so.12 => /usr/local/cuda/targets/x86_64-linux/lib/libcublasLt.so.12 (0x00007fbf34800000)
[root@rockylinux9 dynamo]#
とcudaライブラリがアサインされてコンパイルせずとも使えるようになりました.
っが、これもリコンパイルするなら下記のようにします.
[root@rockylinux9 dynamo]# cd cuda
[root@rockylinux9 cuda]# export PATH=/usr/local/cuda/bin:$PATH
[root@rockylinux9 cuda]# nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2025 NVIDIA Corporation
Built on Fri_Feb_21_20:23:50_PST_2025
Cuda compilation tools, release 12.8, V12.8.93
Build cuda_12.8.r12.8/compiler.35583870_0
[root@rockylinux9 cuda]#
[root@rockylinux9 cuda]# source config.sh
----------------------------------------------------------------
Configuring makefile for the CUDA installation in your system
Looking for a CUDA installation in this environment:
Found CUDA nvcc compiler at /usr/local/cuda/bin/nvcc
CUDA installation assumed to be in /usr/local/cuda
we will use /lib64 (standard procedure)
Substituting the CUDA location assignment:
CUDA_ROOT=/usr/local/cuda
with the actual value:
CUDA_ROOT=/usr/local/cuda
[ok]
you can now compile the CUDA utilities by :
make all
or :
make motors
if "make all" produces an error when trying to compile the Nvidia utility infoGPU
------------------------------------------------------------------
[root@rockylinux9 cuda]# make all
/usr/local/cuda/bin/nvcc -o bin/dynamo_compute_iteration_spp src/dynamo_compute_iteration_spp.cu -lcudart -lcufft -lcublas -L/usr/local/cuda-12.3/lib64 -I/usr/local/cuda/include -Isrc -Isrc/classes src/classes/gpuAngles.cpp -w
nvcc warning : Support for offline compilation for architectures prior to '<compute/sm/lto>_75' will be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
echo 'Compilation of Dynamo completed. Use make extended to include Nvidia GPU'
Compilation of Dynamo completed. Use make extended to include Nvidia GPU
[root@rockylinux9 cuda]#
[root@rockylinux9 cuda]# ls -l bin/
total 408
-rwxr-xr-x. 1 root root 334648 Mar 31 01:01 dynamo_compute_iteration_spp
-rwxrwxrwx. 1 1004 2004 79120 Feb 21 21:56 infoGPU
[root@rockylinux9 cuda]#
と完成します.
「/apps/dynamo/dynamo_compile_mpi.sh」と「/apps/dynamo/mpi/dynamo_compile_mpi.sh」は同じファイル
環境変数MCR_CACHE_ROOTを ssd/nvme なデバイスに指定すると早くなるそうな. ccp4のcacheと同じ思想かな
[illya@rockylinux ~]$ mkdir /scratch/dynamo
[illya@rockylinux ~]$ export MCR_CACHE_ROOT=/scratch/dynamo
version確認は、「dynamo_version」で得られる
[illya@rockylinux ~]$ module use --append /apps/modulefiles
[illya@rockylinux ~]$ module load dynamo
[illya@rockylinux ~]$ dynamo
Initializing MATLAB Runtime version 9.9
"MCR libraries starting dynamo. Starting the Dynamo console can take some time. A good choice of MCR_CACHE_ROOT might speed this up."
Launching the console....
(use "dynamo x" for a Dynamo graphics terminal on a independent window)
Dynamo console for standalone modus
-----------------------------------
* Commands starting with the symbol "!" will be passed to the system
* Commands starting with the symbol "\" will be executed as Matlab expressions
* Strings including the symbol ":" are treated as database queries
* Graphic output: enabled
* Type "help" for a list of console control commands
Dynamo > dynamo_version
Passing order to Matlab engine:
dynamo_version
Dynamo version: v-1.1.532
ans =
'v-1.1.532'
Dynamo > quit
ok, bye!
Exiting Dynamo console.
Returning control to system.
Note after exiting the Dynamo console:
if you experience difficulties with the text display you might need to type:
stty echo
in your system shell to fix them.
[delete:pmodelpool.Manager] Deletion of model pool manager from memory.
[illya@rockylinux ~]$
AMD Ryzen CPUだとmodulefilesの末尾「prepend-path LD_PRELOAD $dynamo/MCRLinux/bin/glnxa64/glibc-2.17_shim.so」は無効にする事
#prepend-path LD_PRELOAD $dynamo/MCRLinux/bin/glnxa64/glibc-2.17_shim.so