Förslag på program som kör på tusentals CPU-kärnor?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jul 2007

Förslag på program som kör på tusentals CPU-kärnor?

Om det var lika enkelt att skriva ett program som kör i ett distribuerat system som att skriva ett program som kör lokalt, vad skulle ni hitta på för program då?

Med ett distribuerat system så tänker jag på en (stor) samling datorer som var och en har CPU (flera kärnor), RAM och disk, och som är anslutna med ett nätverk, och ett program som kör på det distribuerade systemet kan använda dessa resurser som att det vore en enda stor dator.

Ett förslag är ett massivt multispelar-spel som har många AI-spelare och som använder tusentals CPU-kärnor för att köra AI och för att simulera fysiken i spelet.

Ett exempel på ett program som används idag är Googles sökmotor som kör på tusentals datorer.

Trädvy Permalänk
Moderator
Plats
Linköping
Registrerad
Okt 2006

Tog bort ett inlägg som inte bidrog med något.

Mvh
Moderator Shimonu

Har du åsikter om moderering, frågor eller något annat kan du kontakta mig via shimonu@sweclockers.com

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2004
Skrivet av VirtualIntent:

Ett exempel på ett program som används idag är Googles sökmotor som kör på tusentals datorer.

2010 estimerades det att Google kör på nästan en miljon servrar. Nu har dom ju iof mer tjänster än sin sökmotor.

Vad jag skulle göra om det vare lika lätt att programmera ett lokalt system som en distribuerat vore nog en databas utan de problem som finns i dagsläget för att hålla ACID (https://en.wikipedia.org/wiki/ACID) samt att hålla det snabbt.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jul 2007
Skrivet av iXam:

Vad jag skulle göra om det vare lika lätt att programmera ett lokalt system som en distribuerat vore nog en databas utan de problem som finns i dagsläget för att hålla ACID (https://en.wikipedia.org/wiki/ACID) samt att hålla det snabbt.

Men antag att det redan finns en sådan databas då, vad skulle du utveckla för program som använder sig av databasen?

Trädvy Permalänk
Medlem
Registrerad
Maj 2014

Det stora, som pratas om i många många är väl att ta bort datorn eller din konsol och bara erbjuda tjänster över internet.

Som exempel skulle väl Microsoft, som har pengar kunna utveckla en ny plattform där du bara pluggar in en handkontroll via usb till din Smart-TV och laddar ner Xbox konsol appen, sedan så streamas bara allt material till din tv via deras datacenter i Sverige. Så all CPU och GPU kraft finns i deras Datacenter, de behöver inte utveckla och sälja dessa produkter i butiker.

Trädvy Permalänk
Medlem
Plats
Sthlm
Registrerad
Apr 2004

Vädersimuleringar.
Det vore ju trevligt att kunna lita på väderleksrapporten på morgonen

Trädvy Permalänk
Medlem
Plats
Tierp
Registrerad
Dec 2014
Skrivet av VexedRelic:

Det stora, som pratas om i många många är väl att ta bort datorn eller din konsol och bara erbjuda tjänster över internet.

Som exempel skulle väl Microsoft, som har pengar kunna utveckla en ny plattform där du bara pluggar in en handkontroll via usb till din Smart-TV och laddar ner Xbox konsol appen, sedan så streamas bara allt material till din tv via deras datacenter i Sverige. Så all CPU och GPU kraft finns i deras Datacenter, de behöver inte utveckla och sälja dessa produkter i butiker.

On topic: där håller jag med dig även om man nog bör hitta något annat sätt att koppla handkontrollerna än usb, man blir så begränsad i räckvidd då.

Off topic: mitt tidigare inlägg som togs bort syftade på en känd del av Liftarens guide till galaxen där dom matar in all världens information i en liknande dator för att söka meningen med livet men det enda dom får till svar är siffran 42.

Citera mig gärna så jag hittar tillbaka :-)

| CPU: I5 4670K | MB: Gigabyte Z97MX-Gaming 5 | RAM: Corsair 16GB VengeanceLP | GPU: NA | PSU: Corsair AX760i | Cpukylare: Noctua NH-L12 | Chassifläkt: Noctua NF-S12B | Chassi: Fractal Design Node 605 | SSD: Kingspec SSD M.2 256GB

Trädvy Permalänk
Hjälpsam
Plats
Luleå
Registrerad
Mar 2004

Rendera extremt komplexa 3d animationer, förhållandevis lätt att distribuera frames och delar av frames till enskilda enheter som sedan sammanställs centralt hos en "task master".

Nackdelen att köra saker som MMO AI och liknande är latancy och att alla individer är beroende av varandra på deras reaktioner och positioner så blir enormt mycket overhead och mycket latancy mellan. Optimalt för distribuerad beräkning är när du kan ge delar av uppgifter till olika enheter och sedan samla in och ge nya batchar.

Folding@home och SETI@home är bra exempel på batchning av workload.

Allt jag säger/skriver här är mina egna åsikter och är inte relaterade till någon organisation eller arbetsgivare.

Jag är en Professionell Nörd - Mina unboxing och produkttester (Youtube)
Om du mot förmodan vill lyssna på mig - Galleri min 800D med 570 Phantom SLI

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jul 2007

Tack för era svar!

Skrivet av Fluf:

Nackdelen att köra saker som MMO AI och liknande är latancy och att alla individer är beroende av varandra på deras reaktioner och positioner så blir enormt mycket overhead och mycket latancy mellan. Optimalt för distribuerad beräkning är när du kan ge delar av uppgifter till olika enheter och sedan samla in och ge nya batchar.

Så min fråga (som jag inser inte var så tydligt ställd) är alltså inte vad som är optimalt för distribuerade beräkningar, utan att ifall det var lika enkelt att skriva ett distribuerat program som ett lokalt program, vad skulle du i så fall vilja utveckla för program som använder många processorkärnor (och andra resurser som minne och disk). Underförstått så antar jag att det finns program som du/ni skulle vilja utveckla men att det inte är aktuellt idag eftersom det är svårt/krångligt att skriva distribuerade program.

Ett spel med kraftfull AI är ett sånt exempel tänker jag, men å andra sidan så finns det väl många andra anledningar utöver att det skulle köra distribuerat som gör att det är svårt att utveckla. Men det kanske finns andra typer av program som inte är speciellt svåra att skriva för att köra lokalt, men där problemet snarare ligger i att köra det distribuerat.

Trädvy Permalänk
Medlem
Registrerad
Feb 2015

Det stora problemet är inte att skriva program som går att köra distribuerade. Det är lite krångligare än att skriva vanliga sekventiella program, men inte så väldigt mycket svårare.

Nej, det svåra är att göra program som faktiskt kan dra nytta av mer än ett fåtal trådar.

Vissa problem, som brukar kallas "embarrasingly parallell", är enkla att sprida ut på godtyckligt antal processorer och få en prestandavinst som är näst intill linjär med antalet processorer. Raytracing är ett klassiskt exempel på ett sådant problem.

Den stora merparten av problem/program är däremot svåra att få att utnyttja en massa distribuerade resurser på ett effektivt sätt - och i de flesta fall finns det ingen som vet ens teoretiskt hur man kan göra det.

Om man nu rent hypotetiskt antar att det var lätt att parellellisera program, vilka program skulle man vilja göra det med? Svaret är i princip detsamma som det på frågan "Om du kunde få en CPU som var tio gånger snabbare än den du har, vilka program skulle du vilja ha den till?", nämligen: ALLA program som har behov av mer CPU-kraft - vilket är merparten av dem.

Trädvy Permalänk
Medlem
Registrerad
Jul 2011

Jag kanske missförstår frågan, men jag skulle nog köra typ allt på det viset om det var enkelt.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jul 2007
Skrivet av Erik_T:

Nej, det svåra är att göra program som faktiskt kan dra nytta av mer än ett fåtal trådar.

Vissa problem, som brukar kallas "embarrasingly parallell", är enkla att sprida ut på godtyckligt antal processorer och få en prestandavinst som är näst intill linjär med antalet processorer. Raytracing är ett klassiskt exempel på ett sådant problem.

Den stora merparten av problem/program är däremot svåra att få att utnyttja en massa distribuerade resurser på ett effektivt sätt - och i de flesta fall finns det ingen som vet ens teoretiskt hur man kan göra det.

Jag håller med om ditt resonemang. Men anta att det finns ett antal problem som ligger någonstans mellan "pinsamt parallella" och "inte alls parallella".

Skrivet av Erik_T:

Om man nu rent hypotetiskt antar att det var lätt att parellellisera program, vilka program skulle man vilja göra det med? Svaret är i princip detsamma som det på frågan "Om du kunde få en CPU som var tio gånger snabbare än den du har, vilka program skulle du vilja ha den till?", nämligen: ALLA program som har behov av mer CPU-kraft - vilket är merparten av dem.

Skrivet av lorgix:

Jag kanske missförstår frågan, men jag skulle nog köra typ allt på det viset om det var enkelt.

Frågan är otydligt formulerad, ursäkta för detta.

Men är det verkligen alla program som behöver mera datorresurser? När jag har funderat så kommer jag på ganska många program som inte skulle ha så stor nytta av fler kärnor, så som mejlprogrammet eller nått enkelt spel som sudoku. Det finns en hel del program inom "Big Data-området" som kan använda många kärnor, men denna typ av tillämpning känns lite oinspirerande tycker jag. Jag tänker mig att det borde finnas lite roligare program som man kan köra på sin fritid som faktiskt skulle ha nytta av fler CPU-kärnor än vad som sitter i en enda dator idag.

Jag tänker på när Amigan kom så var den klart kraftfullare än de andra datorerna som fanns, och då utvecklades det program som inte hade gått att göra tidigare. Det fanns en demo-scen där man försökte utnyttja hårdvarans kapacitet maximalt. Jag funderar på vilka program skulle kunna utvecklas om man har en (distribuerad) dator med väldigt många kärnor. Frågan är som sagt väldigt otydlig, så peka gärna ut på vilka sätt jag tänker "fel"!

Trädvy Permalänk
Medlem
Registrerad
Feb 2015
Skrivet av VirtualIntent:

Jag håller med om ditt resonemang. Men anta att det finns ett antal problem som ligger någonstans mellan "pinsamt parallella" och "inte alls parallella".

Frågan är otydligt formulerad, ursäkta för detta.

Men är det verkligen alla program som behöver mera datorresurser? När jag har funderat så kommer jag på ganska många program som inte skulle ha så stor nytta av fler kärnor, så som mejlprogrammet eller nått enkelt spel som sudoku. Det finns en hel del program inom "Big Data-området" som kan använda många kärnor, men denna typ av tillämpning känns lite oinspirerande tycker jag. Jag tänker mig att det borde finnas lite roligare program som man kan köra på sin fritid som faktiskt skulle ha nytta av fler CPU-kärnor än vad som sitter i en enda dator idag.

Jag tänker på när Amigan kom så var den klart kraftfullare än de andra datorerna som fanns, och då utvecklades det program som inte hade gått att göra tidigare. Det fanns en demo-scen där man försökte utnyttja hårdvarans kapacitet maximalt. Jag funderar på vilka program skulle kunna utvecklas om man har en (distribuerad) dator med väldigt många kärnor. Frågan är som sagt väldigt otydlig, så peka gärna ut på vilka sätt jag tänker "fel"!

Det finns en massvis program/problem som ligger mellan "pinsamt parallella" och "inte alls parallella". Det var mest dem jag åsyftade. Problemet med merparten av dem är att medan det oftast går hyfsat att dela upp dem på ett fåtal (4-5) trådar/kärnor så är det svårt att sprida ut dem på fler på ett effektivt sätt - så att man inte förlorar mer prestanda på den extra kommunikation som behövs mellan trådarna än man vinner av de extra kärnorna.

(Det finns en anledning till att få persondatorer som som säljs idag har fler än fyra kärnor trots att det finns CPUer med fler - få program har nytta av fler kärnor än så.)

Det finns en mängder med program som skulle kunna använda mer CPU-kraft om det fanns, men inga som mer specifikt kräver en rent distribuerad modell.

Den enda anledningen till att använda distribuerade system alls är att vi inte kan bygga tillräckligt kraftfulla enkel-kärniga system.

Frågan "Om det var enkelt att skriva program som effektivt utnyttjar system med tusentals kärnor, vad skulle man ha ett sådant system till?" har exakt samma svar som "Om man hade ett enkel-kärnigt system som var tusentals gånger snabbare än nuvarande system, vad skulle man ha ett sådant system till?"

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2005

Allt som idag görs med hjälp av en GPU skulle ju istället kunna köras på en CPU med miljoner kärnor. De flesta problem som kräver parallella trådar löses ju med hjälp av grafikkort (CUDA et al).

Tror inte det finns något man idag inte kan göra för man inte har en miljon CPU-kärnor - Då använder man ju bara en GPU istället som utför jobbet utmärkt. - Sen som någon tidigare påpekat skulle ju samtliga program som existerar må bra av att kunna utnyttja fler kärnor samtidigt.

Någonting som hade varit helt magnifikt hade ju varit om man hade en form av lastbalanserare som löste det automatiskt - Man skickar en hel hög med jobb till balanseraren, som portionerar det till X trådar/processorer/kärnor och den hanterar också svaret och kön. - Då skulle man inte längre ha svårt att skriva program som utnyttjar parallella trådar, utan det skulle skötas automatiskt - Alla program på jorden skulle bli otroligt mycket snabbare!

Intel 6700K | 2x Asus 980 Ti Strix SLI | Asus Maximus Hero VIII | Phanteks Enthoo Primo | Corsair HX 1000w | Eyefinity 3x Dell u2312hm
Samsung Evo 850 500GB | 2x Intel 320 240GB SSD | 3 x Mekanisk HDD

Trädvy Permalänk
Medlem
Registrerad
Maj 2014
Skrivet av FlashTec:

On topic: där håller jag med dig även om man nog bör hitta något annat sätt att koppla handkontrollerna än usb, man blir så begränsad i räckvidd då.

Vore rätt så enkelt att köra en typ av trådlös brygga via USB som handkontrollen skickar signaler till.

Annars vad gäller tråden så tror jag i vissa fall att det kan bli problem med CPU kopplat i ett nätverk för du kommer ha en latens på millisekunder där instruktioner som utförs av en cpu kan beräknas ned till nano sekunder. Så du kommer troligtvis få en interrupt delay för nätverks lagret inte är lika snabbt. Fast det beror helt på vad det är för ide du vill skapa eller utföra.

Trädvy Permalänk
Medlem
Plats
Tierp
Registrerad
Dec 2014
Skrivet av VexedRelic:

Vore rätt så enkelt att köra en typ av trådlös brygga via USB som handkontrollen skickar signaler till.

Annars vad gäller tråden så tror jag i vissa fall att det kan bli problem med CPU kopplat i ett nätverk för du kommer ha en latens på millisekunder där instruktioner som utförs av en cpu kan beräknas ned till nano sekunder. Så du kommer troligtvis få en interrupt delay för nätverks lagret inte är lika snabbt. Fast det beror helt på vad det är för ide du vill skapa eller utföra.

Jo tänkte också på det där med latens efter att jag skrev inlägget. Känns som det blir rätt jobbigt med många typer av spel, ta bara någon form av racing spel där man dundrar fram i 300 knyck mot en hårnålskurva, snacka om att det inte får lagga i det läget för då har man ju lyckats lämna landet innan man inser att det precis gick åt pipskjutsingen

Vore nog bättre att utnyttja tekniken för att räkna ut något viktigt typ hur man får religion och politik att fungera tillsammans eller hur man får längre räckvidd på elbilar utan att köra med skarvsladd

Citera mig gärna så jag hittar tillbaka :-)

| CPU: I5 4670K | MB: Gigabyte Z97MX-Gaming 5 | RAM: Corsair 16GB VengeanceLP | GPU: NA | PSU: Corsair AX760i | Cpukylare: Noctua NH-L12 | Chassifläkt: Noctua NF-S12B | Chassi: Fractal Design Node 605 | SSD: Kingspec SSD M.2 256GB

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jul 2007
Skrivet av Ernesto:

Någonting som hade varit helt magnifikt hade ju varit om man hade en form av lastbalanserare som löste det automatiskt - Man skickar en hel hög med jobb till balanseraren, som portionerar det till X trådar/processorer/kärnor och den hanterar också svaret och kön. - Då skulle man inte längre ha svårt att skriva program som utnyttjar parallella trådar, utan det skulle skötas automatiskt - Alla program på jorden skulle bli otroligt mycket snabbare!

Ja det låter ju lysande! Om du hade en sån lastbalanserare, vilket typ av program skulle du vilja snabba upp då först och främst?

Skrivet av VexedRelic:

Annars vad gäller tråden så tror jag i vissa fall att det kan bli problem med CPU kopplat i ett nätverk för du kommer ha en latens på millisekunder där instruktioner som utförs av en cpu kan beräknas ned till nano sekunder. Så du kommer troligtvis få en interrupt delay för nätverks lagret inte är lika snabbt.

Precis, så när man skriver programmet så behöver man dela upp programmet i delar som kan köra så mycket fristående (utan att kommunicera/synkronisera) som möjligt. Men så gör man idag också även när man skriver program med många trådar som kör på en (icke-distribuerad) processor med flera kärnor.

Skrivet av VexedRelic:

Fast det beror helt på vad det är för ide du vill skapa eller utföra.

Exakt.

Skrivet av FlashTec:

Vore nog bättre att utnyttja tekniken för att räkna ut något viktigt typ hur man får religion och politik att fungera tillsammans eller hur man får längre räckvidd på elbilar utan att köra med skarvsladd

Det låter som att vi skulle behöva programmera en stark AI som kan lösa alla problem åt oss?

Trädvy Permalänk
Medlem
Registrerad
Apr 2012

Varför inte ett spel med grafik lika bra som verkligheten.. om du har 1.000.000 eller fler processorer så borde det ju gå ?

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Dec 2010

Ett väldigt enkelt svar på frågan "Förslag på program som kör på tusentals CPU-kärnor?" skulle vara alla program som använder sig av grafikkortet. Ett grafikkort är uppbyggt av tusentals processorer.
Exempel skulle kunna vara spel (såklart) och andra program med tung grafik, men även bitcoin mining.

MODERMODEM: Asus ROG Strix Z270E Gaming | i7 7700K | Corsair Hydro H110 | Kingston HyperX Savage 32GB DDR4 RAM | Asus R9 290 OC | Crucial BX100 500GB SSD | Phanteks Enthoo EVOLV | SilverStone Strider Evolution 1200W |
NAS 40TB: 8x3TB RAIDz2 | 4x4TB RAIDz1 | ASRock C2550D4I | 32GB ECC RAM | FreeNAS |
LJUD: M-Audio BX8 D2 | ATH-M50 | Focusrite Scarlett 2i2 |

Trädvy Permalänk
Medlem
Plats
Tierp
Registrerad
Dec 2014
Skrivet av VirtualIntent:

Ja det låter ju lysande! Om du hade en sån lastbalanserare, vilket typ av program skulle du vilja snabba upp då först och främst?

Precis, så när man skriver programmet så behöver man dela upp programmet i delar som kan köra så mycket fristående (utan att kommunicera/synkronisera) som möjligt. Men så gör man idag också även när man skriver program med många trådar som kör på en (icke-distribuerad) processor med flera kärnor.

Exakt.

Det låter som att vi skulle behöva programmera en stark AI som kan lösa alla problem åt oss?

Någonting i stil med Cyberdynes skynet kanske

Bara att konstatera i såna fall att alldeles för stora datorer tillsammans med smarta AI är ingen bra idé

Citera mig gärna så jag hittar tillbaka :-)

| CPU: I5 4670K | MB: Gigabyte Z97MX-Gaming 5 | RAM: Corsair 16GB VengeanceLP | GPU: NA | PSU: Corsair AX760i | Cpukylare: Noctua NH-L12 | Chassifläkt: Noctua NF-S12B | Chassi: Fractal Design Node 605 | SSD: Kingspec SSD M.2 256GB

Trädvy Permalänk
Medlem
Plats
här..
Registrerad
Jun 2006

Alla tunga jävla java applikationer som har interna dependencies som gör att de inte kan skala ut så det enda alternativet är att köpa fetare servrar.

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jul 2007
Skrivet av Sir. Haxalot:

Alla tunga jävla java applikationer som har interna dependencies som gör att de inte kan skala ut så det enda alternativet är att köpa fetare servrar.

Kan du ge ett exempel på en sån applikation? Kan den applikationen dra nytta av att ha tillgång till fler kärnor?