이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

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

일괄 처리 작업 실행하기

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')

  5. batch 명령은 MATLAB을 차단하지 않으므로 작업 결과를 검색하고 볼 수 있으려면 작업이 완료되기를 기다려야 합니다.

    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 세션이 연관되어 있습니다.

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

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

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

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

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

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

    delete(job)
    clear job

참고 항목