Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

Intel oneAPI で並列計算環境構築 (Fortran + MPI + parallel HDF5 + FFTw)

研究を始めたての4年生〜大学院生向けにLinux (CentOS7)での並列計算環境構築についてまとめる。

この記事ではIntel Fortranで並列版HDF5をソースからビルド(コンパイル)します。もちろん、Intel Cコンパイラも動きます。

余裕があるときに行ってください。3-4時間作業は覚悟!

(追記) Windows10 Linux Subsystem UbuntuではaptでIntelOneAPIをインストールできるが、HDF5をビルドするときに改行コードの問題でconfigureでエラーが出て通らないので、工夫する必要がある(調査中)。
 とりあえず、簡単に並列環境(gfortran + MPI + parallel HDF5)を構築するならば、以下でOK (Ubuntu用).
$ sudo apt install mpich libhdf5-mpich-dev

base toolkit と HPC toolkit のダウンロードとインストール

こちらの記事を参考に頑張る(1時間位かかる)。(インストール方法は Web & localで良い。)

出くわしたトラブルと対処については以下のようにメモを残しておくので、参考にしてください。

nss.x86_64, nss-devel.x86_64を探してインストール.

まだ,nssライブラリがないと言われるが無視してインストールを継続

GPUを使うにはOpenCVなどのインストールが必要だそうだが,時間がかかりそうなのでスキップ.

$source /opt/intel/oneapi/setvars.sh
でIntelの環境を読み込んだあとに
$which mpiifort
でmpiifortへのパスが通っているところまで確認して以下へお進みください。

parallel HDF5を自分でコンパイルしてIntel 環境で利用する

HDF5 source codeを以下からダウンロード
https://www.hdfgroup.org/downloads/hdf5/source-code/

解凍する

tar
tar zxvf hdf5-1.12.1.tar.gz

解凍フォルダへ移動

cd
cd hdf5-1.12.1

インストールフォルダの指定, オプションを設定

configure
$./configure --prefix=/opt/hdf5-1.12.1_oneAPI --enable-shared --enable-fortran --enable-parallel CC=mpicc FC=mpiifort
 configure: error: C++ preprocessor "/lib/cpp" fails sanity check

というエラーには$sudo yum install gcc-c++

make
$make

makeには時間がかかるので5分くらい放置

インストールをsuで行い、他のユーザーも利用できるようにする。

$su -

rootになってから mpiへのパスを通っているかを確認しておく.

rootでパスが通ってなければ、ライブラリのリンクに失敗するので、rootになった後でも$source /opt/intel/oneapi/setvars.sh

$make install 

うまくいかない場合は、/opt/hdf5-1.** のフォルダを消して再度やり直す。

やり直す場合は、 ./configure の前に $make cleanをしてから。

hdf5-1.**/binへのパスを.bashrcに書いてしまっていたらパスを元に戻してターミナルを再起動してやり直す。

.bashrcにパスの設定を書く

最後に、パスの設定

.bashrc
export PATH="/opt/hdf5-1.12.1_oneAPI/bin/:$PATH"

これで完了です。
$ which h5pfc
で確認。
intel のコンパイルオプション-xCORE-AVX512が使えたらOK. 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
4
Help us understand the problem. What are the problem?