LoginSignup
5
1

More than 3 years have passed since last update.

FrontISTRをIntel oneAPIを使って構築する

Last updated at Posted at 2021-02-25

※自分用のメモとして書きました。

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/binfistr1 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.
5
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1