SLURM을 사용하는 주석의 명령줄 매크로

SLURM을 사용하는 주석의 명령줄 매크로

제 생각에는 리뷰는 리뷰입니다. 프로그램 상태를 절대로 변경해서는 안 됩니다. 안타깝게도 사람들은스럼동의하지 않는다.

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 123123 프로세서 사용" 이라고 불렀습니다 . 물론 이것은 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

관련 정보