2025年3月に遺伝研スパコンがアップデートされ、使い方が変わって問い合わせがちょこちょこあるのでメモ。変な部分があれば教えてください。
ログイン
これまでのqlogin
は使えなくなったので
ssh a001
# a002もしくはa003でもOK (a001は混雑気味な雰囲気がある)
ゲートウェイノードには基本的に用事がないので、そのままインタラクティブノードに入れるようにすれば良くないか?と思ったので、~/.bashrc
に以下の文を追加するとすぐに入れて便利
if [ "$(hostname)" == "gw" ]; then
ssh a001
fi
ジョブ実行
shortノード、4コア、8GB/コア(計32GB)でジョブを行う場合
#!/bin/bash
#SBATCH --job-name=JOBNAME
#SBATCH -N 1-1
#SBATCH -n 4
#SBATCH --mem-per-cpu=8G
#SBATCH --partition=short
#SBATCH --error=/home/USERNAME/log/%x_%j.err.log
#SBATCH --output=/home/USERNAME/log/%x_%j.out.log
#########YOUR JOB#############
JOBNAMEは好きなように、USERNAMEは自分のユーザー名に変える。
partitionはshort, epyc, rome, mediumを指定
エラーログと標準ログが/home/USERNAME/logに保存されるような設定なのでここも好みで書き換える。
完成したら
sbatch job.sh
でジョブを投入
ジョブの状況確認
SGEでいうqstat
まわり。
入力するのが少し面倒なので、~/.bashrc
で先に定義しておくのと、~/.node.py
というファイルを作っておくと楽。
import re
import sys
content = sys.stdin.read()
nodes = ["NodeName" + node.strip() for node in content.split("NodeName") if node.strip()]
print(f"{'Partition':<10}{'Node':<10}{'State':<15}{'CPUTot':<8}{'CPUAlloc':<10}{'RealMemory':<12}{'AllocMem':<12}{'AllocTRES'}")
for node_data in nodes:
node_name = re.search(r"NodeName=(\S+)", node_data).group(1)
partition_match = re.search(r"Partitions=(\S+)", node_data)
partition = partition_match.group(1) if partition_match else "unknown"
state = re.search(r"State=(\S+)", node_data).group(1)
cpu_tot = re.search(r"CPUTot=(\d+)", node_data).group(1)
cpu_alloc = re.search(r"CPUAlloc=(\d+)", node_data).group(1)
real_memory = re.search(r"RealMemory=(\d+)", node_data).group(1)
alloc_mem = re.search(r"AllocMem=(\d+)", node_data).group(1)
alloc_tres_match = re.search(r"AllocTRES=(\S+)", node_data)
alloc_tres = alloc_tres_match.group(1) if alloc_tres_match else "N/A"
real_memory_tb = int(real_memory) / 1024 / 1024
alloc_mem_tb = int(alloc_mem) / 1024 / 1024
print(f"{partition:<10}{node_name:<10}{state:<15}{cpu_tot:<8}{cpu_alloc:<10}{real_memory_tb:.2f}TB {alloc_mem_tb:.2f}TB {alloc_tres}")
alias qstat='squeue -u ${USER} --format="%.18i %.9P %.20j %.18u %.2t %.10M %.6C %.10m %.10L %.20V %.20S %R"'
alias qall='squeue --format="%.18i %.9P %.20j %.18u %.2t %.10M %.6C %.10m %.10L %.20V %.20S %R"'
alias qnode="scontrol show node | python ~/.node.py"
qstat
で自分のジョブが、qall
で全ユーザーのジョブが、qnode
でノードごとの混雑状況(qstat -f
的なコマンド)が確認できる。
qall
はqall -p medium
のようにするとmediumノードだけが表示可能。
ストレージ確認
こちらも~/.bashrc
で先に定義しておくと楽。
alias quota="lfs quota -u ${USER} ${HOME}"
quota
で現在使用しているストレージが表示できる。
conda/mamba周り
~/.bash.rc
に
eval "$(mamba shell hook --shell bash)"
があるとgwノードにずっとログインできなくなるので
if [ "$(hostname)" != "gw" ]; then
eval "$(mamba shell hook --shell bash)"
fi
とすると良くなった。