※自分用のメモとして書きました。
FrontISTRをWSL2上のUbuntu 20.04へインストールする。恐らく、Ubuntu 18.04や16.04でもインストール出来ると思います(確認はしていない)。
Intel oneAPI
cd /tmp
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
sudo apt update
sudo apt install intel-hpckit intel-basekit
cmake
※ その後、cmake-3.20.0 がされた。下のスクリプトでバイナリをダウンロードするようにしたので、これは必要なくなった。
cmake-3.19.2以上が必須。それ以下のバージョンだとMPIライブラリが認識出来なかった。
wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /etc/apt/trusted.gpg.d/kitware.gpg >/dev/null
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main'
sudo apt-get update
sudo apt install cmake
sudo apt install pkg-config
最後の pkg-config
は無くても問題無いが、Warning抑止のため入れておく。
これをやっておけば、定期的に
sudo apt update
sudo apt dist-upgrade
しておけば最新版がインストールされる。
FrontISTR
自分用に書いたビルドスクリプトをダウンロードし、実行すると MPI, OpenMP, MUMPS, Metis, Trilinos ML, LAPACK, MKL, REVOCAP_Refinerを有効にした FrontISTR が $HOME/local/bin
に fistr1 hec2rcap hecmw_part1 hecmw_vis1 rconv rmerge
としてインストールされる。
git clone git@github.com:michioga/fistr_build_script
cd fistr_build_script
./fistr_build.sh
fistr_build.sh
は単なるシェルスクリプトなので、必要に応じて編集する。
インストールされた fistr1
へリンクされているライブラリを確認する。
ldd fistr1
linux-vdso.so.1 (0x00007ffdf4399000)
libmkl_intel_lp64.so.1 => /opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_intel_lp64.so.1 (0x00007f792b662000)
libmkl_intel_thread.so.1 => /opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_intel_thread.so.1 (0x00007f7927d69000)
libmkl_core.so.1 => /opt/intel/oneapi/mkl/latest/lib/intel64/libmkl_core.so.1 (0x00007f791fda3000)
libiomp5.so => /opt/intel/oneapi/compiler/2021.1.2/linux/compiler/lib/intel64_lin/libiomp5.so (0x00007f791f99a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f791f96e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f791f81f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f791f819000)
libmpifort.so.12 => /opt/intel/oneapi/mpi/2021.1.1//lib/libmpifort.so.12 (0x00007f791f45b000)
libmpi.so.12 => /opt/intel/oneapi/mpi/2021.1.1//lib/release/libmpi.so.12 (0x00007f791e0e2000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f791e0d5000)
libmpicxx.so.12 => /opt/intel/oneapi/mpi/2021.1.1//lib/libmpicxx.so.12 (0x00007f791deb5000)
libifport.so.5 => /opt/intel/oneapi/compiler/2021.1.2/linux/compiler/lib/intel64_lin/libifport.so.5 (0x00007f791dc87000)
libifcoremt.so.5 => /opt/intel/oneapi/compiler/2021.1.2/linux/compiler/lib/intel64_lin/libifcoremt.so.5 (0x00007f791dae7000)
libimf.so => /opt/intel/oneapi/compiler/2021.1.2/linux/compiler/lib/intel64_lin/libimf.so (0x00007f791d45f000)
libsvml.so => /opt/intel/oneapi/compiler/2021.1.2/linux/compiler/lib/intel64_lin/libsvml.so (0x00007f791b8e6000)
libirc.so => /opt/intel/oneapi/compiler/2021.1.2/linux/compiler/lib/intel64_lin/libirc.so (0x00007f791b66e000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f791b47c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f791b461000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f791b280000)
/lib64/ld-linux-x86-64.so.2 (0x00007f792c39f000)
libfabric.so.1 => /opt/intel/oneapi/mpi/2021.1.1//libfabric/lib/libfabric.so.1 (0x00007f791b03a000)
libintlc.so.5 => /opt/intel/oneapi/compiler/2021.1.2/linux/compiler/lib/intel64_lin/libintlc.so.5 (0x00007f791adc2000)
これで gfortran
, OpenMPI
無しでも、お金を掛けずに FrontISTR がコンパイル出来る様になった。
./fistr1 -h
##################################################################
# FrontISTR #
##################################################################
---
version: 5.1.1
git_hash: b2fc72cd8580639457fb323862bf7c49680003ca
build:
date: 2021-02-25T14:10:59+0900
MPI: enabled
OpenMP: enabled
option: "-p --with-tools --with-metis --with-mumps --with-lapack --with-ml --with-parmetis --with-mkl "
HECMW_METIS_VER: 5
usage: [ mpirun -np <mpiprocs> ] fistr1 [options]
-h: Show this help message.
-v: Show version.
-t <n>: Set number of OpenMP threads
-c <Path of control file>: Use this control file. Default ./hecmw_ctrl.dat
--debug: Show debug messages.