프로그래밍:클러스터_사용법

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
프로그래밍:클러스터_사용법 [2021/06/07 18:37] – created yong프로그래밍:클러스터_사용법 [2023/09/05 15:46] (current) – external edit 127.0.0.1
Line 20: Line 20:
 클러스터는 기본적으로 쉘 스크립트를 작성하고 이것을 실행하는 명령을 내림으로 시작된다. 기본적인 형태의 예제 스크립트는 아래와 같이 작성할 수 있다. 클러스터는 기본적으로 쉘 스크립트를 작성하고 이것을 실행하는 명령을 내림으로 시작된다. 기본적인 형태의 예제 스크립트는 아래와 같이 작성할 수 있다.
  
 +<code bash>
 +[your_account@master ~]$ vi test.sh
 +</code>
 <code | test.sh> <code | test.sh>
 #!/bin/sh #!/bin/sh
 #PBS -N my-python-code #PBS -N my-python-code
-#PBS -l nodes=1:ppn=1+#PBS -l nodes=1:ppn=4
 #PBS -q g4 #PBS -q g4
 cd #PBS_O_WORKDIR cd #PBS_O_WORKDIR
Line 30: Line 33:
 </code> </code>
  
-위의 코드를 해석하면, 'my-python-code' 라고 job의 이름을 설정하고, '하나의 노드, 프로세서 4개에 할당''G4 GN에 할당'그리고 +위의 코드, 
-스크립트가 실핼항 디렉토리로 이동하고, code.py를 python3로 실행하는 것이다.+  - 'my-python-code' 라고 job의 이름을 설정 
 +  - '하나의 노드 (nodes), 프로세서 (ppn) 4개에 할당' 
 +  - 'G4 GN에 할당' 
 +  - 그리고 스크립트가 실행할 디렉토리로 이동 
 +  - code.py를 python3로 실행 
 +으로 해석된다. 이 때 주의할 점은 '#PBS'의 #은 주석이 아니기 때문에 반드시 '#PBS'로 입력하고 명령어를 입력해야 한다. 
 +'cd #PBS_O_WORKDIR'의 경우qsub를 실행할 위치로 이동해주는 것이므로, 만약 하위코드에서 절대경로가 아닌,  
 +'상대경로'를 입력한 경우 이 명령어를 넣지 않으면 스크립트가 오작동 할 수 있다. 
 + 
 +===== 사용가능 명령어 ===== 
 + 
 + 
 +====== 작업 실행 ====== 
 +원하는대로 스크립트를 작성했으면, 클러스터에 작업을 실행시켜보자. test.sh 를 작업하는 명령은 아래와 같이 입력한다. 
 + 
 +<code bash> 
 +[your_account@master ~]$ qsub test.sh 
 +</code> 
 + 
 +입력하고 나면 'xxxxxx.master.hpc' (x는 할당된 작업번호) 로 echo 된다. 이는 xxxxxx 라는 번호로 할당이 되었다는 것이다. 
 + 
 +====== 작업 보기 ====== 
 +클러스터가 실행하고 있는 작업을 보는 명령어는 
 +  - 현재 클러스터에서 실행중인 작업 보기 
 +  - 클러스터의 모든 노드의 상태 보기 
 +  - 현재 실행중인 작업과 클러스터의 자원상태 보기 
 +가 있다. 첫 번째로 현재 클러스터에서 실행중인 작업을 보는 명령어는 **qstat** 이다. 
 +명령어를 입력하면 아래와 같이 나타난다. 
 + 
 +<code bash> 
 +[your_account@master ~]$ qstat 
 +Job ID                    Name             User            Time Use S Queue 
 +------------------------- ---------------- --------------- -------- - ----- 
 +xxxxxx.master              my-python-code   your_account   00:00:00 R g4 
 +</code> 
 + 
 +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     state   load  pmem  ncpu  mem    resi usrs tasks NetMbit jobids/users 
 +x001.hpc  g1   free       15984    15984    319  0/0    0      0 
 +x002.hpc  g1   free       15984    15984    286  0/0    0      0 
 +... 
 +x012.hpc  g1   free       15984    15984    301  0/0    0      0 
 +x013.hpc  g1   free       15984    15984    317  0/0    0      0 
 +x014.hpc  g2   free       15733    15733    299  0/0    0      0 
 +x015.hpc  g2   free       15733    15733    295  0/0    0      0 
 +... 
 +x021.hpc  g2   free       15733    15733    297  0/0    0      0 
 +x022.hpc  g2   free       15733    15733    332  0/0    0      0 
 +x023.hpc  g3   free       15637    15637    222  0/0    0      0 
 +x024.hpc  g3   free       15637    15637    221  0/0    0      0 
 +x025.hpc  g4   excl       15953    15953    225  1/1    1      0    xxxxxx your_account 
 +x026.hpc  g4   free       15953    15953    221  0/0    0      0 
 +... 
 +x039.hpc  g4   free       15953    15953    221  0/0    0      0 
 +x040.hpc  g4   free       15953    15953    221  0/0    0      0 
 +</code> 
 +GN을 g4로 선택하였기 때문에, g4로 시작하는 x025.hpc 노드에 작업이 할당된 을 볼 수 있다. 또한 test.sh에서 4개의 cpu로 계산을 실행했기 때문에, 다른 작업을 g4에 할당하는 경우, 
 +x026.hpc로 작업이 할당된다. 만약에 스크립트 파일에서 1개의 cpu로 계산을 실행하게 되면, x025.hpc에 다른 작업명으로 또 할당되게 된다. 
 + 
 +세 번째로 현재 실행중인 작업과 클러스터의 자원상태를 보는 명령어는 **showq** 이다. 
 +<code bash> 
 +[your_account@master ~]$ showq 
 +ACTIVE JOBS-------------------- 
 +JOBNAME            USERNAME      STATE  PROC   REMAINING            STARTTIME 
 + 
 +xxxxxx         your_account    Running     4 99:22:52:31  Mon Jun  7 18:00:00 
 + 
 +     1 Active Jobs       4 of   96 Processors Active (4.17%) 
 +                         1 of   24 Nodes Active      (4.17%) 
 + 
 +IDLE JOBS---------------------- 
 +JOBNAME            USERNAME      STATE  PROC     WCLIMIT            QUEUETIME 
 + 
 + 
 +BLOCKED JOBS---------------- 
 +JOBNAME            USERNAME      STATE  PROC     WCLIMIT            QUEUETIME 
 + 
 + 
 +Total Jobs: 1   Active Jobs: 1   Idle Jobs: 0   Blocked Jobs: 0 
 +</code> 
 + 
 +앞의 명령어들과의 차이점은, 자신이 작업을 언제 실행시켰는지, 컴퓨터의 남은 자원은 얼마나 있는지 알 수 있다는 것이다. 
 + 
 +====== 작업 종료 ====== 
 +코드가 제대로 실행되지 않거나 또는 중간에 작업을 중단해야 할 경우가 있다. 이 경우에는 **qdel '작업번호'** 를 입력하면 작업이 중단된다. 
 +예를들어 작업번호 xxxxxx의 작업을 중단하려면 
 + 
 +<code bash> 
 +[your_account@master ~]$ qdel xxxxxx 
 +</code> 
 + 
 +를 입력해주면 된다. 그리고 자신이 할당한 **모든 작업을 중단**하는 경우, 
 + 
 +<code bash> 
 +[your_account@master ~]$ qselect -u your_account | xargs qdel 
 +</code> 
 + 
 +을 입력하면 된다. 
 + 
 +====== 외부링크 ====== 
 +  * https://www.altair.com/pbs-works-documentation/ 
  • 프로그래밍/클러스터_사용법.1623058651.txt.gz
  • Last modified: 2023/09/05 15:46
  • (external edit)