#author("2024-12-19T20:26:09+00:00","default:sysosa","sysosa") #author("2024-12-19T20:32:25+00:00","default:sysosa","sysosa") とある大学のスパコンでcryoSPARCを流すことになった. そこはジョブコントローラーにGridEngineを採用していた. まぁーそれはいい. 問題は master を常駐状態でどのように稼働させるかであった. 試しにログインノードでmasterを動かしたら、プロセス数の上限に引っかかり起動しなかった. まぁー当然の措置ですな. なのでジョブとしてmasterを動かすことに. 幸いなことに、恐らくphenix・ccp4を念頭なのかインターラクティヴモードが結構安く利用できるみたい #code(nonumber){{ iqrsh -l h_rt=24:00:00 }} と最大24時間利用できるのでその最大数でインターラクティヴモードを開催する 次にcryoSPARCをインターラクティヴモードで動かすわけだが、「iqrsh」の毎に割り当てられるホストが異なる. 「cryosparc_master/config.sh」にはホスト情報が明記されている. なのでホスト情報を割り当てられたマシンに修正してcryosparcを立ち上げる #code(nonumber){{ : export CRYOSPARC_MASTER_HOSTNAME=r4n11 : }} 問題がなければこれでcryoSPARCサービスは立ち上がるのだが、web接続ははてどうするか? ssh tunnelingでカバーする必要がある. 既にcryoSPARCサービスが動いているマシンは知っているので、そこに向けてトンネルを作る. この場合はログインノードを中継に使う なので #code(nonumber){{ ssh -L 39000:r4n11:39000 YYYY@login2.t4.gsic.XXXXX.ac.jp }} とmacOSのターミナルで作るか、簡単にmobaXtermで用意する. そうすれば、「localhost:39000」で立ち上げたcryoSPARCにアクセスできる. 次にジョブの投入 こちらはcluster運用なので「cluster_info.json」と「cluster_script.sh」をGridEngine向けに用意して読ませればOK 具体的には 「cluster_info.json」 #code(nonumber){{ { "name" : "gpu_1", "worker_bin_path" : "/gs/fs/tga-XXXXXXXX/cryoSPARC/cryosparc_worker/bin/cryosparcw", "cache_path" : "/local/${JOB_ID}", "send_cmd_tpl" : "{{ command } }", "qsub_cmd_tpl" : "qsub -g tga-XXXXXXXX {{ script_path_abs } } ", "qstat_cmd_tpl" : "qstat -j {{ cluster_job_id } } ", "qdel_cmd_tpl" : "qdel {{ cluster_job_id } }" } }} &size(10){Pukiwikiの書式により「}」の連続表記にスペースを噛ましてます}; また「cluster_script.sh」は #code(nonumber){{ #!/usr/bin/env bash #$ -cwd #$ -l gpu_1=1 #$ -l h_rt=24:00:00 #$ -N cs_{{ project_uid } }_{{ job_uid } } #$ -o {{ job_dir_abs } }/slurm.out #$ -e {{ job_dir_abs } }/slurm.err {{ run_cmd } } }} な感じで. nameは使用可能な資源名でいいのかなと. ただ、そのままではGridEngineから出される「job ID」が上手くパースしてくれなくてエラーがでます なので、ソースコードを一部修正する必要がありました #code(nonumber){{ vi ./cryosparc_master/cryosparc_compute/cluster.py 145行目 return message.strip().split()[-1] ↓ return message.strip().split()[2] }} こんな感じで. Slurm/OpenPBSはジョブ発行時の文言の末尾に「job ID」が提示されるのですが、ここのGridEngineはそうではないみたい. なので修正が必要となりました. cryoSPARCサービスは最大でも24時間まで動かせれる. それ以上動かすと強制停止になる. そうなるとかなり面倒. まずdetabaseが正常終了しないので怪しい. /tmp/cryosparc-*と/tmp/mongo*が残る. 怖いことに インターラクティヴモード に入っているターミナルで「Ctrl-C」でも強制終了となる. 扱いに注意が必要かな. もしmasterを止めてしまったら、即座にインターラクティヴモードを再開させて復旧を図る. 発行されている計算jobはmasterと常に通信してます. masterが不在になるとjobも落ちます. 運が良ければ継続可能かなと思いますが、インターラクティヴモードを再開したら別のノードに移ってしまった... アウトかな. はじめら計算を再開になりそうです.