Parallelize [] 동작의 일부 단점을 이해하려고합니다.동작 병렬화
은 내가 할 경우 :
CloseKernels[];
LaunchKernels[1]
f[n_, g_] :=
[email protected][
g[Product[Mod[i, 2], {i, 1, n/2}]
Product[Mod[i, 2], {i, n/2 + 1, n}]]];
Clear[a, b];
a = Table[f[i, Identity], {i, 100000, 1500000, 100000}];
LaunchKernels[1]
b = Table[f[i, Parallelize], {i, 100000, 1500000, 100000}];
ListLinePlot[{a, b}, PlotStyle -> {Red, Blue}]
이 결과는 하나 예상된다 CPU 사용률 :
하지만 동일 할 경우, 기능을 변경하면 평가하기 :
CloseKernels[];
LaunchKernels[1]
f[n_, g_] :=
[email protected][
g[Product[[email protected], {i, 1, n/2}]
Product[[email protected], {i, n/2 + 1, n}]]];
Clear[a, b];
a = Table[f[i, Identity], {i, 1000, 15000, 1000}];
LaunchKernels[1]
b = Table[f[i, Parallelize], {i, 1000, 15000, 1000}];
ListLinePlot[{a, b}, PlotStyle -> {Red, Blue}]
결과는 다음과 같습니다
CPU 사용률 :
나는이 문제를 이해하기 위해 병렬화 []에 대한 중요한 지식을 놓치고 생각합니다.
힌트가 있습니까?
원래 정보 페이지로 이전 물리학 자라고 했으니 축 레이블을 물어보아야합니까? 단위? 'AbsoluteTiming'을'f'에 묻는 것은 처음에는 혼란 스럽습니다. – rcollyer
@rcollyer 시간 단위는 기계에 따라 다르므로 문제에 대해 의미가 없습니다. 레이블에 관해서는 위의 코드에서 AbsoluteTime []을 반복 수에 선형 적으로 관계없는 비 차원 수로 표시하고 있습니다. BTW, 나는 결코 나는 _good_ 물리학 자라고 말하지 않았다 : D –
두 번째 그래프는 내 quadcore 랩톱과 사실상 동일한 두 개의 곡선을 가지고있다. –