#author("2020-04-05T10:34:08+00:00","default:sysosa","sysosa")
#author("2020-04-05T10:37:10+00:00","default:sysosa","sysosa")
Intel Compilers runtime ライブラリ


インテルコンパイラを購入して、ソースからビルドしていざ実行する際、ビルドしたマシンなら
問題ないでしょうが、他のPCにコピーして実行する際、
「ライブラリがないよ」
って怒られる。まぁ当然なお話.

そんなときに使うサイトがここ Intel Compilers runtime ライブラリ 配布サイト
[[https://software.intel.com/en-us/articles/intel-compilers-redistributable-libraries-by-version>+https://software.intel.com/en-us/articles/intel-compilers-redistributable-libraries-by-version]]

このruntime ライブラリを導入すれば icc でコンパイルされたバイナリーを実行することができます

導入方法ですが、ここでは簡単にyumで入れてみたいと思います

#code(nonumber){{
[root@c ~]# yum install nextgen-yum4.noarch

[root@c ~]# yum-config-manager --add-repo https://yum.repos.intel.com/2019/setup/intel-psxe-runtime-2019.repo

[root@c ~]# rpm --import https://yum.repos.intel.com/2019/setup/RPM-GPG-KEY-intel-psxe-runtime-2019

[root@c ~]# cat /etc/yum.repos.d/intel-psxe-runtime-2019.repo    #確認
[intel-psxe-runtime-2019]
name=Intel(R) Parallel Studio XE 2019 runtime
baseurl=https://yum.repos.intel.com/2019
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-intel-psxe-runtime-2019
}}
次にインストールするruntimeはicc向けifort向けとか沢山あって

#code(nonumber){{
[root@c ~]# yum list |grep intel-psxe-runtime-2019
intel-comp-common-runtime.noarch          2019.6-324                   intel-psxe-runtime-2019
intel-comp-runtime-32bit.i486             2019.6-324                   intel-psxe-runtime-2019
intel-comp-runtime-64bit.x86_64           2019.6-324                   intel-psxe-runtime-2019
intel-daal-common-runtime.noarch          2019.6-324                   intel-psxe-runtime-2019
intel-daal-runtime-32bit.i486             2019.6-324                   intel-psxe-runtime-2019
intel-daal-runtime-64bit.x86_64           2019.6-324                   intel-psxe-runtime-2019
intel-icc-common-runtime.noarch           2019.6-324                   intel-psxe-runtime-2019
intel-icc-runtime-32bit.i486              2019.6-324                   intel-psxe-runtime-2019
intel-icc-runtime-64bit.x86_64            2019.6-324                   intel-psxe-runtime-2019
intel-ifort-common-runtime.noarch         2019.6-324                   intel-psxe-runtime-2019
intel-ifort-runtime-32bit.i486            2019.6-324                   intel-psxe-runtime-2019
intel-ifort-runtime-64bit.x86_64          2019.6-324                   intel-psxe-runtime-2019
intel-ipp-common-runtime.noarch           2019.6-324                   intel-psxe-runtime-2019
intel-ipp-runtime-32bit.i486              2019.6-324                   intel-psxe-runtime-2019
intel-ipp-runtime-64bit.x86_64            2019.6-324                   intel-psxe-runtime-2019
intel-mkl-common-runtime.noarch           2019.6-324                   intel-psxe-runtime-2019
intel-mkl-runtime-32bit.i486              2019.6-324                   intel-psxe-runtime-2019
intel-mkl-runtime-64bit.x86_64            2019.6-324                   intel-psxe-runtime-2019
intel-mpi-runtime-64bit.x86_64            2019.6-324                   intel-psxe-runtime-2019
intel-openmp-runtime-32bit.i486           2019.6-324                   intel-psxe-runtime-2019
intel-openmp-runtime-64bit.x86_64         2019.6-324                   intel-psxe-runtime-2019
intel-psxe-common-runtime.noarch          2019.6-324                   intel-psxe-runtime-2019
intel-psxe-runtime.i486                   2019.6-324                   intel-psxe-runtime-2019
intel-psxe-runtime.x86_64                 2019.6-324                   intel-psxe-runtime-2019
intel-tbb-common-runtime.noarch           2019.6-324                   intel-psxe-runtime-2019
intel-tbb-libs-runtime-32bit.i486         2019.6-324                   intel-psxe-runtime-2019
intel-tbb-libs-runtime-64bit.x86_64       2019.6-324                   intel-psxe-runtime-2019
intel-tbb-runtime-32bit.i486              2019.6-324                   intel-psxe-runtime-2019
intel-tbb-runtime-64bit.x86_64            2019.6-324                   intel-psxe-runtime-2019
}}
と多種に及ぶ。
ここではintel mpiでコンパイルしたrelionを動かしたいので「&color(magenta){intel-mpi-runtime-64bit};」を入れます。
パッケージには複数の「版」が存在していて「&color(magenta){intel-mpi-runtime-64bit};」では
#code(nonumber){{
[root@c ~]# yum --showduplicates list  intel-mpi-runtime-64bit
 :
Available Packages
intel-mpi-runtime-64bit.x86_64       2019.0-117          intel-psxe-runtime-2019
intel-mpi-runtime-64bit.x86_64       2019.1-144          intel-psxe-runtime-2019
intel-mpi-runtime-64bit.x86_64       2019.2-187          intel-psxe-runtime-2019
intel-mpi-runtime-64bit.x86_64       2019.3-199          intel-psxe-runtime-2019
intel-mpi-runtime-64bit.x86_64       2019.4-243          intel-psxe-runtime-2019
intel-mpi-runtime-64bit.x86_64       2019.5-281          intel-psxe-runtime-2019
intel-mpi-runtime-64bit.x86_64       2019.6-324          intel-psxe-runtime-2019
[root@c ~]#
}}
となります。何もしなければ最新の「&color(orangered){2019.6-324};」版がインストールされますが、使用したコンパイラが「&color(orange){''2019.4-243''};」なので「 &color(magenta){intel-mpi-runtime-64bit-2019.4-243};」を選択します。
関連ライブラリも合わせて下記のようにインストールを行います
#code(nonumber){{
yum install intel-mpi-runtime-64bit-2019.4-243  \
            intel-mkl-runtime-64bit-2019.4-243 intel-mkl-common-runtime-2019.4-243  \
            intel-comp-runtime-64bit-2019.4-243 intel-comp-common-runtime-2019.4-243
yum install intel-mpi-runtime-64bit-2019.4-243
}}
&color(red){*};&size(10){「intel-mpi-runtime-64bit」はもう一度インストールしないと入らなかった. 原因は不明};

***内容 [#odbe8dae]
パッケージをインストールすると下記のように展開される。
#code(nonumber){{
[root@c ~]# ls -l /opt/intel/
total 0
lrwxrwxrwx 1 root root 17 Mar 29 20:20 psxe_runtime -> psxe_runtime_2019
lrwxrwxrwx 1 root root 23 Mar 29 20:20 psxe_runtime_2019 -> psxe_runtime_2019.4.243
drwxr-xr-x 5 root root 57 Mar 29 20:20 psxe_runtime_2019.4.243
[root@c ~]#
}}

***つかう [#v46e110d]
単純に
#code(nonumber){{
source /opt/intel/psxe_runtime/linux/mpi/intel64/bin/mpivars.sh intel64
}}
で環境変数らは定義される。
&color(red){*};「/opt/intel/psxe_runtime/linux/bin/psxevars.sh」は正しく機能しなかった

[[EnvironmentModules]]で制御するなら下記のようなmoduleファイルを用意する
#code(nonumber){{
#%Module1.0
#
set icc /opt/intel/psxe_runtime_2019.4.243/linux
set tbb $icc/tbb/lib/intel64/gcc4.7
set mpi $icc/mpi/intel64/libfabric/lib:$icc/mpi/intel64/lib/release:$icc/mpi/intel64/lib
set mkl $icc/mkl/lib/intel64
set cmp $icc/compiler/lib/intel64_lin

setenv I_MPI_ROOT             $icc/mpi
setenv FI_PROVIDER            tcp
setenv FI_PROVIDER_PATH       $icc/mpi/intel64/libfabric/lib/prov

prepend-path MANPATH          $icc/mpi/man
prepend-path LIBRARY_PATH     $icc/mpi/intel64/libfabric/lib
prepend-path LD_LIBRARY_PATH  $mpi:$mkl:$cmp:$tbb
prepend-path PATH             $icc/mpi/intel64/libfabric/bin:$icc/mpi/intel64/bin
prepend-path CLASSPATH        $icc/mpi/intel64/lib/mpi.jar

}}

relionのqsub.shは下記のようにします。
#code(nonumber){{
#!/bin/bash
#PBS -q XXXqueueXXX
#PBS -l nodes=XXXnodesXXX:ppn=XXXcoresXXX
#PBS -N XXXnameXXX
#
# mpirun
opt=" -r rsh "
#
cd $PBS_O_WORKDIR
 :
(略)
 :
}}
mpirunのオプションがopenmpiの
「--mca plm_rsh_agent rsh」の代替に「-r rsh」
が必要になります。既定はsshです。

***memo [#z668c0c7]
各計算ノードの/etc/hostsに自分のipアドレスの記載が必要みたい.
「FI_PROVIDER=tcp」も必須みたい.
[-print-rank-map]
[-perhost n] 複数のノードを使って計算する際、n個分はじめのノードで実行され、次にノードもn個分、、、と[-n]の値まで振る
[-ppn n] 上記[-perhost n]と同じ。[-ppn 1]なら1個始めのノードにおいて、次は次のノードに置かれる

[mpirun -ppn 8 -n 32 ./a.out]なら一台連続したプロセスを8個作って、次のノードに移ってまた8個作って、、合計4台まで振る
1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS