#author("2026-05-21T14:50:05+00:00","default:sysosa","sysosa")
#author("2026-05-21T14:52:48+00:00","default:sysosa","sysosa")
&color(red){メモです。下記は実際に試していないです. 出来ないかもしれません};

特に Clusters形式 で cryoSPARC を運用していると同じ「常に」特定の計算ノードでジョブが動くわけではなので
計算ノードが違うと /scratch に初めから再度データ転送が始まって、計算の完了に時間を要する.

ネットワークが太かったり高速なストレージを持っていれば気にしないのかもしれませんが、まぁー転送時間はなるべく小さくしたい..

ではどうするべきか?

安直にBeeONDを考えた。でもこれって他のノードの/scratchを合わせられるが、他のノードの計算リソースも使うなら有利だけど(relionなら)、
cryoSPARCは単一ノードでしか計算しないから微妙. 加えてネットワークを跨ぐので律速はネットワーク。
ローカルのNVMeのみ使うならそっちのほうが断然いい。

ならば、そのプロジェクトで計算が行われたノードを調べ、そのノードにある/scratchを丸ごとrsyncで持ってくる。転送が終わってからcryoSPARCのジョブを開始させると。

***プロジェクトと計算ノードリスト [#cace3b67]
これは単純に「&color(magenta){cluster_script.sh};」の「{{ run_cmd }}」の後、末尾に実行ノードを別ファイルに記載するコードを追加
例えばこんな感じに
#code(nonumber){{
echo "{{ project_uid } } `hostname -s`" >> $HOME/cryoSPARC/project-worker-map
}}
と「project_uid hostname」のリストを作る

っで実際に使う際、例えば P100 の直近のworkerは
「grep P100 $HOME/cryoSPARC/project-worker-map | tail -n 1 | awk '{print $2}'」
で得られる.

***直前の計算ノードからrsyncでデータを持ってくる [#c7dd210d]

これも「&color(magenta){cluster_script.sh};にて「{{ run_cmd }}」の前に記載する
なので全体像は
#code(nonumber){{
#!/usr/bin/env bash
#SBATCH --chdir={{ job_dir_abs } }
#SBATCH --export=NONE
#SBATCH --job-name cs_{{ project_uid } }{{ job_uid } }
#SBATCH --cpus-per-task={{ num_cpu } }
#SBATCH --gres=gpu:{{ num_gpu } }
#SBATCH --partition=workq
#SBATCH --mem={{ (ram_gb|float * (ram_gb_multiplier|default(1))|float)|int } }G
#SBATCH --comment="created by {{ cryosparc_username } }"
#SBATCH --account={{ cryosparc_username } }
#SBATCH --output={{ job_log_path_abs } }
#SBATCH --error={{ job_log_path_abs } }

# /scratchデータのコピー
worker=$(grep {{ project_uid } }   $HOME/cryoSPARC/project-worker-map | tail -n 1 | awk '{print $2}')
if [ -n "$work" ]; then
  if ping -c 1 "$work" > /dev/null 2>&1; then
     rsync -aH \
           --delete \
           --whole-file \
           --numeric-ids \
          $work:/scratch/instance_cryosparc:39001/  $work:/scratch/instance_cryosparc:39001/
   fi
fi

# cryoSPARC job実行
{{ run_cmd } }

# 実行場所の記録
grep {{ project_uid } } $HOME/cryoSPARC/project-worker-map | tail -n 1 | awk '{print $2}'

}}
&color(red){*}; &size(10){このwebページの記載書式により「} }」となってますが、実際には「}」は繋がって表記されます};

***めも [#ye01a7ef]
まったくもって試していない。なんかネットワーク依存なのであんまり時短にはらないかも.


1

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS