私の考えでは、レビューはレビューです。プログラムの状態を絶対に変更しないでください。残念ながら、人々はスラム同意しない。
SLURMには、.shファイルの前に次の構文(または類似の構文)が必要です。
#!/bin/bash
#SBATCH --time=5:00:00
#SBATCH --ntasks=8
#SBATCH --mem-per-cpu=1024M
MyProgram.exe
MyProgram.exe
上記は、8つのプロセッサを使用する学校のスーパーコンピュータでプログラムを実行するように要求を送信します。私は現在私のコードをベンチマークしており、コマンドライン引数を使用してプロセッサの数を変更したいと思います。実際、私は次のことをしたいです。
#!/bin/bash
#SBATCH --time=5:00:00
#SBATCH --ntasks=%1
#SBATCH --mem-per-cpu=1024M
MyProgram.exe
%1
コマンドラインパラメータはどこにありますか?それから「sbatch myShScript.sh 123
123プロセッサを使う」と呼びました。もちろん、これはbashが#SBATCH --ntasks=%1
その行をコメントとして解釈し、コマンドライン引数にsubを使用しないため、機能しません。
SLURMまたはBASHをだましてコマンドライン引数を置き換える方法はありますか?
答え1
すべての処理はSLURM(経由)によって行われます。sbatch
特に)はbashを呼び出す前に実行されるので、ここではbashが役に立ちません。スクリプトはどんな言語でも可能で、重要ではありません。これは#SBATCH
偶然のbash注釈だけであり、重要なことはこれがガイドラインであることsbatch
です。
特定のスクリプトで常に同じパラメータを使用する便利な方法を提供するために、ファイルにオプションを指定できます。他のオプションを使用するには、コマンドラインにそのオプションを渡しますsbatch
。sbatch
一部の特定のパラメータでオプションを作成する場合は、実行されるラッパースクリプトを作成できます。ジョブスクリプトの標準入力(aここのドキュメント)を好みに応じて別々のファイルとして保存する代わりに便利です。
#!/bin/sh
sbatch --time=5:00:00 --ntasks="$1" --mem-per-cpu=1024M <<'EOF'
#!/bin/sh
MyProgram.exe
EOF