0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

遺伝研スパコンSlurmの使用方法

Last updated at Posted at 2025-03-25

2025年3月に遺伝研スパコンがアップデートされ、使い方が変わって問い合わせがちょこちょこあるのでメモ。変な部分があれば教えてください。

ログイン

これまでのqloginは使えなくなったので

ssh a001
# a002もしくはa003でもOK (a001は混雑気味な雰囲気がある)

ゲートウェイノードには基本的に用事がないので、そのままインタラクティブノードに入れるようにすれば良くないか?と思ったので、~/.bashrcに以下の文を追加するとすぐに入れて便利

~/.bashrc
if [ "$(hostname)" == "gw" ]; then
    ssh a001
fi

ジョブ実行

shortノード、4コア、8GB/コア(計32GB)でジョブを行う場合

job.sh
#!/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というファイルを作っておくと楽。

~/.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}")
~/.bashrc
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的なコマンド)が確認できる。
qallqall -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

とすると良くなった。

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?