브로드캐스트 변수
브로드캐스트 변수는 루프 변수 또는 슬라이스 변수 이외에 루프 내에서 변경되지 않는 변수입니다. parfor
루프 시작 시, MATLAB®은 모든 브로드캐스트 변수의 값을 모든 워커로 전송합니다. 이 예제에서 MATLAB은 A
와 B
의 값을 모든 워커로 전송합니다.
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