handdator

Visa fullständig version : Bygga en superdator


kalle_banan
2010-03-27, 15:20
Hur bär man sig åt om man vill bygga ett datormonster med flera moderkort sammankopplade för att skapa en enda stor processor? Det finns t.ex datorer baserade på grafikkort istället för vanliga processorer, om jag vill bygga en sån, hur gör jag? Och jag såg att man kunde koppla samman vanliga moderkort också, hur gör man då? Kostnaden kvittar, jag är intresserad av hur man gör helt enkelt.

BobaFett
2010-03-27, 15:23
Hur bär man sig åt om man vill bygga ett datormonster med flera moderkort sammankopplade för att skapa en enda stor processor? Det finns t.ex datorer baserade på grafikkort istället för vanliga processorer, om jag vill bygga en sån, hur gör jag? Och jag såg att man kunde koppla samman vanliga moderkort också, hur gör man då? Kostnaden kvittar, jag är intresserad av hur man gör helt enkelt.

Tror inte att du ska ge dig på det om du inte är påläst om det.

kalle_banan
2010-03-27, 15:26
Tror inte att du ska ge dig på det om du inte är påläst om det.

K, har du något länktips så att man kan lära sig?

svennebanan
2010-03-27, 15:28
Hur bär man sig åt om man vill bygga ett datormonster med flera moderkort sammankopplade för att skapa en enda stor processor? Det finns t.ex datorer baserade på grafikkort istället för vanliga processorer, om jag vill bygga en sån, hur gör jag? Och jag såg att man kunde koppla samman vanliga moderkort också, hur gör man då? Kostnaden kvittar, jag är intresserad av hur man gör helt enkelt.

Jag tror också det är överkurs. I alla fall för mig. GPU:erna är datadrivna SIMD(single instruction multiple data) maskiner och lämpar sig just därför till uppgifter där man gör samma instruktion på massor av data i en slags pipe line.

Vad skall du ha maskinen till?

svennebanan
2010-03-27, 15:31
http://www8.cs.umu.se/kurser/5DV051/VT10/lectures/6%20rendering%20pipeline.pdf

Står kanske inte direkt hur man bygger dom(superdatorer) men lite allmänt om GPU:erna.

Trance
2010-03-27, 15:32
Du kan säkert klicka dig vidare från dessa länkar

http://en.wikipedia.org/wiki/Cluster_(computing)
http://en.wikipedia.org/wiki/Grid_computing
http://en.wikipedia.org/wiki/CUDA

kalle_banan
2010-03-27, 16:03
Tack för tipsen.

tsp
2010-03-27, 16:37
http://www.scl.ameslab.gov/Projects/parallel_computing/cluster_design.html

Snobbe
2010-03-27, 16:39
Sätt ihop typ 14 p3or så kanske man kan spela cs på den.

SirFearstrike
2010-03-27, 18:46
Har ju ingen betydelse då absolut ingenting skulle fungera på den så länge du inte kan koda egna drivrutiner, vilket är ytterst osannolikt.

MasterChief
2010-03-27, 19:24
Gnu/Linux + 233 Mhz = Super Computer

MeekGeek
2010-03-27, 20:22
Hur bär man sig åt om man vill bygga ett datormonster med flera moderkort sammankopplade för att skapa en enda stor processor? Det finns t.ex datorer baserade på grafikkort istället för vanliga processorer, om jag vill bygga en sån, hur gör jag? Och jag såg att man kunde koppla samman vanliga moderkort också, hur gör man då? Kostnaden kvittar, jag är intresserad av hur man gör helt enkelt.

Vad ska du ha den till?

Datorer skalar idag via parallellism. Det betyder att vad du nu ska göra med din superdator, måste det gå att lösa med parallella algoritmer. På din fråga, låter det inte direkt som du är så insatt i det hela. Du kan alltså inte "supra" en PC och tro Doom går 10ggr snabbare. ;-)

kalle_banan
2010-03-27, 20:24
Jag ska inte bygga nån dator, jag är bara nyfiken på hur man gör.

dt06mj2
2010-03-27, 20:30
Vad ska du ha den till?

Datorer skalar idag via parallellism. Det betyder att vad du nu ska göra med din superdator, måste det gå att lösa med parallella algoritmer. På din fråga, låter det inte direkt som du är så insatt i det hela. Du kan alltså inte "supra" en PC och tro Doom går 10ggr snabbare. ;-)

Är man skillad kanske man får det att funka iallafall. ^^

http://www.youtube.com/watch?v=cqB01Cp_wPM

MeekGeek
2010-03-27, 20:35
Jag ska inte bygga nån dator, jag är bara nyfiken på hur man gör.

Ah, ok, då är jag med.

Konventionella "superdatorer" idag är inget annat än kluster av helt vanliga datorer man kopplar samman med någon form av kommunikationsbuss ("snabbt nätverk"), och det är egentligen inget speciellt magiskt med det. Dvs en superdator = 1000 st PC. Trist och väldigt osexigt.

Betydligt bättre utdelning av sina pengar får man om man i stället tar de nya grafikkorten (GPU;er) som finns idag, och stoppar i en eller flera sådana i sin PC och får en så kallad "desktop super computer". Man kan då ofta accelerera sina uträkningar hundrafallt relativt en konventionell dator, men det kräver som sagt att problemet är av sådan art att det går att beräkna parallellt. Tittar man t ex på Nvidias nya GPU som lanserades igår (GTX 480) så ligger den på runt 1500 gflops (miljarder flyttalsoperationer per sekund), emedan en vanlig PC kanske man kan skrämma upp i några tiotal.

Men för att ha nytta av en superdator, måste man ha specialskriven kod för det aktuella problemet man vill lösa. De är inte generella alltså.

Snobbe
2010-03-28, 08:25
Är man skillad kanske man får det att funka iallafall. ^^

http://www.youtube.com/watch?v=cqB01Cp_wPM

24 skärmar och 24 datorer är inte samma sak.

MeekGeek
2010-03-28, 10:07
Jag tror också det är överkurs. I alla fall för mig. GPU:erna är datadrivna SIMD(single instruction multiple data) maskiner och lämpar sig just därför till uppgifter där man gör samma instruktion på massor av data i en slags pipe line.


Nej, att påstå GPUerna är SIMD är fel. Om vi pratar Nvidias GPUer och CUDA nu, handlar det om på hårdvarunivå om en hel hög med SIMD per GPU, vilket sammantaget alltså inte alls ger en SIMD utan snarare en MIMD av SIMD, dvs en tvånivås-hierarki. Du han alltså på hårdvarunivå ha parallell exekvering av flera olika programflöden samtidigt, vilket en SIMD inte kan definitionsmässigt.

På mjukvarunivå sker än mer maskering av hårdvaruarkitekturen, och du kan helt transparent ha databeroende programflödesändringar till och med inom varje "SIMD" ("multiprocessor" på CUDAiska), vilket schedulern kommer att lösa åt dig. På denna nivå ter sig det som en MIMD och man har separata trådar med separata programflöden för varje enskild datamanipulativ operation, precis som en konventionell CPU. Ja, bortsett från att man kanske har en miljon trådar i stället för en eller ett par stycken.

Yes
2010-03-28, 16:14
Tittar man t ex på Nvidias nya GPU som lanserades igår (GTX 480) så ligger den på runt 1500 gflops (miljarder flyttalsoperationer per sekund), emedan en vanlig PC kanske man kan skrämma upp i några tiotal.

Innan man bygger sin superdator bör man dock tänka på att dessa siffror för GPU;erna endast är teoretiska. Det kräver ju att GPU:n får ett tillräckligt stort dataflöde och att en stor del av det kan köras parallellt. Dessutom brukar siffror vara när de kör enkel precision, vilket väl är runt 10ggr snabbare än dubbel precision.

Men visst finns det en enorm prastanda att utnyttja i GPU;erna, om man lyckas skapa applikationer som utnyttjar det.

Kommer bli jäkligt spänande att se vart utvecklingen leder, när GPU-tillverkarna går mot att bli mer generella och CPU-tillverkarna vill behandla allt mer data parallellt.

svennebanan
2010-03-28, 16:17
Nej, att påstå GPUerna är SIMD är fel. Om vi pratar Nvidias GPUer och CUDA nu, handlar det om på hårdvarunivå om en hel hög med SIMD per GPU, vilket sammantaget alltså inte alls ger en SIMD utan snarare en MIMD av SIMD, dvs en tvånivås-hierarki. Du han alltså på hårdvarunivå ha parallell exekvering av flera olika programflöden samtidigt, vilket en SIMD inte kan definitionsmässigt.

På mjukvarunivå sker än mer maskering av hårdvaruarkitekturen, och du kan helt transparent ha databeroende programflödesändringar till och med inom varje "SIMD" ("multiprocessor" på CUDAiska), vilket schedulern kommer att lösa åt dig. På denna nivå ter sig det som en MIMD och man har separata trådar med separata programflöden för varje enskild datamanipulativ operation, precis som en konventionell CPU. Ja, bortsett från att man kanske har en miljon trådar i stället för en eller ett par stycken.
Hehehe ok, det jag kan om det hela är ungefär slidsen jag länkde till :D

dt06mj2
2010-03-28, 16:23
24 skärmar och 24 datorer är inte samma sak.

Du har nog inte riktigt förstått vad de har gjort bara.

MeekGeek
2010-03-28, 16:24
Innan man bygger sin superdator bör man dock tänka på att dessa siffror för GPU;erna endast är teoretiska. Det kräver ju att GPU:n får ett tillräckligt stort dataflöde och att en stor del av det kan köras parallellt. Dessutom brukar siffror vara när de kör enkel precision, vilket väl är runt 10ggr snabbare än dubbel precision.

Men visst finns det en enorm prastanda att utnyttja i GPU;erna, om man lyckas skapa applikationer som utnyttjar det.

Kommer bli jäkligt spänande att se vart utvecklingen leder, när GPU-tillverkarna går mot att bli mer generella och CPU-tillverkarna vill behandla allt mer data parallellt.

Teoretiska? Ja? Du menar att klustersuperdatorers specifikation inte är det? Där krävs det att man lyckas klämma in sin kod i L1, vilken kanske är 128kB. :-) Naturligtvis måste man ange den teoretiska maxprestandan - vad skulle man annars ange? Ok, när jag säger accelerera med 100 gånger, då handlar det inte om teoretiska utan praktiska resultat, men det är betydligt mindre exakta angivelser.

Jag tycker det är spännande redan nu. Däremot är problemen med bristande generalitet inte kopplade till tekniken, utan de rent teoretiska svårigheterna att skala problem/program över en parallell arkitektur. Detta är tämligen oberoende om det handlar om en GPU, klustrad superdator eller bara en vanlig multi-core CPU.

Yes
2010-03-28, 17:14
Jag menar GPU-prestanda jämfört med CPU-prestanda, där det senare lättare når upp till sin teoretiska kapacitet.

Du menar väl att problemet inte är parallella beräkningar sig? För kollar vi på tekniken i själva GPU;erna så finns det massor av problem(iaf innan CUDA m.m kom). Mycket av det beror väl dock på att gpu;erna utvecklats för spel. Då menar jag saker som beräkningsfel, ingen standard för flyttal(nu har de väl iof enats om IEEE?), och att man varit tvungen att mappa allt till vertex-data. Fast det mesta har man väl löst nu och jag gissar att allt mer beräkningar kommer börja göras med gpu;er de närmaste åren.

Jag tycker det kommer bli mer spännande när det dyker upp applikationer man själv kan ha nytta av.

MeekGeek
2010-03-28, 17:42
Mja, jag påstår även en konventionell CPU har prestanda du inte når upp till i praktiken heller, precis på motsvarande sätt som angiven GPU-prestanda. Du måste ha koden i cachen, får straff för varje gång du måste accessa primärminnet etc. Största skillnaden att hacka för en GPU är att där har man kontroll på alla dataaccesser och kan/måste styra upp dem för prestanda, emedan på en CPU sköts cachningen automagiskt, på gott och ont.

Nej, jag menar inte teknikaliteter som gör det knepigt att använda GPUerna. De var nog mer vanliga när man var tvungen att använda dem via grafik-API;erna i stället för att som idag kunna gå via därför avsedda API;er typ CUDA. Jag menar i stället att svårigheten är att göra sitt program så att det kan exekvera parallellt. Det är inget som kompilatorn kan sköta, utan måste utföras av programmeraren explicit, och dels är det rent tekniskt svårt att skriva programkod som kan exekvera i flera instanser samtidigt med allt vad det kan innebära vad gäller samtidig access till samma data, deadlock och så vidare. Dels är många av de algoritmer vi använder inte möjliga att exekvera parallellt alls, då de helt enkelt är beroende av tidigare framräknat data, och blir i och med det endast möjliga att implementera sekvensiellt.

Men visst kommer det saker som underlättar även på den fronten. Det är ett av de viktigaste problemen datavetenskapen har att lösa i dag, då vi har nått mycket av en gräns vad gäller att skala via snabbhet, utan skalar via antal cores. Tyvärr har det inte hänt så mycket de senaste tio åren - vi har persondatorer med 8 cores, där 7 av dem i princip idlar 100% av tiden ...

Själv hoppas jag att maskininlärning kommer bli en väg kring det här lilla dilemmat. Det finns gott om metoder att koda en självlärande dator parallellt implementerat, och sedan tränar man upp denna på att lösa de problemen man själv inte är intresserad av att parallellisera manuellt. Man kan naturligtvis även tänka sig andra abstraktionslager som döljer den parallella hårdvaran, men jag tycker lärande datorer är ett tilltalande koncept.

Nitrometan
2010-03-29, 09:55
Gnu/Linux + 233 Mhz = Super Computer

Det beror på vem du frågar! :thumbup: