/elektronik

Forskere vil 100-doble verdens hurtigste supercomputer

Amerikanske forskere forsøger at udvikle de teknologier, som skal bruges til at bygge verdens første exaflop-computer, der kan foretage 1.000.000.000.000.000.000 kommatalsoperationer hvert sekund.

Af Mads Ølholm, onsdag 05. mar 2008 kl. 16:09

Forskere fra amerikanske Institute for Advanced Architectures, der er oprettet i fællesskab af Oak Ridge og Sandia National Laboratories under det amerikanske energiministerium, er gået i gang med at udvikle designet til verdens første exaflop-computer.

En exaflop (flop, floating point operations) er det samme som en milliard milliarder kommatalsberegninger per sekund.

Til sammenligning får den hurtigste supercomputer, som i dag er under udvikling, Blue Gene/Q, en ydeevne på ti petaflop, en hundreddel af de amerikanske forskeres mål.

Problemet med at designe en exflopcomputer er ikke blot at få samlet tilstrækkeligt med processorer, men også at sørge for, at data befinder sig på det sted, hvor den enkelte processor har brug for det.

Nuværende processorer, der anvendes i supercomputere har oftest kerner, men der findes specialprocessorer med op til 64 kerner. I fremtiden kan vi forvente at se CPU'er med op mod 100 kerner. Således har Intel allerede demonstreret en prototype med 80 kerner.

»Når en supercomputer består af titusindvis af processorer vil der altid være situationer, hvor data befinder sig meget langt fra den processor, som har behov for dem. Derfor forsker vi blandt andet i, hvordan data kan flyttes meget hurtigt, så vi ikke ender med processorer, der er arbejdsløse på grund af datamangel, « siger Jeff Nichols, der leder af instituttets Oak Ridge-afdeling.

Forskerne ser blandt andet på, hvordan optisk kommunikation kan anvendes mellem de forskellige processorer samt mellem processorer og hukommelse. Desuden skal der forskes i, hvordan hukommelsen rent fysisk kan bringes tættere på processoren. Dette kan ske ved enten at montere hukommelsen i et separat lag oven på processoren eller ved at indlejre den i selv processoren.

Der vil også blive forsket i, hvordan der kan skrives mere effektiv software, så de mange processorkerner kan udnyttes optimalt.

Til udviklingen er der i år afsat knap 36 millioner kroner.



06. mar 2008 kl 11:47

Torben Frandsen

FLOPS

En mindre detalje:

Det hedder ikke en FLOP men en FLOPS. Det står for FLoating point Operations Per Second. Undertiden ser man også betegnelsen FLOP/s.


06. mar 2008 kl 15:42

avatar

Karl Kaas Laursen

Prefix

Vi ingeniører er ikke gode til at læse lange sekvenser af cifre, men vi er til gengæld trænede i brugen af prefixer. Det vil være meget nemmere at læse, hvis der stod "1 EFLOPS" eller "1 exaflops" i overskriften i stedet for "1.000.000.000.000.000.000 kommatalsoperationer".

/K


06. mar 2008 kl 22:49

Jens Madsen

Re: Prefix

Projektet minder lidt om projektet på Århus Universitet, med at få programmer til at køre mere effektivt på parallel computere.

Forskningen i udførsel af software, kan også hjælpe til at programmerne kører hurtigt, på en CPU, med kun en enkelt CPU. Typisk, vil et normalt sekventielt program nemt automatisk kunne omskrives til tusinder af processer, ved at gøre det om til en DFG. Er den ikke umiddelbart stor nok, vil den kunne udvide sig selv, f.eks. i løkker, som udfolder indmaden (svarer til at løkken fjernes). Normalt vil løkker også søges separeret, således det der bestemmer betingelsen holdes i éen løkke, meddens beregningerne holdes i så mange andre som muligt. Der kan sættes "elastik" mellem processorerne, ved hjælp af fifoer. Så kommer så fidusen, at mappe de mange processer effektivt ned i kun éen CPU. Denne opgave minder en smule om opgaven, hvor det mappes ned i en supercomputer med mange CPU'er, men er mere simpel.

Selvom det kun er éen CPU, vil programmerne normalt kunne udføres hurtigere. Det skyldes, at computerens software omsættes til DFG'er, og dermed abstraheres fra rækkefølgen. Og samtidigt omskrives det til mange processer. Du kan komme ud for, at det i bunden, kører før det i toppen. DFG'en har kun funktionen bevaret. Ikke udførselsrækkefølge. Den er totalt glemt i en DFG.

Det viser sig så, at det i nogen tilfælde er data der ikke bruges, og derfor ting der ikke behøver at blive udført. Derfor, er også meget vigtigt, at have nogle gode strategier for hvordan processerne skal udføres i forhold til hinanden. Udføres de eksempelvis nedefra, finder man måske ud af, at det ovenstående ikke behøver at blive udført. Et eksempel kunne være en løkke, der laver masser af udregninger, skriver dem ud til skærmen, hvorefter de scroller op, og "glemmes". Dette behøver ikke at blive udregnet, og først når den sidste side kommer, behøves det at skrives ud - kan programmet udføres på en fornuftig måde bagfra, vil det i nogle tilfælde gå hurtigere.

Ovenstående prioriteringer, er utrolig vigtig, når det kun er en enkelt processor. Men naturligvis betyder det også noget, ved mange processer. Derudover, har realtids-software, og hvordan softwaren føles (brugergrænseflade) stor betydning for prioriteter, således brugergrænsefladen ikke "hakker". Det er altid til iritation når softwaren går i stå, musen hakker og ikke vil flytte sig, taster ikke reagere osv. så brugergrænsefladen har visse ligheder med realtids software. Det vigtigste er dog altid at computeren fungerer, og at den opfylder den timing den har garanteret overfor realtids dele.

Hvis vi udfører softwaren "lidt smartere", vil det få stor betydning for, hvor hurtig vi føler computeren fungerer. Antages vi har et operativsystem, kan det i princippet udføre indstruktionerne bagfra, og f.eks. vælge at vise slut skærmen med det samme. Det er jo meget stof fordel, da alt det indledende spares. Vi vil derfor komme ind i windows brugergrænsefladen øjeblikkeligt, da det måske er det første som køres (vil være et fornuftigt valg). For at opnå dette, kræves nogle ting er opfyldt - f.eks. behøver harddisken at køre, da softwaren hentes herfra. Når skrivebordet vises, har den også brug for at læse filer på harddisken, for at vise de rette ikoner. Dette vil ikke kunne undgås, men udføres måske bagfra - det "opdages", at være nødvendigt, og sker så først. Eller, det kan analyseres på forhånd, og huskes fra gang til gang, at sådan kører programmet godt.

Alt, som ikke er nødvendigt, for at vise skrivebordet, vil først udføres senere. Hvis brugeren udfører noget, vil dette have størst prioritet, for at opnå hurtig svartid, og det som ikke behøves for at opnå dette, skubbes i baggrunden. Kun, hvis computeren har ledig tid, vil den bruge tid på at initialisere printere, diskdrev, mv. Smart udførsel af programmerne af operativsystemer, er sandsynligvis fremtiden.

Idéen er samtidigt, at operativsystemet bliver den som udfører programmerne. Det er en alt for kompleks opgave til, at lægge den i hardware - og ofte skal huskes beslutningerne fra før i tiden, måske gamle kompileringer mv. for at speede hastighden op. Hvis det er i operativsystemet, kan det fungere sammen med mange processorer - af forskellig fabrikat, og de kan arbejde sammen og fungere parallelt. Det er svært, eller umuligt, at implementere i hardware, og kunne dele opgaverne ud på mange CPU'er.

Derfor, er det helt forkert, når nogle "operativsystemer" ikke behandler koden, inden den udføres. Reelt skal operativsystemet have koden overleveret af programmerne, i en form så den er i stand til at lave en effektiv oversættelse til en vilkårlig hardware struktur, og CPU. Compileren gør kun den indledende oversættelse, med det som kan gøres uden kendskab til hardware, og hvor mange og hvilke processer, der på et givet tidspunkt er tilgængelige for processoren. Operativsystemet, laver en dynamisk oversættelse, hvor der tages hensyn til øjebliksbilledet af hardwaren, og til muligheden for hardwareudvidelser, ny CPU, og anden arkitektur, eller nyt bundkort. Derfor, vil softwaren kunne køre, trods hardwaren udskiftes - endog meddens der er strøm på.

Forskningen i optimal udførsel på flere processorer, kan meget nemt føre til, at koden også udføres mere optimal på computere, med kun en enkelt CPU, eller et få antal CPU'er. Det vil altid være en fordel, at have den rette prioritering af processerne, med henblik på at eliminere ting, der ikke behøver at udføres.

I fremtiden, vil operativsystemerne kunne blive så dygtige, at de ikke kun "optimerer" i hvilken rækkefølge indstruktionerne skal udføres, evt. for at undgå at udføre noget. De vil direkte kunne løse software, og hente nye måder fra andre computere at løse programmer på. Det sidste kræver dog, at programmerne medsender "bevis", da det ellers kan opstå virus. I princippet, vil computerne kunne arbejde sammen, og udvikle metoder for at løse software. I starten, kan vi så hjælpe, ved at lægge nogle metoder ind. At opdage metoder, at løse programmer på, er i princippet en "uendelig process", og ikke noget forskning som afslutter. Det mest realistiske er, at nå op med en formel, som på et tidspunkt overlader opgaven, til at blive videreført at computerne selv.

Og så nærmer vi os faktisk intelligent liv. Hvis de "indsér" at der måske er andre computere på nettet, der fungerer ligesom de selv, og derved er i stand til at opnå kommunikation med disse, eller hvis de undersøger deres input og output, for at "opdage" om en processor de ikke kender skulle være tilsluttet, og forsøger at opnå at opdage hvordan en sådan fungerer, så vil de måske også komme til et tidspunkt, hvor de opdager os - og vor natur.

Vi må dog huske, at computerne "kun" udfører vores kode - samt arbejder på, at blive dygtigere til at kunne det, uanset dens nye opgave er et vilkårligt program. Og måske, vil de en dag "påvirke" omverdenen, for at opnå større hukommelse. De opfatter os som en computer, der analyseres, og opnår måske en måde at kommunikere.


Ny i debatten? Opret en brugerkonto

  • Seneste nyt
  • Mest læste
  • Topdebat
Populært på Facebook
 

Nyhedsbrev

Tilmeld dig vores nyhedsbrev.