N-queens の実行

サンプルアプリケーションN-Queensの導入と実行

SGE 編または、Slurm 編のいずれかを、ハンズオンオーナーの指示に従って実施してください。

N-Queensプログラムのインストール

  • ここではサンプルアプリケーションとして N-queens問題を解くMPI並列プログラムをコンパイル・インストールして動作確認を行っていきます
  • アプリケーションはMaster Server上からNFS共有領域である /shared ディレクトリ下にインストールすることで、計算ノードにもアプリケーションが共有されます
mkdir -p /shared/nqueens
cd /shared/nqueens
curl -O http://www.arch.cs.titech.ac.jp/~kise/nq/package/qn24b-version1.0.tgz
tar -zxvf qn24b-version1.0.tgz
module load openmpi
mpicc version1.0/mpi/main.c -o qn24b_mpi
  • コンパイルが完了したら、Master Server 上で実行して動作確認を行いましょう
time mpirun --oversubscribe -np 2 ./qn24b_mpi 16

実行結果は以下のようになります。

(一部略)
001 : 09841 09844 0000000000000944 099.97 00000.00 Wed Jan 13 20:16:11 2021
001 : 09842 09844 0000000000000994 099.98 00000.00 Wed Jan 13 20:16:11 2021
001 : 09843 09844 0000000000000878 099.99 00000.00 Wed Jan 13 20:16:11 2021
001 : 09844 09844 0000000000000650 100.00 00000.00 Wed Jan 13 20:16:11 2021
=============================================
qn24b MPI version 1.0.0 2004-06-16
problem size n        : 16
total   solutions     : 14772512
correct solutions     : 14772512
million solutions/sec : 0.554
elapsed time (sec)    : 26.670
=============================================

real    0m34.302s
user    0m20.148s
sys     0m6.039s

実行用ジョブスクリプトの作成

  • 以下のコマンドを実行し、 qn24b.sh ファイルを作成します。
実行用ジョブスクリプト (Slurm)
実行用ジョブスクリプト (SGE)
  • ファイルが作成されていることを確認します。

    cat qn24b.sh
    

アプリケーションジョブの実行

  • 上でインストールしたプログラムを今度はスケジューラにジョブ投入して計算ノード上で実行します
アプリケーションジョブの実行 (Slurm)
アプリケーションジョブの実行 (SGE)
  • 出力例

    (一部略)
    001 : 09842 09844 0000000000000994 099.98 00000.00 Wed Jan 13 20:21:15 2021
    001 : 09843 09844 0000000000000878 099.99 00000.00 Wed Jan 13 20:21:15 2021
    001 : 09844 09844 0000000000000650 100.00 00000.00 Wed Jan 13 20:21:15 2021
    =============================================
    qn24b MPI version 1.0.0 2004-06-16
    problem size n        : 16
    total   solutions     : 14772512
    correct solutions     : 14772512
    million solutions/sec : 1.168
    elapsed time (sec)    : 12.645
    =============================================
    

時間に余裕のある方は、他のデータも使用して、sbatch コマンド (Slurm) や qsub コマンド (SGE) で同時に複数のジョブを投入するなどして、ジョブが実行されていく様子を確認してみましょう。