クラスタ計算機にログインするためにはSSH鍵を作成する必要があります。 ターミナルを開いて次のようにコマンドを入力してください。
$ cd $ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/username/.ssh/id_rsa): # Enterキーを押します Created directory '/home/username/.ssh'. # ~/.ssh がない場合、ディレクトリを作成します Enter passphrase (empty for no passphrase): # パスフレーズを入力します Enter same passphrase again: # もう一度パスフレーズを入力します Your identification has been saved in /home/username/.ssh/id_rsa. Your public key has been saved in /home/username/.ssh/id_rsa.pub.
パーミッションを設定します。
$ chmod 600 ~/.ssh/id_rsa $ chmod 700 ~/.ssh/
.sshディレクトリ(隠しフォルダ)内に生成されたid_rsa.pubを、計算機の管理者にメールなどで送ってください。
事前にクラスタ計算機の管理者からIPアドレスまたはホスト名を聞いてください。 ここではIPアドレス(またはホスト名)をxxx.xxx.xxx.xxxとします。
ターミナルを開いて次のようにコマンドを打ちます。 usernameはクラスタ計算機でのユーザー名にしてください。
$ ssh -i ~/.ssh/id_rsa username@xxx.xxx.xxx.xxx The authenticity of host 'server_no_address.jp (xxx.xxx.xxx.xxx)' can't be established. RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Are you sure you want to continue connecting (yes/no)? yes
パスフレーズを聞かれるので、SSH鍵を作成した際に設定したものを入力します。
configファイルを使うと、ログインのたびに毎回IPアドレスを打ち込む手間が省けます。
$ cd ~/.ssh/ $ vim config
Host hogehoge HostName xxx.xxx.xxx.xxx User username IdentityFile ~/.ssh/id_rsa
usernameはクラスタ計算機でのユーザー名に変更してください。 hogehogeは自分のわかりやすいものに変更してください。
ログインは次のようにします。
$ ssh hogehoge The authenticity of host 'server_no_address.jp (xxx.xxx.xxx.xxx)' can't be established. RSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. Are you sure you want to continue connecting (yes/no)? yes
パスフレーズを聞かれるので、SSH鍵を作成するときに設定したものを入力します。
終了するときはサーバーからログアウトしてください
$ exit
コンパイラIntel OneAPIの登録をします。 サーバーにログインし、ホーム・ディレクトリにある.bashrcを開いて、一番下の行にOneAPIのパスを追加します。
$ vim .bashrc
(略) source /opt/intel/oneapi/setvars.sh
$ source ~/.bashrc
ジョブスケジューラであるOpenPBSの設定をします
a.outというプログラムを実行する場合を考えます。 ジョブスケジューラでプログラムを実行すれば、サーバーからログアウト後もプログラムは動き続けます。
次のスクリプトファイルをプログラムと同じディレクトリに作成します。
$ vim run.sh
#!/bin/bash #PBS -V #PBS -l select=1:ncpus=1 cd $PBS_O_WORKDIR ./a.out
スクリプトファイルに実行権限を付与します(実行権限は一度付与したら残り続けます)
$ chmod +x run.sh
ジョブを計算機に投げます
$ qsub run.sh
ジョブの状況やジョブ番号 (Job ID) はqstatコマンドで確認できます。
$ qstat
オプションをつけるとより細かいジョブ状態が見えます。 ジョブIDを省略した場合、投げているすべてのジョブについて表示されます。
$ qstat -s <job ID>
$ qstat -f <job ID>
ジョブの強制終了はqdelコマンドで行います。
$ qdel <job ID>
使用できる計算ノードの情報はpbsnodesコマンドで行います。
$ pbsnodes -a
各ノードの使用状況がひと目でわかる簡易表示もできます。
$ pbsnodes -aSj
使用には数値計算プログラムをOpenMPやMPIによる並列化に対応させる必要があります。
ncpus = mpiprocs × ompthreads となるように設定します。
12スレッドのOpenMP並列の例です。
#!/bin/bash #PBS -V #PBS -l select=1:ncpus=12:ompthreads=12 cd $PBS_O_WORKDIR ./a.out
2ノード48コア(1ノード当たり24コア)を使用し、MPIスレッドは全部で4つ作る例です。 各MPIスレッドでOpenMPは12並列です
#!/bin/bash #PBS -V #PBS -l select=2:ncpus=24:mpiprocs=2:ompthreads=12 cd $PBS_O_WORKDIR ./a.out