Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
프로그래밍:클러스터_사용법 [2021/06/07 18:37] – created yong | 프로그래밍:클러스터_사용법 [2025/01/21 13:16] (current) – heejeong | ||
---|---|---|---|
Line 20: | Line 20: | ||
클러스터는 기본적으로 쉘 스크립트를 작성하고 이것을 실행하는 명령을 내림으로 시작된다. 기본적인 형태의 예제 스크립트는 아래와 같이 작성할 수 있다. | 클러스터는 기본적으로 쉘 스크립트를 작성하고 이것을 실행하는 명령을 내림으로 시작된다. 기본적인 형태의 예제 스크립트는 아래와 같이 작성할 수 있다. | ||
+ | <code bash> | ||
+ | [your_account@master ~]$ vi test.sh | ||
+ | </ | ||
<code | test.sh> | <code | test.sh> | ||
#!/bin/sh | #!/bin/sh | ||
#PBS -N my-python-code | #PBS -N my-python-code | ||
- | #PBS -l nodes=1: | + | #PBS -l nodes=1: |
#PBS -q g4 | #PBS -q g4 | ||
cd # | cd # | ||
Line 30: | Line 33: | ||
</ | </ | ||
- | 위의 코드를 해석하면, ' | + | 위의 코드는, |
- | 스크립트가 실핼항 | + | - ' |
+ | - ' | ||
+ | - 'G4 GN에 할당' | ||
+ | - 그리고 스크립트가 실행할 | ||
+ | - code.py를 python3로 실행 | ||
+ | 으로 해석된다. 이 때 주의할 점은 '# | ||
+ | 'cd # | ||
+ | ' | ||
+ | |||
+ | ===== 사용가능 명령어 ===== | ||
+ | |||
+ | |||
+ | ====== 작업 실행 ====== | ||
+ | 원하는대로 스크립트를 작성했으면, | ||
+ | |||
+ | <code bash> | ||
+ | [your_account@master ~]$ qsub test.sh | ||
+ | </ | ||
+ | |||
+ | 입력하고 나면 ' | ||
+ | |||
+ | ====== 작업 보기 ====== | ||
+ | 클러스터가 실행하고 있는 작업을 보는 명령어는 | ||
+ | - 현재 클러스터에서 실행중인 작업 보기 | ||
+ | - 클러스터의 모든 노드의 상태 보기 | ||
+ | - 현재 실행중인 작업과 클러스터의 자원상태 보기 | ||
+ | 가 있다. 첫 번째로 현재 클러스터에서 실행중인 작업을 보는 명령어는 **qstat** 이다. | ||
+ | 명령어를 입력하면 아래와 같이 나타난다. | ||
+ | |||
+ | <code bash> | ||
+ | [your_account@master ~]$ qstat | ||
+ | Job ID Name | ||
+ | ------------------------- ---------------- --------------- -------- - ----- | ||
+ | xxxxxx.master | ||
+ | </ | ||
+ | |||
+ | Job ID는 qsub 명령어를 입력했을 때 나타난 작업의 번호, Name에 스크립트에 입력했던 이름, User에 계정 이름, Time Use에 실행한 시간, S에는 상태, | ||
+ | Queue 에는 할당한 GN이다. 이 때 S가 상태에 따라 나타나는 이니셜이 다르며 보통 아래와 같이 나타난다. | ||
+ | * R: Run. 작업 진행중. | ||
+ | * C: Completed. 작업 종료됨. (정상적으로 작업을 끝낸 경우) | ||
+ | * E: Exit. 작업 나감. (일반적으로 모든 작업 강제 종료시 나타나는 상태) | ||
+ | * Q: Queue. 대기. (모든 노드에서 작업이 | ||
+ | * W: Wait. 시간 대기. (qsub 명령어에서 -A 옵션으로 작업 실행 대기중) | ||
+ | * H: Hold. (작업 중간에 잠시 일시정지 하는 경우) | ||
+ | |||
+ | 두 번째로 모든 노드의 상태를 보는 명령어는 **pestat** 이다. | ||
+ | 명령어를 입력하면 아래와 같이 나타난다. | ||
+ | |||
+ | <code bash> | ||
+ | [your_account@master ~]$ pestat | ||
+ | Node GN | ||
+ | x001.hpc | ||
+ | x002.hpc | ||
+ | ... | ||
+ | x012.hpc | ||
+ | x013.hpc | ||
+ | x014.hpc | ||
+ | x015.hpc | ||
+ | ... | ||
+ | x021.hpc | ||
+ | x022.hpc | ||
+ | x023.hpc | ||
+ | x024.hpc | ||
+ | x025.hpc | ||
+ | x026.hpc | ||
+ | ... | ||
+ | x039.hpc | ||
+ | x040.hpc | ||
+ | </ | ||
+ | GN을 g4로 선택하였기 때문에, g4로 시작하는 x025.hpc 노드에 작업이 할당된 | ||
+ | x026.hpc로 작업이 할당된다. 만약에 스크립트 파일에서 1개의 cpu로 계산을 실행하게 되면, x025.hpc에 다른 작업명으로 또 할당되게 된다. | ||
+ | |||
+ | 세 번째로 현재 실행중인 작업과 클러스터의 자원상태를 보는 명령어는 **showq** 이다. | ||
+ | <code bash> | ||
+ | [your_account@master ~]$ showq | ||
+ | ACTIVE JOBS-------------------- | ||
+ | JOBNAME | ||
+ | |||
+ | xxxxxx | ||
+ | |||
+ | 1 Active Jobs 4 of 96 Processors Active (4.17%) | ||
+ | 1 of 24 Nodes Active | ||
+ | |||
+ | IDLE JOBS---------------------- | ||
+ | JOBNAME | ||
+ | |||
+ | |||
+ | BLOCKED JOBS---------------- | ||
+ | JOBNAME | ||
+ | |||
+ | |||
+ | Total Jobs: 1 | ||
+ | </ | ||
+ | |||
+ | 앞의 명령어들과의 차이점은, | ||
+ | |||
+ | ====== 작업 종료 ====== | ||
+ | 코드가 제대로 실행되지 않거나 또는 중간에 작업을 중단해야 할 경우가 있다. 이 경우에는 **qdel ' | ||
+ | 예를들어 작업번호 xxxxxx의 작업을 중단하려면 | ||
+ | |||
+ | <code bash> | ||
+ | [your_account@master ~]$ qdel xxxxxx | ||
+ | </ | ||
+ | |||
+ | 를 입력해주면 된다. 그리고 자신이 할당한 **모든 작업을 중단**하는 경우, | ||
+ | |||
+ | <code bash> | ||
+ | [your_account@master ~]$ qstat | grep [your_account] | xargs qdel | ||
+ | </ | ||
+ | |||
+ | 을 입력하면 된다. | ||
+ | |||
+ | ====== 외부링크 ====== | ||
+ | * https:// |