"Klaus Petersen" <spektual@hotmail.com> writes:
> Hej igen.
>
> Ny "drillepind"
>
> Nu skal jeg nok lade være med at forklare det i æbler :D
>
> En arbejdsopgave's størrelse er defineret ved et antal blokke, A. (A = 344)
> Arbejdsopgaven skal fordeles mellem 2 computere på sådan en måde, at de
> tager det samme antal tidsenheder om hver deres del af opgaven.
>
> Computer 1 tager 615247 tidsenheder pr. blok
> Computer 2 tager 1065209 tidsenheder pr. blok
>
> (der går i øvrigt 3579545 tidsenheder på et sekundt)
>
> Hvor mange blokke skal computer 1 og computer 2 hver især have, således
> at de tager lige mange tidsenheder om deres opgave ?
Du vil gerne have den totale tid for den en til at være det samme som
for den anden. Den totale tid er tid per blok gange antallet af blokke.
Matematisk
t1 = t2
t1 = 615247 * A1
t2 = 1065209 * A2
A1 + A2 = A
Rumsterer man lidt rundt med det får man
A2 = t2/1065209
A1 = t1/615247
= t2/615247
= t2/1065209 * 1065209/615247
= A2 * 1065209/615247
i.e. A2 = A1 * 615247/1065209
og derfor
A1 + A1 * 615247/1065209 = A
Derfor er formlen for A1 givet ved hastighederne og A:
A1 = A / (1 + 615247/1065209) = A * 1065209 / (615247 + 1065209)
Det vil sige hvis den ene processor klarer en blok på tiden h1 og den
anden på tiden h2 så skal den første have en andel på (h2/(h1+h2)) af
opgaverne og den anden (h1/(h1+h2)).
Hvis man har mere end to processorer, som tager tid h1, h2,... , hn,
så skal man bruge den lidt mere generelle formel:
A1 = A * (1/h1)/((1/h1)+(1/h2)+...+(1/hn))
Det man regner med er altså ikke hvor lang tid det tager per blok (h,
målt i f.eks. sekunder), men istedet hvor mange blokke den kan klare
per sekund (1/h). En processor der kan klare tre gange så mange blokke
per tidsenhed skal naturligvis have tre gange så mange blokke at gøre
godt med.
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
'Faith without judgment merely degrades the spirit divine.'