22. maj 2000 - 12:30Der er
5 kommentarer og 1 løsning
Multiprocessor
Jeg har spørgsmål ang. brug af multiprocessor på PC platforme. Jeg er i besiddelse af et 3D finite element program som jeg skal udføre beregninger med. I den forbindelse vil jeg selvfølgelig have fat i den bedste maskine (læs: den maskine der hurtigst kan beregne mine problemer). Derfor har jeg tænkt på at investere i en PC med 2 processorer. Mine spørgsmål er som følger: - Hvordan fungerer det hvis et program IKKE er skrevet til at udnytte flere processorer. Vil det så automatisk (under Windows NT) blive eksekveret under brug af begge processorer? Og hvad hvis et program ER skrevet til flerprocessor brug, vil man så i det pågældende program kunne vælge hvor mange processorer det skal benytte? - Hvilke processorer er de bedste når det kommer til floating point operations? To processorer fordobler vel nok ikke FLOPS-tallet, men hvor meget kan man regne med at få ud af DUAL-processor teknologien? - Hvor finder jeg FLOPS specifikationer?
Hvis et program IKKE er skrevet til at udnytte flere processorer, så vil programmet som hovedregel ikke køre bedre ligegyldig om der er 1 eller 2 processorer i maskinen.
Hvis programmet derimod er konstrueret til at kunne eksekveres 2 gange samtidigt, f.eks. på forskellige beregninger, så vil du næsten få den dobbelte ydelse ved 2 processorer.
Med hensyn til hvilke PC processorer der er gode til floating point beregninger, så har det altid været Intel's stærke side, lige indtil AMD kom med Athlon processorerne.
Mine anbefalinger er derfor: Hvis programmet kan udnytte multiprocessorer: 2x Pentium III Hvis programmet ikke kan udnytte multiprocessorer: Den største Athlon du har råd til.
Hvordan beregner multi-processorer: I parallel, altså med begge processorer på een gang, hvor de supplerer hinanden. Eller skal man som skrevet eksekvere programmet to gange for at få glæde af det ( og det vil jeg i parantes bemærket ikke få glæde af da de jo ikke vil øge regnekraften på min simulering!)
Det afhænger jo netop af programmet! Derfor skal de skrives til det.
Jeg er ikke 100% sikker på hvordan det foregår i windows NT/2000 men jeg har arbejdet en del med Java, også på multiprocessor platforme. Man kan i Java vælge at ens program skal indeholde flere tråde. En tråd kan så eksempelvis foretage en bestemt type beregning, mens en anden tråd læser fra disk. Det kunne også tænkes at beregningen kunne opsplittes i 2 dele, som kunne køre parallelt, som hver processor så kunne udføre, og til sidst bruger den ene processor så resultaterne til at færdiggøre beregningen. Anyway, det afhænger altså af den enkelte opgave.
Jeg ved at f.eks. Quake3 som understøtter multiprocessing (men maks 2 processorer), der kører stort set hele spillet på den ene processor, og nummer 2 bliver brugt til at hjælpe med nogle tunge grafikberegninger. Eksempelvis kan processor 1 beregne ting som, spiller positioner, projektilers baner osv. mens processor 2 laver matrice og vektor beregner på baggrundsgrafik.
Hele kernen i problemet er at programmet skal være skrevet til multiprocessing, og det i sig selv er en hel disciplin inden for programmering.
Det med at eksekvere programmet 2 gange, er som du selv skriver ikke altid optimalt, og slet ikke i din simulering.
Men jeg tog det bare med som eksempel. Jeg har en gang arbejdet med noget billedbehandling, hvor vi splittede billederne op i 2 halvdele, og lavede transformationer på hver halvdel for sig. På en multiprocessorplatform opnåede vi derfor dobbelt hastighed.
Det er et nemt "trick" hvis opgaven egner sig til det, men det gør den jo ikke altid :(
Ideen med multiprocessor platforme er jo naturligvis at programmerne skal skrives til det, sådan at processorerne arbejder sammen om at løse en given opgave.
Processorhastighed er jo ikke alt ! ! Husk på på at de beregnede data skal lagres i rammen og muligvis på HD, så det er ikke sikkert at CPUen er flaskehalsen. Muligvis CPU med stor L1 cache og indbygget matematisk coprocesser vil arbejde hurtigere, da de beregnede data kan "vente" der.
Hvis der er nogen der er interesserede, så kan BeOS selv dele programmer ud over flere processorer.. så længe programmet bare er multithreadet..
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.