OpenBLAS
OpenBLAS は、GotoBLAS2 1.13 BSD に基づく、最適化されたライブラリです。 利用方法モジュール名は以下の通りです。
なお、スレッド版の場合、スレッド数の指定は通常、環境変数 OPENBLAS_NUM_THREADS にて行ってください。
上記OpenBLAS/0.3.17をロードして環境設定を行うと、デフォルトでは OPENBLAS_NUM_THREADS は 1 に設定されていますので、
必要に応じて適宜、値を設定してください。 バッチスクリプトでの実行例(スレッド版)以下に GNUコンパイラ + OpenBLAS(スレッド版)の場合のバッチスクリプトのサンプルを示します。 また、スレッド数は赤字部分になります。すべて同じ数字としてください。 #!/bin/csh #PBS -q APC #PBS -N title #PBS -l select=1:ncpus=4 source /etc/profile.d/modules.csh module load gcc/10.3.0 module load OpenBLAS/0.3.17 setenv OPENBLAS_NUM_THREADS 4 cd $PBS_O_WORKDIR gfortran -o test ./test.f -lopenblas ./test この例では、実行プロセス数は 4 と指定しています。 scaLAPACK
scaLAPACK は、MPI通信による並列化を実装した行列計算ライブラリーです。 利用方法scaLAPACKでは、BLASやLAPACKを利用するため、ここではOpenBLASを指定した場合の手順を示します。 また、MPI通信による並列化も行うため、以下の例ではMPIライブラリとしてはOpenMPIを使った例を示します。
ここでのシリアルやスレッドは、1つのMPIプロセスに対してシリアルかスレッドか、という意味になります。
スレッド版の場合、スレッド数の指定は通常、環境変数 OPENBLAS_NUM_THREADS にて行ってください。
上記OpenBLAS/0.3.17をロードして環境設定を行うと、デフォルトでは OPENBLAS_NUM_THREADS は 1 に設定されていますので、
必要に応じて適宜、値を設定してください。 バッチスクリプトでの実行例(ハイブリッド)以下に GNUコンパイラ + OpenBLAS(スレッド版)+ OpenMPI の場合のバッチスクリプトのサンプルを示します。 また、スレッド数およびMPIプロセス数は赤字部分になります。mpiprocs= # と -np # を同じ数字としてください。 #!/bin/csh #PBS -q APC #PBS -N title #PBS -l select=1:ncpus=8:mpiprocs=2 source /etc/profile.d/modules.csh module load gcc/10.3.0 module load OpenBLAS/0.3.17 module load scalapack/2.1.0 module load openmpi/4.0.3 setenv OPENBLAS_NUM_THREADS 4 cd $PBS_O_WORKDIR mpif90 -o test ./test.f -lopenblas -lscalapack mpirun -np 2 ./test この例では、MPIプロセスは2, 各MPIプロセスに対して生成されるOpenBLASのスレッド数は4 です。 したがって、ジョブ全体のプロセス数は、2 * 4 = 8 となります。 Intel oneMKL
Intel oneMKLは、BLAS, LAPACK, BLACS, scaLAPACK, PBLAS, Sparse Solver,
ベクトル数学、ベクトル統計、データ適合、FFT/DFT、スパースBLAS、スパースソルバー 等の
多くの機能が含まれます。
利用方法
バージョンに応じてモジュールを指定してください。最新版を利用したい場合は、mkl/latest となります。 [appadm@apfe1 modulefiles]$ module avail mkl -------------------------------------------------------------- /usr/appli/intel/modulefiles -------------------------------------------------------------- mkl/2021.1.1 mkl/2022.0.2 mkl/2023.2.0 mkl32/2021.1.1 mkl32/2022.0.2 mkl32/2023.2.0 mkl/2021.2.0 mkl/2022.1.0 mkl/latest mkl32/2021.2.0 mkl32/2022.1.0 mkl32/latest
コンパイル時には以下の方法でライブラリをリンクしてください。なお、以下のリンクはサブルーチンの整数型引数がすべて 32bit の場合になります。
64bit 整数版については、関連サイトに記載の
Intel Math Kernel Library Link Line Advisorを参照してください。
Intelコンパイラの場合:
Intel oneMKLの場合、シリアル版もしくはスレッド版は上記の通り、リンクするライブラリが異なります。 また、スレッド版でのスレッド数は以下に示すように、環境変数を使って指定します。
バッチスクリプトでの実行例(ハイブリッド)以下に GNUコンパイラ(Fortran) + Intel oneMKL(スレッド版)+ OpenMPI の場合のバッチスクリプトのサンプルを示します。 また、スレッド数およびMPIプロセス数は赤字部分になります。mpiprocs= # と -np # を同じ数字としてください。 #!/bin/csh #PBS -q APC #PBS -N title #PBS -l select=1:ncpus=8:mpiprocs=2 source /etc/profile.d/modules.csh module load mkl/latest module load openmpi/4.0.3 setenv MKL_NUM_THREADS 4 cd $PBS_O_WORKDIR mpif90 -o test ./test.f -Wl,--no-as-needed -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl mpirun -np 2 ./test この例では、MPIプロセスは2, 各MPIプロセスに対して生成される Intel oneMKL のスレッド数は 4 です。 したがって、ジョブ全体のプロセス数は、2 * 4 = 8 となります。 関連サイト |