Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

일괄 처리 병렬 작업 실행하기

일괄 처리 작업 실행하기

MATLAB®의 작업을 또다른 세션에서 백그라운드로 실행하도록 분담하려면 스크립트 내에 batch 명령을 사용하면 됩니다.

  1. 스크립트를 만들려면 다음을 입력하십시오.

    edit mywave
  2. MATLAB 편집기에서 다음과 같이 for 루프를 만듭니다.

    for i = 1:1024
      A(i) = sin(i*2*pi/1024);
    end
  3. 파일을 저장하고 편집기를 닫습니다.

  4. MATLAB 명령 창에서 batch 명령을 사용하여 별도의 MATLAB 워커에서 스크립트를 실행합니다.

    job = batch('mywave')

    MATLAB client passing a batch command to the MATLAB worker.

  5. batch는 MATLAB을 차단하지 않으며 사용자는 계산이 진행되는 동안에도 계속해서 작업할 수 있습니다. 작업이 완료될 때까지 MATLAB을 차단해야 하는 경우에는 job 객체에 wait 함수를 사용하십시오.

    wait(job)
  6. 작업이 완료된 후에는 결과를 검색하고 볼 수 있습니다. load 명령은 워커에서 생성된 변수를 클라이언트 작업 공간으로 전송하는데 결과는 여기에서 볼 수 있습니다.

    load(job,'A')
    plot(A)
  7. 작업이 완료되면 다음과 같이 작업 공간에서 영구히 작업 데이터를 삭제하고 이에 대한 참조를 제거합니다.

    delete(job)
    clear job

batch는 로컬 워커나 클러스터 워커에서 코드를 실행하지만 병렬 풀을 필요로 하지는 않습니다.

batch를 사용하여 스크립트나 함수를 실행할 수 있습니다. 자세한 내용은 batch 함수 도움말 페이지를 참조하십시오.

병렬 풀을 사용하여 일괄 처리 작업 실행하기

병렬 풀에서 작업을 분담하고 루프를 실행하는 기능을 결합할 수 있습니다. 이 예제에서는 두 기능을 결합하여 간단한 일괄 처리 parfor 루프를 만듭니다.

  1. 스크립트를 만들려면 다음을 입력하십시오.

    edit mywave
  2. MATLAB 편집기에서 다음과 같이 parfor 루프를 만듭니다.

    parfor i = 1:1024
      A(i) = sin(i*2*pi/1024);
    end
  3. 파일을 저장하고 편집기를 닫습니다.

  4. batch 명령을 사용하여 MATLAB에서 스크립트를 실행합니다. 스크립트가 루프에 병렬 풀을 사용해야 함을 명시하십시오.

    job = batch('mywave','Pool',3)

    이 명령은 일괄 처리 스크립트를 실행하는 하나의 워커 외에 3개의 워커가 루프 반복을 실행할 것을 지정합니다. 따라서 이 예제에서는 일괄 처리 스크립트를 실행하는 하나의 워커를 포함하여 총 4개의 로컬 워커를 사용합니다. 다음 도식에 나와 있는 것처럼 모두 합쳐 5개의 MATLAB 세션이 연관되어 있습니다.

    MATLAB client sending the batch command to the lead MATLAB worker to instruct three other workers to execute the script.

  5. 결과를 보기 위해 다음을 입력합니다.

    wait(job)
    load(job,'A')
    plot(A)

    결과는 이전과 같아 보이지만 실행에서 두 가지 중요한 차이가 있습니다.

    • parfor 루프를 정의하고 그 결과를 누적하는 작업이 batch에 의해 다른 MATLAB 세션으로 분담됩니다.

    • 루프 반복이 하나의 MATLAB 워커에서 동시에 실행 중인 또다른 워커의 집합('Pool'parfor)으로 분산되므로 하나의 워커로만 실행하는 것보다 루프가 더 빨리 실행될 수 있습니다.

  6. 작업이 완료되면 다음과 같이 작업 공간에서 영구히 작업 데이터를 삭제하고 이에 대한 참조를 제거합니다.

    delete(job)
    clear job

현재 폴더 브라우저에서 스크립트를 일괄 처리 작업으로 실행하기

현재 폴더 브라우저에서 스크립트 파일의 폴더로 이동한 후, 스크립트 파일을 마우스 오른쪽 버튼으로 클릭하고 일괄 처리 작업으로 스크립트 실행을 선택하여 MATLAB 스크립트를 일괄 처리 작업으로 실행할 수 있습니다. 일괄 처리 작업은 디폴트 클러스터 프로파일로 식별되는 클러스터에서 실행됩니다. 다음 그림은 스크립트 파일 script1.m을 실행하는 메뉴 옵션을 보여줍니다.

Context menu that appears after you right-click a MATLAB script in the Current Folder browser. The context menu shows the option to Run Script as Batch Job.

폴더 브라우저에서 스크립트를 일괄 처리로 실행하면 클러스터에서 단 하나의 워커만 사용합니다. 따라서 스크립트에 parfor 루프 또는 spmd 블록이 포함되어 있는 경우에도 클러스터에서 추가적으로 워커의 풀을 열지 않습니다. 이러한 코드 블록은 일괄 처리 작업에 사용되는 단일 워커에서 실행됩니다. 일괄 처리 스크립트에서 추가적인 워커의 풀을 필요로 하는 경우 병렬 풀을 사용하여 일괄 처리 작업 실행하기 항목에 설명된 대로 명령줄에서 해당 스크립트를 실행할 수 있습니다.

폴더 브라우저에서 일괄 처리 작업을 실행할 경우 작업 모니터도 열립니다. 작업 모니터는 스케줄러 대기열에 있는 작업을 추적하도록 해주는 툴입니다. 작업 모니터 및 그 기능에 대한 자세한 내용은 Job Monitor 항목을 참조하십시오.

참고 항목

관련 항목