나는 당신이 인용 한 문서가 정적 인 작업 할당으로 간주되는 꽤 좋은 설명을 가지고 있다고 생각한다 : 각 작업자는 "고정 된 반복 범위를 할당 받는다". 4 명의 작업자의 경우 첫 번째 작업은 iter
1 : 250, 두 번째 작업은 iter
251 : 500, ... 또는 첫 번째 작업에는 1 : 4 : 100, 두 번째 작업에는 2 : 4 : 1000 등이 할당됩니다.
당신은 정확히 무엇을 말하지 않았지만, 당신이 묘사 한 것은 역동적 인 작업량 분배와 잘 일치합니다. 첫째, 네 명의 (예) 근로자가 각각 하나씩 iter
에서 일하고, 끝난 첫 번째 근로자는 다섯 번째, 다음에 수행되는 작업 (첫 번째 네 개 중 세 개 중 세 개가 다소 오래 걸리는 경우에도 동일 할 수 있음)은 여섯 번째 작업 등입니다. 이제 MATLAB이 루프 반복을 처리하기 위해 선택한 순번으로 20, 850 및 900의 값을 얻었을 때 각각 100 배의 시간이 걸리므로 21 번째에서 320 번째 반복이 4 명의 작업자 중 3 명에 의해 해결 될 것입니다. 20 분과 함께 바쁘다 (320에 의해, 이제는 비외 각 계산 시간의 대략 균등 분포 가정). 그러나 850 번째 반복 작업을 할당받은 작업자는 다른 작업이 # 1000을 수행 한 후에도 계속 실행되며 # 900 작업도 동일하게 실행됩니다. 실제로, 약 1100 번의 반복이 있었다면, # 900에서 작업하는 사람은 다른 사람이있을 때 대략 완료해야합니다. 당신이 방법을 찾을하지 않는 한,
너무 오래 짧은 이야기 [가정해서는 안 MATLAB은 여전히 1000 1부터 순서대로 parfor 루프의 반복을 할당합니다 암시 orginal 한 표현으로을 편집 ]
아웃 라이어를 먼저 처리해야합니다 (어떤 것들은 아웃 라이어인지 선험적으로 알아야하며, MATLAB이 이들과 함께 parfor 루프 처리를 시작하는 방법을 찾으려면 동적 워크로드 배포만으로는 사용자가 관찰 한 효과를 피할 수 없습니다).
추가 : 제 생각에는, 그러나, "루프가 완성에 가까워, 노동자가 * 아웃 라이어 계속 실행 평가 의 *가"로 다음과 같은
중 하나 이상을 의미하는 것으로 보인다 귀하의 관찰
- 아웃 라이어 든 반복 횟수의 크기 순으로, MATLAB 당신은 많은 노동자가
- 를 처리하기 시작 마지막 반복 중입니다
- 이상치의 수 (2-3) 또는 추정 귀하의 추정 그들의 계산 시간 패널티 (factor 100)가 너무 낮다.