【オプション】N-queensを計算してみる

ここでは試しにMPIを利用した並列計算として、N-queens 問題を計算してみます。(参考: N-queensとは )

(1) 引き続きクラスタのヘッドノードでコマンドを実行します。下記、コマンドを順番に実行し、ソースコードのダウンロードとコンパイルをします。

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

(2) 試しにヘッドノードで計算してみます。下記コマンドを実行します。プロセス2でNが16で実行してみます。

time mpirun --oversubscribe -np 2 ./qn24b_mpi 16

下記の例ような表示が出ます。

=============================================
qn24b MPI version 1.0.0 2004-06-16
problem size n        : 16
total   solutions     : 14772512
correct solutions     : 14772512
million solutions/sec : 0.916
elapsed time (sec)    : 16.132
=============================================

(3) 実際に計算ノードを立ち上げて実行するために、キューに入れるためのシェルスクリプトを作ります。下記コマンドを実行します。

cat > qn24b.sh << 'EOF'
#!/bin/bash
#SBATCH -n 2

module load openmpi
mpirun -np ${SLURM_NTASKS} /shared/nqueens/qn24b_mpi 16
EOF

(4) 下記コマンドを実行し、シェルスクリプトの内容を確認します。

cat qn24b.sh

(5) 下記コマンドを実行し、キューに入れて計算します。

sbatch qn24b.sh

(6) しばらくすると処理が終わります。下記コマンドで結果を確認します。ジョブ番号は、ジョブを投入時に表示された番号に適宜置き換えてください。

cat slurm-2.out

先ほどは、ヘッドノードだけで計算しましたが、今回は2台の計算ノードで実行しました。結果はどうなっているか確認してみましょう。時間があれば、プロセス数を増やしてコンパイルして実行したり、Nを多くしてみても良いでしょう。

=============================================
qn24b MPI version 1.0.0 2004-06-16
problem size n        : 16
total   solutions     : 14772512
correct solutions     : 14772512
million solutions/sec : 1.039
elapsed time (sec)    : 14.211
=============================================

ここまでで「Parallel Cluster 環境の作成と利用」部分のハンズオンは終了です。この後「AWS Batch」のハンズオンを行わない場合は、「後片付け」の項目を行ってください。