取り合えず intel謹製のコンパイラをインストールします oneAPI

relionは(スレッドが有効な)mpi対応でして、mpiに 「openmpi」 か 「intel謹製のintel mpi」のどちらも選べる. 

要素

コンパイルするにあたって下記の組み合わせを考える必要がある

ただ組み合わせによっては出来ないものもある. 例えばコンパイラに[oneAPI]を選んでacceralationに[GPU]を選ぶと
GPUのcudaライブラリのversionによって利用可能な[oneAPI]が制限されます。
https://docs.nvidia.com/cuda/archive/12.8.1/cuda-installation-guide-linux/index.html とかを纏めると

cuda versionDistributionGCCClangNVHPCXLCArmC/C++ICC
13.0.0x86_646.x - 15.x7.x - 20.x24.9-25.5NoNo(null)
12.8.1x86_646.x - 14.x7.x - 19.x24.9NoNo2021.7
12.4.1x86_646.x - 13.27.x - 17.023.xNoNo2021.7
12.2.2x86_646.x - 12.27.x - 16.023.xNoNo2021.7
11.8.0Rockylinux9.0
x86_64
11.2.114.022.3NoNo2021
11.6.2RHEL8
x86_64
111221.7NoNo2021

oneAPIのclang versionは

[root@rockylinux9 ~]# icx -x c /dev/null -dM -E | grep clang_version
#define __clang_version__ "21.0.0git (icx 2025.2.0.20250605)"
 
[root@rockylinux9 ~]#

と表示されて、clangは 21.0.0 となる. これではoneAPI 2025.2 と cuda 12.8.1 の組み合わせでは使えないとなる.
多少古いversionはoneAPIから入手可能ですが、古いものiccが使えるバージョンはサポートに問い合わせって感じみたい.

別途取り寄せた oneAPI 2025.0 をloadしてみたら

[root@rockylinux9 ~]# icx -x c /dev/null -dM -E | grep clang_version
#define __clang_version__ "19.0.0git (icx 2025.0.4.20241205)"
[root@rockylinux9 ~]#

と一見このversionでよさげに見えるが、「icx --version」では clang の情報がない

[root@rockylinux9 ~]# icx --version
Intel(R) oneAPI DPC++/C++ Compiler 2025.0.4 (2025.0.4.20241205)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/intel/oneapi/compiler/2025.0/bin/compiler
Configuration file: /opt/intel/oneapi/compiler/2025.0/bin/compiler/../icx.cfg
 
[root@rockylinux9 ~]#

微妙だけど、これなら一応 cuda 12.8 にも使えそうかな

構築(確認)

まずは確認

[root@rockylinux9 ~]# module use /apps/modulefiles
[root@rockylinux9 ~]# module load compiler/2025.0.4
[root@rockylinux9 ~]# module load cuda/12.8
[root@rockylinux9 ~]# module load mkl/2025.0
 
[root@rockylinux9 ~]# cat /etc/redhat-release
Rocky Linux release 9.6 (Blue Onyx)
 
[root@rockylinux9 ~]# lscpu | grep avx2 
Flags:      ... hle avx2 smep ...
 
[root@rockylinux9 ~]# cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX Open Kernel Module for x86_64  570.181  Release Build  (dvs-builder@U22-I3-AF02-20-5)  Wed Jul 30 18:41:07 UTC 2025     <--「570.181」はcuda 12.8 対応品
GCC version:  gcc version 11.5.0 20240719 (Red Hat 11.5.0-5) (GCC)
 
[root@rockylinux9 ~]# 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 ~]# icx -x c /dev/null -dM -E | grep clang_version
#define __clang_version__ "19.0.0git (icx 2025.0.4.20241205)"
 
[root@rockylinux9 ~]#

oneAPI/intel MPI/cuda

[root@rockylinux9 ~]# cd /apps/src/relion/
[root@rockylinux9 relion]# git branch
  master
  ver4.0
* ver5.0
[root@rockylinux9 relion]# mkdir 50i
[root@rockylinux9 relion]# cd 50i/
[root@rockylinux9 50i]#
[root@rockylinux9 50i]# which mpirun
/opt/intel/oneapi/mpi/2021.16/bin/mpirun
 
[root@rockylinux9 50i]#

下記 cmake を実施してコンパイル準備を行います

cmake .. -DCMAKE_INSTALL_PREFIX=/apps/relion-5.0.0-oneAPI-impi-cuda \
-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 \
-DMKLFFT=ON \
-DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DMPI_C_COMPILER=mpiicx -DMPI_CXX_COMPILER=mpiicpx \
-DCMAKE_C_FLAGS="-O3 -qopenmp-simd -xCORE-AVX2 -qopt-zmm-usage=high -qoverride-limits " \
-DCMAKE_CXX_FLAGS="-O3 -qopenmp-simd -xCORE-AVX2 -qopt-zmm-usage=high -qoverride-limits " \
-DCUDA_NVCC_FLAGS="--allow-unsupported-compiler"

結局 nvcc で icx の確認が取れないとのメッセージが出たので「-DCUDA_NVCC_FLAGS="--allow-unsupported-compiler"」を入れてます

っでコンパイルとインストール

[root@rockylinux9 50i]# make ; make install

っで確認

[saber@rockylinux9 ~]$ module load compiler-rt/2025.0.4
[saber@rockylinux9 ~]$ module load mpi/2021.16
[saber@rockylinux9 ~]$ module load mkl/2025.0
 
[saber@rockylinux9 ~]$ ldd /apps/relion-5.0.0-oneAPI-impi-cuda/bin/relion_refine_mpi
        linux-vdso.so.1 (0x00007fff1c387000)
        libimf.so => /opt/intel/oneapi/compiler/2025.0/lib/libimf.so (0x00007f3ad8800000)                    <-- oneAPI
        libcufft.so.11 => /usr/local/cuda-12.8/lib64/libcufft.so.11 (0x00007f3ac7600000)                     <-- cuda
        libmpicxx.so.12 => /opt/intel/oneapi/mpi/2021.16/lib/libmpicxx.so.12 (0x00007f3ac7200000)            <-- oneAPI
        libmpifort.so.12 => /opt/intel/oneapi/mpi/2021.16/lib/libmpifort.so.12 (0x00007f3ac6e00000)          <-- oneAPI
        libmpi.so.12 => /opt/intel/oneapi/mpi/2021.16/lib/libmpi.so.12 (0x00007f3abcc00000)                  <-- oneAPI
        libtiff.so.5 => /lib64/libtiff.so.5 (0x00007f3ad8d02000)
        libcurand.so.10 => /usr/local/cuda-12.8/lib64/libcurand.so.10 (0x00007f3ab4000000)                   <-- cuda
        libpng16.so.16 => /lib64/libpng16.so.16 (0x00007f3ad8ccb000)
        libjpeg.so.62 => /lib64/libjpeg.so.62 (0x00007f3ad8c4a000)
        libmkl_intel_lp64.so.2 => /opt/intel/oneapi/mkl/2025.0/lib/libmkl_intel_lp64.so.2 (0x00007f3ab3000000)     <-- oneAPI
        libmkl_intel_thread.so.2 => /opt/intel/oneapi/mkl/2025.0/lib/libmkl_intel_thread.so.2 (0x00007f3ab0c00000) <-- oneAPI
        libmkl_core.so.2 => /opt/intel/oneapi/mkl/2025.0/lib/libmkl_core.so.2 (0x00007f3aacc00000)                 <-- oneAPI
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f3aac800000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f3ac7525000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f3ad8c2e000)
        libiomp5.so => /opt/intel/oneapi/compiler/2025.0/lib/libiomp5.so (0x00007f3aac400000)                      <-- oneAPI
        libc.so.6 => /lib64/libc.so.6 (0x00007f3aac000000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f3ad8d9e000)
        libintlc.so.5 => /opt/intel/oneapi/compiler/2025.0/lib/libintlc.so.5 (0x00007f3ac74c3000)                  <-- oneAPI
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f3ad8c27000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f3ad8c22000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f3ad8c1d000)
        libwebp.so.7 => /lib64/libwebp.so.7 (0x00007f3ac7456000)
        libzstd.so.1 => /lib64/libzstd.so.1 (0x00007f3ac6d49000)
        libjbig.so.2.1 => /lib64/libjbig.so.2.1 (0x00007f3ad8c0d000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f3ad87e6000)
[saber@rockylinux9 ~]$

「-DALTCPU=ON」を入れていないのでoneAPIでコンパイルしても GPU acceralationです。

environment-modules
「/apps/modulefiles/relion/5.0.0-oneAPI-impi-cuda」

#%Module1.0
 
module load compiler-rt/2025.0.4
module load mpi/2021.16
module load mkl/2025.0
 
set RELION /apps/relion-5.0.0-oneAPI-impi-cuda
 
prepend-path PATH            $RELION/bin
 
setenv RELION_CTFFIND_EXECUTABLE     /apps/ctffind-4.1.14/ctffind
setenv RELION_MOTIONCOR2_EXECUTABLE  /apps/MotionCor2/MotionCor2_1.6.4_Cuda118_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_MPIRUN "mpirun --mca mtl psm2 --mca btl ^ofi"
 
setenv RELION_EXTERNAL_RECONSTRUCT_EXECUTABLE /apps/SIDESPLITTER/sidesplitter_wrapper.sh
setenv SIDESPLITTER                           /apps/SIDESPLITTER/sidesplitter

oneAPI / openmpi compiled by oneAPI /cuda

まずは oneAPI でコンパイルされた opnempi を用意します。参照 oneAPI#bcedde40

[root@rockylinux9 ~]# module use /apps/modulefiles
[root@rockylinux9 ~]# module load compiler/2025.0.4
[root@rockylinux9 ~]# module load cuda/12.8
[root@rockylinux9 ~]# module load mkl/2025.0
 
[root@rockylinux9 ~]# module load mpi/openmpi-5.0.8_icx-2025.2.0
 
[root@rockylinux9 ~]# which mpirun
/apps/openmpi-5.0.8_icx-2025.2.0/bin/mpirun
 
[root@rockylinux9 ~]# cd /apps/src/relion/50i
[root@rockylinux9 50i]# rm -rf ./*

っで cmake を回す.

cmake .. -DCMAKE_INSTALL_PREFIX=/apps/relion-5.0.0-oneAPI-ompi-cuda \
-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 \
-DMKLFFT=ON \
-DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DMPI_C_COMPILER=mpicc -DMPI_CXX_COMPILER=mpicxx \
-DCMAKE_C_FLAGS="-O3 -qopenmp-simd -xCORE-AVX2 -qopt-zmm-usage=high -qoverride-limits " \
-DCMAKE_CXX_FLAGS="-O3 -qopenmp-simd -xCORE-AVX2 -qopt-zmm-usage=high -qoverride-limits " \
-DCUDA_NVCC_FLAGS="--allow-unsupported-compiler"

「-DCMAKE_INSTALL_PREFIX」と「-DMPI_C_COMPILER」「-DMPI_CXX_COMPILER」の値が異なります.
そしてコンパイルとインストール

[root@rockylinux9 50i]# make ; make install

確認

[saber@rockylinux9 ~]$ module pu
[saber@rockylinux9 ~]$ module use /apps/modulefiles/
 
[saber@rockylinux9 ~]$ module load compiler-rt/2025.0.4
[saber@rockylinux9 ~]$ module load mkl/2025.0
[saber@rockylinux9 ~]$ module load mpi/openmpi-5.0.8_icx-2025.2.0
 
[saber@rockylinux9 ~]$ which mpirun
/apps/openmpi-5.0.8_icx-2025.2.0/bin/mpirun
 
[saber@rockylinux9 ~]$ 
[saber@rockylinux9 ~]$ ldd /apps/relion-5.0.0-oneAPI-ompi-cuda/bin/relion_refine_mpi
        linux-vdso.so.1 (0x00007ffc6bfc5000)
        libimf.so => /opt/intel/oneapi/compiler/2025.0/lib/libimf.so (0x00007f6c3f800000)                    <-- oneAPI
        libcufft.so.11 => /usr/local/cuda-12.8/lib64/libcufft.so.11 (0x00007f6c2e600000)                     <-- cuda
        libmpi.so.40 => /apps/openmpi-5.0.8_icx-2025.2.0/lib/libmpi.so.40 (0x00007f6c2e200000)               <-- openmpi
        libtiff.so.5 => /lib64/libtiff.so.5 (0x00007f6c2e177000)
        libcurand.so.10 => /usr/local/cuda-12.8/lib64/libcurand.so.10 (0x00007f6c25600000)                   <-- cuda
        libpng16.so.16 => /lib64/libpng16.so.16 (0x00007f6c2e5c9000)
        libjpeg.so.62 => /lib64/libjpeg.so.62 (0x00007f6c2e0f6000)
        libmkl_intel_lp64.so.2 => /opt/intel/oneapi/mkl/2025.0/lib/libmkl_intel_lp64.so.2 (0x00007f6c24600000)      <-- oneAPI
        libmkl_intel_thread.so.2 => /opt/intel/oneapi/mkl/2025.0/lib/libmkl_intel_thread.so.2 (0x00007f6c22200000)  <-- oneAPI
        libmkl_core.so.2 => /opt/intel/oneapi/mkl/2025.0/lib/libmkl_core.so.2 (0x00007f6c1e200000)                  <-- oneAPI
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f6c1de00000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f6c25525000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f6c3f7d5000)
        libiomp5.so => /opt/intel/oneapi/compiler/2025.0/lib/libiomp5.so (0x00007f6c1da00000)                       <-- oneAPI
        libc.so.6 => /lib64/libc.so.6 (0x00007f6c1d600000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f6c3fc10000)
        libintlc.so.5 => /opt/intel/oneapi/compiler/2025.0/lib/libintlc.so.5 (0x00007f6c2459e000)                   <-- oneAPI
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f6c3f7d0000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f6c3f7c9000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f6c2e5c4000)
        libopen-pal.so.80 => /apps/openmpi-5.0.8_icx-2025.2.0/lib/libopen-pal.so.80 (0x00007f6c1e112000)                     <-- openmpi
        libpmix.so.2 => /apps/openmpi-5.0.8_icx-2025.2.0/lib/libpmix.so.2 (0x00007f6c1d200000)                               <-- openmpi
        libevent_core-2.1.so.7 => /apps/openmpi-5.0.8_icx-2025.2.0/lib/libevent_core-2.1.so.7 (0x00007f6c2e0c2000)           <-- openmpi
        libevent_pthreads-2.1.so.7 => /apps/openmpi-5.0.8_icx-2025.2.0/lib/libevent_pthreads-2.1.so.7 (0x00007f6c2e5bf000)   <-- openmpi
        libhwloc.so.15 => /apps/openmpi-5.0.8_icx-2025.2.0/lib/libhwloc.so.15 (0x00007f6c2453c000)                           <-- openmpi
        libsvml.so => /opt/intel/oneapi/compiler/2025.0/lib/libsvml.so (0x00007f6c1ba00000)                  <-- oneAPI
        libirng.so => /opt/intel/oneapi/compiler/2025.0/lib/libirng.so (0x00007f6c1d907000)                  <-- oneAPI
        libwebp.so.7 => /lib64/libwebp.so.7 (0x00007f6c1e0a5000)
        libzstd.so.1 => /lib64/libzstd.so.1 (0x00007f6c1d850000)
        libjbig.so.2.1 => /lib64/libjbig.so.2.1 (0x00007f6c2e5b1000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f6c2e0a8000)
[saber@rockylinux9 ~]$

environment-modules
「/apps/modulefiles/relion/5.0.0-oneAPI-ompi-cuda」

#%Module1.0
 
module load compiler-rt/2025.0.4
module load mkl/2025.0
module load mpi/openmpi-5.0.8_icx-2025.2.0
 
set RELION /apps/relion-5.0.0-oneAPI-ompi-cuda
 
prepend-path PATH            $RELION/bin
 
setenv RELION_CTFFIND_EXECUTABLE     /apps/ctffind-4.1.14/ctffind
setenv RELION_MOTIONCOR2_EXECUTABLE  /apps/MotionCor2/MotionCor2_1.6.4_Cuda118_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_MPIRUN "mpirun --mca mtl psm2 --mca btl ^ofi"
 
setenv RELION_EXTERNAL_RECONSTRUCT_EXECUTABLE /apps/SIDESPLITTER/sidesplitter_wrapper.sh
setenv SIDESPLITTER                           /apps/SIDESPLITTER/sidesplitter

memo

一応「動く.」
「使える」かは不明. ベンチとれるほどのリソースがない.

最新の60件
2026-09-05 2026-08-31 2026-08-27 2026-08-24 2026-08-20 2026-08-18 2026-08-17 2026-08-16 2026-08-15 2026-08-13 2026-08-12 2026-08-11 2026-08-09 2026-07-30 2026-07-25 2026-07-24 2026-07-20 2026-07-18 2026-07-17 2026-07-16 2026-07-08 2026-07-07 2026-07-06 2026-07-04 2026-07-02 2026-06-27 2026-06-24 2026-06-21 2026-06-17 2026-06-14 2026-06-13 2026-06-09 2026-06-08 2026-06-05 2026-06-04 2026-06-03

edit


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2025-08-15 (金) 01:39:07