User Tools

Site Tools


自作クラスタ計算機:ユーザー向け利用ガイド

概要

  • クラスタ計算機の使い方です
  • 新入生向け

サーバーへのログイン手順

SSH鍵の作成

クラスタ計算機にログインするためには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ファイルを作成する方法

configファイルを使うと、ログインのたびに毎回IPアドレスを打ち込む手間が省けます。

$ cd ~/.ssh/
$ vim config
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の設定

コンパイラIntel OneAPIの登録をします。 サーバーにログインし、ホーム・ディレクトリにある.bashrcを開いて、一番下の行にOneAPIのパスを追加します。

$ vim .bashrc
.bashrc
(略)

source /opt/intel/oneapi/setvars.sh
$ source ~/.bashrc

ジョブスケジューラOpenPBSの設定

ジョブスケジューラであるOpenPBSの設定をします

プログラムの実行

a.outというプログラムを実行する場合を考えます。 ジョブスケジューラでプログラムを実行すれば、サーバーからログアウト後もプログラムは動き続けます。

並列化なしでの簡単な例

次のスクリプトファイルをプログラムと同じディレクトリに作成します。

$ vim run.sh
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による並列化に対応させる必要があります。

  • select … ノードの数を指定します
  • ncpus … 1ノードあたりのCPUのコア数を指定します
  • mpiprocs … 1ノードあたりのMPIスレッド数を指定します
  • ompthreads … OpenMPスレッド数を指定します

ncpus = mpiprocs × ompthreads となるように設定します。

例:OpenMPのみ

12スレッドのOpenMP並列の例です。

run.sh
#!/bin/bash
#PBS -V
#PBS -l select=1:ncpus=12:ompthreads=12
 
cd $PBS_O_WORKDIR
 
./a.out

例:OpenMPとMPIのハイブリッド実行

2ノード48コア(1ノード当たり24コア)を使用し、MPIスレッドは全部で4つ作る例です。 各MPIスレッドでOpenMPは12並列です

run.sh
#!/bin/bash
#PBS -V
#PBS -l select=2:ncpus=24:mpiprocs=2:ompthreads=12
 
cd $PBS_O_WORKDIR
 
./a.out
自作クラスタ計算機/ユーザー向け利用ガイド.txt · Last modified: 2023/12/03 21:30 by koudai