Main Content

브로드캐스트 변수

브로드캐스트 변수는 루프 변수 또는 슬라이스 변수 이외에 루프 내에서 변경되지 않는 변수입니다. parfor 루프 시작 시, MATLAB®은 모든 브로드캐스트 변수의 값을 모든 워커로 전송합니다. 이 예제에서 MATLAB은 AB의 값을 모든 워커로 전송합니다.

A = 5;
B = 10;
C = 0;
parfor i = 1:10
    if i == A
        C = C + B;
    end
end

성능 고려 사항

브로드캐스트 변수가 크거나 많으면 클라이언트와 관련 워커 간에 상당한 통신이 발생하여 오버헤드가 증가할 수 있습니다. 브로드캐스트 변수로 인한 통신 오버헤드가 큰 경우에는 루프 내에 임시 변수를 대신 만들어 할당하는 것을 고려해 보십시오. 반대로, 임시 변수를 만들어 할당하는 것으로 인한 계산 오버헤드가 큰 경우에는 대신 브로드캐스트 변수를 사용해 보십시오.

자세한 내용은 임시 변수parfor를 언제 사용할지 결정하기 항목을 참조하십시오.

참고

여러 parfor 루프가 동일한 상수 데이터 세트에 액세스해야 하는 경우, 데이터를 각 parfor 루프의 시작 시 워커에 전송하는 것이 아니라 워커에 한 번만 전송하는 parallel.pool.Constant를 대신 사용하여 코드의 성능을 개선할 수 있습니다.

코드의 성능을 개선하기 위해 불필요한 브로드캐스트 변수의 수를 줄일 수 있는지 살펴보십시오. 예를 들어, 다음 코드에는 브로드캐스트 변수 M이 포함되어 있습니다.

M = magic(10);
parfor i = 1:numel(M)
    out(i) = M(i)./numel(M);
end

parfor 루프가 수행되기 전에 numel(M)을 계산하도록 이 코드를 다시 작성할 수 있습니다. parfor 루프에서 numel(M)을 제거하면 MATLAB은 M의 모든 요소를 각 워커에 전송하지 못하게 됩니다. 대신 MATLAB은 N의 값과 슬라이스 변수 M의 일부를 각 워커에 전송합니다.

M = magic(10);
N = numel(M);
parfor i = 1:N
    out(i) = M(i)./N;
end

참고 항목

관련 항목