#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] まったくもって試していない。なんかネットワーク依存なのであんまり時短にはらないかも.