京都大学スーパーコンピュータシステム用の便利なジョブ実行ラッパーツール
qcmdは、京都大学のスーパーコンピュータシステムでSlurmを使った計算を手軽に実行するためのラッパーツールです。通常であればバッチスクリプトを書く必要がある処理を、コマンドライン引数として直接指定して実行できます。
- 簡単なジョブ実行: バッチスクリプトを書かずにコマンドを直接実行
- 柔軟なリソース指定: プロセス数、コア数、メモリ量、実行時間などを環境変数で指定
- 京大スパコン対応: 京都大学のカスタムSlurm環境に最適化
# ツール用ディレクトリを作成
mkdir -p ~/tools && cd ~/tools
# qcmd.shをダウンロード
wget https://raw.githubusercontent.com/shudolab/qcmd/refs/heads/main/qcmd.sh
# 実行権限を付与
chmod a+x qcmd.sh
# binディレクトリにシンボリックリンクを作成
mkdir -p ~/bin && ln -s ~/tools/qcmd.sh ~/bin/qcmd~/.bash_profileに以下を追加(既にない場合):
# Set PATH for user bin
if [ -d "$HOME/bin" ] ; then
export PATH="$HOME/bin:$PATH"
fiSSHログインし直してから以下を実行:
qcmd以下のような使用方法が表示されれば成功です:
Usage: [Q=QueueName] [ [P=NProcs] [C=NCpus] [M=Memory (GB)] | [G=NGpus] ] [W=WallTime (hour)] [J=JobName] [O=LogDir] bash qcmd [-I|command]
使用するシステムが決まっている場合は、使用するキューを事前に設定しておくと便利です:
# 自分が使えるキューを確認
spartition
# ~/.bash_profileに追加(例)
export Q=gr20100b# 簡単なコマンド実行
Q=gr20100b J='showHostname' qcmd hostname
# リソースを指定した実行
Q=gr20100b C=4 M=20 W=24 qcmd your_command
# パイプやリダイレクトを含む処理
Q=gr20100b qcmd 'ls > test.txt'| オプション | 説明 | デフォルト値 |
|---|---|---|
| Q | ジョブを投入するキュー(パーティション)名 | pa, pb, pc etc. |
| P | プロセス数 | 1 |
| C | プロセスあたりのコア数 | 1 |
| M | プロセスあたりのメモリ量(GB) | 3GB |
| G | GPU数(システムGでのみ) | - |
| W | 実行時間の上限(hour) | - |
| J | ジョブ名 | - |
| O | ログファイル出力ディレクトリ | - |
# 4並列、メモリ20GB、実行時間24時間でプログラム実行
Q=gr20100b C=4 M=20 W=24 qcmd ./my_program
# GPU使用ジョブ
Q=gr20100g G=1 qcmd python gpu_script.py
# ログディレクトリを指定
Q=gr20100b O=logs J=my_job qcmd simulation.exeこのツールは京都大学の以下のシステムで動作します:
- システムA: ノード数が多く、メモリバンド幅が広い
- システムB: メモリとCPUのバランスが良い構成
- システムC: 大容量メモリ(2TB)
- システムG: GPU搭載システム
各システムでキュー名が異なるため、spartitionコマンドで利用可能なキューを確認してください。
- スペースを含むパスをコマンドに使用すると正常に動作しない可能性があります
- qcmdはハイパースレッディング非対応です
- GPU使用時(G指定)は、P, T, C, Mの指定は無視され、自動的にGに合わせた値が設定されます