Linus Torvalds sågar fler processorkärnor

Permalänk
Medlem
Skrivet av Tasorrog:

Kan man inte göra en processor jag arbetar som en enhet(som en kärna) men att själva processorn delar ut arbetet på flera kärnor av sig själv?

Nej. I en modern processor så delar varje kärna redan ut arbetet på flera parallella enheter - där varje enhet ligger inuti en kärna. Detta kallas att kärnan är superskalär. Den första Intel x86-processorn som gjorde det var Pentium.

Men hur programmets kod är strukturerad är fortfarande en flaskhals - instruktionerna ligger i ordning och måste fortfarande utföras på ett sätt så att resultatet blir som om de utfördes i ordning. Kärnor har en mängd tricks för sig för att kunna köra en sekvens av instruktioner så parallellt som möjligt, men det är ändå endast högoptimerade loopar som ens kommer i närheten att utnyttja denna parallellism fullt ut.
Numera är kärnor så pass parallella inuti att de flesta enheterna skulle ligga oanvända i vanlig körning. Det är bl.a. därför som man införde symmetrisk multitrådning (SMT) där en kärna kan köra två instruktionsströmmar (trådar, processer, program) samtidigt.

Numera är den största flaskhalsen hur trådar accessar minne, vilket de gör indirekt via cache-minne i processorn. Cache-minne är snabbt medans primärminne är långsamt, och mer kiselarea på en processor används i dag för cache än för kärnor.
Så länge som alla trådar/kärnor vill komma åt samma minne hela tiden som ryms i cachen (vilket de gör i parallelliserade algoritmer) så är allt frid och fröjd, men med flera olika program på olika kärnor som vill komma åt olika delar av primärminnet så måste det bli fler åtkomster till det, vilket slöar ner.

Det finns en avvägning att göra mellan antal kärnor/trådar, storlek på cacheminnet och hastigheten på primärminnet beroende på vilka slags program man kör.
Fler antal kärnor som kör olika program blir inte bättre utan mer cacheminne - och ju mer processorarea som används desto dyrare processor. En Xeon är dyr för att den har mycket area för att kunna ha många kärnor och mycket cache - men det vore overkill att stoppa in en sådan i en telefon eller i en kontors-PC.
Det är en sådan avvägning som Linus Torvalds gör.

Visa signatur

För övrigt anser jag att tobak ska förbjudas.

Permalänk
Avstängd
Skrivet av skog1s:

Ja vem hade inte (?) i efterhand nekat det uttalandet

Kanske för att det är svårt att "neka" någonting innan det har skett, sen är nog "neka" fel ordval, avfärdat ryktet om att han skulle ha sagt det är mer rätt.

The '640K' quote won't go away -- but did Gates really say it?

Visa signatur

The problem in society today: Smart phones, stupid people.

Permalänk
Skrivet av cardeci:

Språken är ju totalt irrelevant. Det enda de påverkar är vad som är enkelt respektive svårt att skriva, inte vad man kan göra.

Det känns som en något knepig kommentar, tycker den inte helt relaterar till den verklighet jag förstått.

Isåfall skulle väl C och C++ fungerat lika bra att parallisera som occam-π , erlang, eller t.o.m arbetet kring Google Go.

Tycker återigen att man skall vara lite försiktig med bergsäkra kommentarer, det man ser idag med ARM och Intel x64 baserade kärnor, kanske inte är det vi kommer använda om fem-tio år framåt. Saker o ting kan ändras fort i denna bransch, även om det oftast tar enorm tid.

Permalänk
Avstängd
Skrivet av kaya:

Ja lite intressant att folk fortfarande tror att han sa det dom tror att han sa, framförallt här på Swec där dom flesta borde ha tillgång till Google.

Det är bara att konstatera att det finns väldigt få som kan tänka själv, 99% är flockdjur som tänker och gör vad flockledaren säger.

100% av människor är flockdjur, men vem är flockledaren som alla blint följer?

Visa signatur

The problem in society today: Smart phones, stupid people.

Permalänk
Medlem
Skrivet av sinclairhacker:

Det känns som en något knepig kommentar, tycker den inte helt relaterar till den verklighet jag förstått.

Isåfall skulle väl C och C++ fungerat lika bra att parallisera som occam-π , erlang, eller t.o.m arbetet kring Google Go.

Tycker återigen att man skall vara lite försiktig med bergsäkra kommentarer, det man ser idag med ARM och Intel x64 baserade kärnor, kanske inte är det vi kommer använda om fem-tio år framåt. Saker o ting kan ändras fort i denna bransch, även om det oftast tar enorm tid.

Som sagt i tråden några hundra gånger: Det spelar inte någon roll hur CPU:n ser ut, ahlmdahls lag gäller ändå, även om det är en quantdator med 1e92 cores.

Hur som helst, det är lite roligt att du nämner C och C++ som om de hade varit dåliga, eftersom det är de som just nu oftast fungerar bäst för skalbara program.

erlang är trevligt, men de datastrukturer motorn använder i bakgrunden skalar inte så bra till stora system, minneshanteringen börjar braka ihop runt 16-32 cores redan.

En del riktigt gamla språk, om de hade utvecklats vidare, hade fungerat bättre för dagens verklighet, som t.ex. smalltalk. Men just nu är C förvånansvärt bra. Eftersom man kan skriva vad man menar, och undvika fällor som lås i minneshanteringen (see also: java/go/erlang etc).

Permalänk
Medlem

Va bra

Skrivet av spicy_mama:

Haha lite så känner jag med. Men visst det kommer fler program och spel som kommer vara kompatibla. DDR4 kommer bli den nya standarden precis som när DDR3 eller DDR2 kom

Gott att höra då sätter jag nog ihop dom nya delarna ändå

Visa signatur

I ate a clown once, he tasted funny :)

MB: Asus X99-A, GPU: Asus GTX980Ti, CPU: Intel 5820K, Ram: 16GB 2666Mhz, Ljud: Sound Blaster Z, Skärm: ASUS VG278H 120Hz., Datakunskap:Amatör

Permalänk
Avstängd
Skrivet av Sveklockarn:

Jag rekommenderar den här videon, angående utebliven parallellism i det tjugoförsta århundradet:

http://vimeo.com/71278954
(Bret Victor - The Future of Programming)

Det kanske inte är datorerna som behöver förändras så mycket som sättet att använda dem?

Han hade ju rätt i att Intel inte blev dominant på mikroprocessormarknaden. Jag skrattade ljudligt och ärligt överraskat när han yttrade de nästa meningarna rörande datorvetenskapen.

Visa signatur

Allting är gratis. Bara höja skatten.
http://imgur.com/gallery/hhD3J
I zenit av Roms storhetstid mutades romarna att rösta på senatorer i utbyte mot mutor
https://www.youtube.com/watch?v=gJ2tPMIh6u0

Permalänk
Medlem
Skrivet av Yoshman:

Jag vill bara säga att jag verkligen uppskattar dina inlägg. De är väldigt informativa och lätta att förstå även för en som inte är så insatt.

Visa signatur

Ryzen 5600X | Asus B550-F Gaming | 32GB G.Skill Trident Z 3600mhz | Powercolor 6800 XT | Seasonic Prime TX 850W

Athlon 64, du har alltid en plats i mitt hjärta. <3

Permalänk
Medlem

Läste endast rubriken och såg framför mig Linus Torvalds stå och såga itu en processor vid nån arbetsbänk eller så. Något han tydligen brukar göra dessutom; att detta var nåt slags återkommande inslag jag missat

Permalänk
Datavetare
Skrivet av Sveklockarn:

Jag rekommenderar den här videon, angående utebliven parallellism i det tjugoförsta århundradet:

http://vimeo.com/71278954
(Bret Victor - The Future of Programming)

Det kanske inte är datorerna som behöver förändras så mycket som sättet att använda dem?

Han har en del poänger, men som väldigt många andra allt för teoretiska datavetare verkar han aldrig hört talas om något som kallas leaky abstractions. Dagens multicore-system är extrema fall av "leaky abstractions", mer specifikt är minneshierarkin (där cachen ingår) i dessa en sådan.

Sedan är det ännu en i raden som inte riktigt förstår skillnaden mellan "concurrent" och "parallel". Får kontra med en annan Vimeo länk, Rob Pike (en av designerna av språket Go) förklarar väldigt bra vad skillnaden är och att språk som Go och Erlang m.fl. fokuserar på "concurrent programming". "concurrent programming" är användbart även om man bara har en CPU-kärna, det är främst ett sätt att strukturera sina program. "parallel programming" handlar bara om run-time och går ut på att så effektivt som möjligt dra nytta av tillgängliga CPU-trådar, alla "parallel program" råkar däremot alltid vara en form av "concurrent program".

Tror ingen hävdar att det är enklare att koda program som ska använda många CPU-kärnor i C eller C++ än vad det är i språk som Go och Erlang. Men tyvärr är SMP-system extrema "leaky" i sin abstraktion kring att man har N stycken CPU-kärnor som kör i isolation och kan kommunicera både effektivt och med deterministisk hastighet. Faktum är att alla de antagandena är i praktiken fel, det finns enormt kraftiga beroenden och tyvärr så varierar de även mellan de olika implementationer av multicore vi har idag...

Så för tillfället får vi hålla oss till dagens motsvarighet till 70/80-talets assemblerprogrammering (som folk bl.a. höll fast vid för kompilatorer på den tiden sög på att generera effektiv kod), nämligen C eller C++ (och till viss del Java eller C#) där man explicit kan specificera punkterna där man måste ha en viss form av synkronisering mellan två eller flera CPU-trådar. Dessa språk är än så länge ett krav för att få saker som inte är triviala att köra på många kärnor att skala någorlunda väl. Däremot finns det en rad fall (mest för servers) som är triviala att parallellisera och för dessa fall kan man använda många andra språk/plattformar.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Inaktiv

Om man har flera olika tunga trådar som nästan nästan körs oberoende av varandra men de delar lite information, där det enda kravet är att informationen ska bearbetas så fort som den kommer. Vilket inte är något ovanlig företeelse bland applikationer för professionellt bruk. T.ex. är det ej ovanligt att drivers mer eller mindre arbetar självständigt och förser systemet med information som systemet använder när den får tid.
Finns det inte då fördel med att lägga ut dessa trådar på egna kärnor för att minska overheaden i schemaläggaren?

Så att fyra kärnor med X prestanda kan under rätt förutsättningar vara bättre än en kärna med 4X prestandan?
Inom persondatorer brukar man dock inte ligga på 100% så det är med inbyggda system som man kan tjäna på detta.

Annars om vi tar saker som SQL servern som är granska fristående från programvaran man använder och processorkrävande. Är det inte smart att ha denna på två egna kärnor? Än att den ska hålla på och dela på någon kärna med annan programvara.

Det jag är tveksam till med alla påstående i tråden är att de fokuserar främst på väldigt enkla program, medan lite mer seriösa applikationer använder väldigt många delar där många delar mer eller mindre är oberoende av varandra. Dock finns det såklart en gräns i hur många kärnor som är vettigt att ha enligt resonemangen i tråden, men t.ex. 4st kärnor på en entusiastdator tycker jag är väldigt snålt.

Permalänk
Datavetare
Skrivet av anon159643:

Om man har flera olika tunga trådar som nästan nästan körs oberoende av varandra men de delar lite information, där det enda kravet är att informationen ska bearbetas så fort som den kommer. Vilket inte är något ovanlig företeelse bland applikationer för professionellt bruk. T.ex. är det ej ovanligt att drivers mer eller mindre arbetar självständigt och förser systemet med information som systemet använder när den får tid.
Finns det inte då fördel med att lägga ut dessa trådar på egna kärnor för att minska overheaden i schemaläggaren?

Så att fyra kärnor med X prestanda kan under rätt förutsättningar vara bättre än en kärna med 4X prestandan?
Inom persondatorer brukar man dock inte ligga på 100% så det är med inbyggda system som man kan tjäna på detta.

Annars om vi tar saker som SQL servern som är granska fristående från programvaran man använder och processorkrävande. Är det inte smart att ha denna på två egna kärnor? Än att den ska hålla på och dela på någon kärna med annan programvara.

Det jag är tveksam till med alla påstående i tråden är att de fokuserar främst på väldigt enkla program, medan lite mer seriösa applikationer använder väldigt många delar där många delar mer eller mindre är oberoende av varandra. Dock finns det såklart en gräns i hur många kärnor som är vettigt att ha enligt resonemangen i tråden, men t.ex. 4st kärnor på en entusiastdator tycker jag är väldigt snålt.

Dold text

Det har varit väldigt mycket tal om Ahmdals lag i denna tråd, men det du är inne på beskrivs bättre av Gustafsons lag: om problemet i den parallella delen av programmet är tillräckligt beräkningsmässigt dyrt så kommer det skala över CPU-kärnor.

Ett väldigt illustrativt exempel på Gustafsons lag i aktion är parallell bygge av ett stort C respektive ett stort C++ projekt. C++ filer är väldigt beräkningsmässigt dyra (tar lång tid att kompilera varje fil) medan C (och även Java, C#, Go m.fl) är relativt sett billiga. C++ projekt tenderar därför skala nära nog linjärt med antal CPU-kärnor medan C projekt slår i andra flaskhalsar vid 4-8 kärnor (lite beroende på hur komplex filerna är i genomsnitt) då saker som läkning och andra I/O operationer är seriella delar.

Sedan är det väl ändå inte entusiasters behov som avtalats i denna tråd, utan "vanliga" användares? För entusiaster finns modeller 8 CPU-trådar och ända upp till 16 CPU-trådar idag.

Fyra kärnor med prestanda X är i praktiken ALLTID sämre än en kärna med prestanda 4X, i absolut bästa fall (trivialt parallellserbara problem) kan fyra kärnors-varianten asymptotiskt närma sig 4X varianten. Har sett flera HW-designers säga att mellan tummen och pekfingret så om valet står mellan att gå från 1->2 kärnor eller ökad IPC så är det senare alltid att föredra för "vanliga" användare om ökningen är 20-30% eller mer. För servers ligger denna brytpunkt högre.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Medlem

ITT: Folk som för det första inte har läst artikeln (som specifika workloads) och inte ens har början till en uppfattning om hur ett operativsystem hanterar trådning försöker dumförklara Linus Torvalds, som har designat och är ansvarig för Linux kerneln, som är en av världens mest använda kernels. För ett uttalande riktat mot vanlig daily use och förmodligen specifikt mobila marknaden där man slänger in mer kärnor för att få produkten att låta bättre, utan att bry sig om prestanda impacten alls.

Men ja, gemene man behöver defenitivt 4+ kärnor för att surfa!

Permalänk
Inaktiv
Skrivet av Yoshman:

Massa text.

Intressant, jag har lärt mig en hel del i tråden nu tack vare bl.a. dig!

Skrivet av Sir. Haxalot:

ITT: Folk som för det första inte har läst artikeln (som specifika workloads) och inte ens har början till en uppfattning om hur ett operativsystem hanterar trådning försöker dumförklara Linus Torvalds, som har designat och är ansvarig för Linux kerneln, som är en av världens mest använda kernels. För ett uttalande riktat mot vanlig daily use och förmodligen specifikt mobila marknaden där man slänger in mer kärnor för att få produkten att låta bättre, utan att bry sig om prestanda impacten alls.

Men ja, gemene man behöver defenitivt 4+ kärnor för att surfa!
http://i.imgur.com/vMiEJCG.png

Inte konstigt det segar för surfning när du har så få kärnor i windows, detta är maskinen som jag använder för att skriva på forumet. http://i60.tinypic.com/262si6o.jpg 24kärnor krävs för att internet explorer ska flyta på när man skriver inlägg på forum.

Problemet är att man kanske gör annat samtidigt, som i mitt fall kör maskinen 2st SQL databaser på egna VM och ca 10 st virtuella maskiner samtidigt, där varje maskin har en minst applikation som snurrar och drar cpu. Så även om det på en vm-maskin ser ut att jag ej belastar datorn så är den belastad.

Permalänk

Äch

Jag bryr mig inte mycket...

Man lusläser ändå tester och tänker själv, det är sällan jag köper det på pappret det allra värsta. Om man läser att en mobil har 16 kärnor och ser att det finns en exakt lika dan med 8 och den kostar mindre än hälften och har dubbel batteritid... och man ändå kan gör samma sak typ lägga ut en bild på Facebook. Vilken väljer man.

Ungefär samma tänk när det gäller datorer... Jag gör musik och utformar min dator därefter men tycker att i dag kan man slänga på extra allt utan att det flaskar det minsta. Att stirra sig blind på siffror är inte längre aktuellt...

Så nästa dator jag bygger kommer jag att titta mer på att den skall vara tyst och liten än något annat och fortfarande räcker fyra kärnor gott.

Marknaden styr nog och vi är inte helt dumma... annat var det för 15-20 år sedan- Då var man tvungen att fläska rejält på om man ville köra PC . Ångrar i dag att jag inte körde MAC under dom åren faktiskt. I dag är PC bättre skulle jag säga---

I framtiden så tror jag det kommer att hänga mer på god programmering än antalet kärnor. God programmering = effektivisering, det kommer betyda mycket mer.

Visa signatur

Kraschfield

Permalänk
Avstängd
Skrivet av Modellören:

Jag bryr mig inte mycket...

Man lusläser ändå tester och tänker själv, det är sällan jag köper det på pappret det allra värsta. Om man läser att en mobil har 16 kärnor och ser att det finns en exakt lika dan med 8 och den kostar mindre än hälften och har dubbel batteritid... och man ändå kan gör samma sak typ lägga ut en bild på Facebook. Vilken väljer man.

Ungefär samma tänk när det gäller datorer... Jag gör musik och utformar min dator därefter men tycker att i dag kan man slänga på extra allt utan att det flaskar det minsta. Att stirra sig blind på siffror är inte längre aktuellt...

Så nästa dator jag bygger kommer jag att titta mer på att den skall vara tyst och liten än något annat och fortfarande räcker fyra kärnor gott.

Marknaden styr nog och vi är inte helt dumma... annat var det för 15-20 år sedan- Då var man tvungen att fläska rejält på om man ville köra PC . Ångrar i dag att jag inte körde MAC under dom åren faktiskt. I dag är PC bättre skulle jag säga---

I framtiden så tror jag det kommer att hänga mer på god programmering än antalet kärnor. God programmering = effektivisering, det kommer betyda mycket mer.

Precis, man kollar vad man har för behov av datorn och köper därefter, jag gör också musik och RAM är viktigare än hur många kärnor CPU har. Däremot är jag väldigt sugen på att skaffa en Mac för ändamålet då de är smidigare för ändamålet och Logic Pro X är ett grymt bra musikprogram och kostar ingenting jämfört med största konkurrent Cubase 8 Pro. Det är även lättare att arbeta med än vad Cubase är.

Cubase 8 Pro 4695kr

Logic Pro X 1399kr

Visa signatur

The problem in society today: Smart phones, stupid people.

Permalänk
Medlem

Linus missar doch en väldigt vikitig aspekt.
Låt säga en 4670k som är väldigt populär. Den har hög IPC och relativt hög klock per kärna, det går inte att göra bättre i dagsläget.
Det enda sättet att få den snabbare totalt sett är flera kärnor bredvid varandra.

Sedan får man inte glömma det kostnadseffektiva perspektivet. Det är kanske billigare med 4 medemåttiga kärnor istället för 2 som är dubbelt så snabba.

Mina synpunkter gäller desktopsidan, angående tex mobiltelefoner håller jag med Linus. Jag hade hellre sett min telefon med bara 2 kärnor.

Permalänk
Skrivet av Modellören:

Jag bryr mig inte mycket...

Man lusläser ändå tester och tänker själv, det är sällan jag köper det på pappret det allra värsta. Om man läser att en mobil har 16 kärnor och ser att det finns en exakt lika dan med 8 och den kostar mindre än hälften och har dubbel batteritid... och man ändå kan gör samma sak typ lägga ut en bild på Facebook. Vilken väljer man.

Ungefär samma tänk när det gäller datorer... Jag gör musik och utformar min dator därefter men tycker att i dag kan man slänga på extra allt utan att det flaskar det minsta. Att stirra sig blind på siffror är inte längre aktuellt...

Så nästa dator jag bygger kommer jag att titta mer på att den skall vara tyst och liten än något annat och fortfarande räcker fyra kärnor gott.

Marknaden styr nog och vi är inte helt dumma... annat var det för 15-20 år sedan- Då var man tvungen att fläska rejält på om man ville köra PC . Ångrar i dag att jag inte körde MAC under dom åren faktiskt. I dag är PC bättre skulle jag säga---

I framtiden så tror jag det kommer att hänga mer på god programmering än antalet kärnor. God programmering = effektivisering, det kommer betyda mycket mer.

Man tar ju Iphonen såklart samma prestanda till trippla priset

Iphone6+ ~8200
Oneplus one ~2800

Permalänk
Medlem
Skrivet av biorrith:

Linus missar doch en väldigt vikitig aspekt.
Låt säga en 4670k som är väldigt populär. Den har hög IPC och relativt hög klock per kärna, det går inte att göra bättre i dagsläget.
Det enda sättet att få den snabbare totalt sett är flera kärnor bredvid varandra.

Sedan får man inte glömma det kostnadseffektiva perspektivet. Det är kanske billigare med 4 medemåttiga kärnor istället för 2 som är dubbelt så snabba.

Mina synpunkter gäller desktopsidan, angående tex mobiltelefoner håller jag med Linus. Jag hade hellre sett min telefon med bara 2 kärnor.

Allt du säger är sant. När jag läste diverse kurser om embedded-system på universitetet för tio år sen pratade man mycket om att det skulle vara mer ekonomiskt (bättre prestanda per watt och krona) mer många små cores än några få feta. Med det sagt kan jag konstatera att jag har stött på ganska få mjukvaror som varit enkla att parallellisera effektivt utöver 2-3 trådar. Det bästa exemplet jag har stött på hittills var när jag jobbade på ett företag som tog fram mjukvara för tekniska beräkningar (montecarlo-simuleringar av analog elektronik). Då minns jag bestämt att vi köpte ett dussin datorer som beräkningsslavar, som bestod av de första quad-core CPU:erna från Intel med typ den lägsta klockfrekvensen. De gav många fler simuleringar per sekund och krona än vår dyra Xeon-baserade server.

För många applikationer är fler kärnor en självklarhet. Men frågan är vad den genomsnittlige köparen av en dyr desktopdator i prisklassen kring 20 tkr (typ iMac) får ut av fler cores? Jag har fått för mig att 3D Studio Max ger ungefär 10% extra prestanda av att gå från 4790K till 5820K. Adobe Premier får helt försumbar vinst, 7-Zip blir 10% snabbare, Adobe After Effects ca 20%, kompilera C++ skalar visserligen jättefint, TrueCrypt skalar också fint, o.s.v. (Disclaimer: Jag kan förstås ha fel om enskilda resultat som nämndes här.) Det blir minst sagt blandade resultat.

En fråga till alla: specifikt vilka klientprogram tänker ni er ska vinna riktigt mycket på att gå från säg 4 till 12 kärnor? Som inte handlar om kryptering, kompilering, tekniska beräkningar, etc.

Permalänk
Medlem
Skrivet av Perkoff:

En fråga till alla: specifikt vilka klientprogram tänker ni er ska vinna riktigt mycket på att gå från säg 4 till 12 kärnor? Som inte handlar om kryptering, kompilering, tekniska beräkningar, etc.

Efter att ha sett Bret Victor - The Future of Programming (http://vimeo.com/71278954) som länkades ovan vill jag svara dig med följande tanke.
Om vi gör ett system som har massvis med kärnor, låt oss säga 128st eller 1024st, vad kan vi göra då?
Då tänker jag inte på "det vi gör idag * 100" som rendera snabbare samtidigt komprimera filer m.m. utan jag tänker på vad för saker kan vi göra då med dessa 100-tals kärnor som vi inte kan göra idag utan dem? Jag tänker i liknade banor som att gå från dos till windows (terminal till gui), 2d till 3d, virtualisering och liknande.

Permalänk
Medlem
Skrivet av Gender Bender:

http://quotes.lifehack.org/media/quotes/quote-Bill-Gates-640k...

En klassisk kommentar från Bill Gates som påstod att ingen kommer behöva mer än 640K RAM.

Citat:

Gates himself has strenuously denied making the comment. In a newspaper column that he wrote in the mid-1990s, Gates responded to a student's question about the quote: "I've said some stupid things and some wrong things, but not that. No one involved in computers would ever say that a certain amount of memory is enough for all time." Later in the column, he added, "I keep bumping into that silly quotation attributed to me that says 640K of memory is enough. There's never a citation; the quotation just floats like a rumor, repeated again and again."

Från denna artikel.

Visa signatur

System: CPU: AMD Ryzen 9 3900X, MB: Gigabyte X570 Aorus Elite, Minne: Corsair 32GB DDR4 3200MHz, GPU: Asus GeForce RTX 2080 Super ROG Strix Gaming OC

Permalänk

Ja, vi börjar nå absuda nivåer när det gäller processor kärnor.. jag tror att intels fokus på att öka processor kärnor istället för prestanda per kärna bara är något som hindrar utvecklingen.. I praktiken är det väldigt få program som använder prestanda på alla kärnor på ett EFFEKTIVT sätt, effektförlurstarna är väldigt stora...
är bara video rendering eller renderingen över huvuudtaget som dom annvänds 100%.

Permalänk
Medlem
Skrivet av evil penguin:

Det Linus snackar om handlar ju dock inte huvudsakligen om antalet kärnor rakt av (särskilt inte om du håller dig i trakterna av dagens CPUer) utan snarare avvägningen mellan färre snabba kärnor (i princip alla vanliga cpuer idag) eller en stor mängd svaga kärnor (isf mer likt dagens gpuer till upplägget). Det Linus säger är att han tycker att det vore galenskap att satsa på en stor mängd svaga kärnor som huvudsaklig beräkningsenhet i datorer för vanliga användare.

"There's this huge body of "knowledge" that parallel is somehow more efficient, and that whole huge body is pure and utter garbage. Big caches are efficient. Parallel stupid small cores without caches are horrible unless you have a very specific load that is hugely regular (ie graphics)."

"End users are fine with roughly on the order of four cores, and you can't fit any more anyway without using too much energy to be practical in that space. And nobody sane would make the cores smaller and weaker in order to fit more of them - the only reason to make them smaller and weaker is because you want to go even further down in power use, so you'd still not have lots of those weak cores."

Jag uppfattar mao det centrala i vad Linus säger som att han inte tror på att ha betydligt svagare kärnor än dagens för att istället kunna ha fler, inte att det konkreta antalet kärnor egentligen är det viktiga för hans argument.

Som jag tolkar det du säger, och det de flesta andra som kommenterar här, så menar ni att "jag vill ha fler snabba kärnor!" vilket i så fall ändå handlar om något annat, dvs högre effekt, osv.

Nej, du har rätt, jag läste igen och tolkar det precis som du gör nu. Tack för ett genomtänkt svar som fick mig tänka igenom min tolkning!

Visa signatur

Ride more, Work less!

Permalänk
Datavetare
Skrivet av SolidReactor:

Efter att ha sett Bret Victor - The Future of Programming (http://vimeo.com/71278954) som länkades ovan vill jag svara dig med följande tanke.
Om vi gör ett system som har massvis med kärnor, låt oss säga 128st eller 1024st, vad kan vi göra då?
Då tänker jag inte på "det vi gör idag * 100" som rendera snabbare samtidigt komprimera filer m.m. utan jag tänker på vad för saker kan vi göra då med dessa 100-tals kärnor som vi inte kan göra idag utan dem? Jag tänker i liknade banor som att gå från dos till windows (terminal till gui), 2d till 3d, virtualisering och liknande.

Tänk på Ahmdals respektive respektive Gustafsons lagar på detta sätt:

  • Ahmdal du har en specifik uppsättning problem du vill lösa och vill få en uppfattning om hur vettigt det är att snabba upp beräkningstiden för dessa problem genom att addera fler CPU-kärnor till din dator.

  • Gustafson du har en fet maskin med massor med CPU-kärnor och vill veta hur pass stora/komplicerade problem du minst måste ge till systemet för att det ska effektivt kunna utnyttja sin beräkningskraft

Det andra fallet är för väldigt nära 100% av desktop-användarna inte relevant, vi jobbar med program där vi inte har kontroll eller bara har marginell kontroll av problemets utformning. Det är också förklaringen till varför 2-4 kärnor är fullt tillräckligt för de flesta, de problem vi jobbar med är inte tillräckligt beräkningsmässigt tunga utan de är mest begränsade av att lösa ett relativt enkelt problem på kortast möjliga tid (för att undvika "lagg").

Har man beräkningstunga komplicerade problem så kan man mycket väl ha väldigt mycket nytta av tusentals CPU-kärnor. De som ofta transkodar fil och liknande kan definitivt dra nytta av 8-16 CPU-kärnor. Använder man mest datorn till surf och liknande är 2 kärnor mer än nog.

Visa signatur

Care About Your Craft: Why spend your life developing software unless you care about doing it well? - The Pragmatic Programmer

Permalänk
Avstängd

Märkligt. Det verkar vara många i tråden som leker besserwissers utan att vare sig läst artikeln eller begripit Amdahls lag. Trots att flera som faktiskt kan sin sak redan har påpekat att detta är en tämligen fundamental, matematisk lag som är oberoende av arkitektur eller programspråk så verkar det inte accepteras av alla.

Skrivet av nackskägg:

Skitsnack!

Kodar man från början med många trådar i åtanke så går det att utnyttja hur många trådar som helst. Problemet uppstår när man försöker skapa nåt som ska funka även med bara en eller två trådar.

Nej, det är du som kommer med skitsnack. Om man öh ska kunna "koda för flera trådar" krävs det att själva problemet/arbetet som ska utföras har de fundamentala egenskaperna av "parallellproblem". Och då är det liksom en no-brainer. Amdahls lag säger oss precis vilken prestandaökning vi får, givet grad av parallellism hos problemet och grad av parallellism hos maskinen. TOTALT oberoende av saker som språk och arkitektur. Förenklat uttryck kan vi säga att två och endast två parametrar går in i Amdahls lag, nämligen som sagt parallellismen hos problemet och hos maskinen. Det behöver inte ens röra specifikt kärnor och trådar utan är mer fundamentalt än så. Lagen gäller all typ av arbete.

Att det finns programmeringsspråk som är bättre eller sämre på att faktiskt hantera problemets (algortimens, etc) parallellism ändrar inte det fundamentala faktum att problemet faktiskt har en parallellism som i praktiken ofta är under 1 (<100%).

Skrivet av Felix:

Dunderdåligt exempel!
Dela upp filen i n lika stora bitar, med edge-case-checkar såklart och summera ihop resultatet från de n trådarna när de kört klart.

Ja, och gör du det så ser du direkt att problemet inte låter sig parallelliseras. Ju mer parallellt du arbetar, desto större andel av arbetet måste utföras seriellt. Summeringen av resultatet blir inte trivialt när antalet parallella enheter går mot oändligheten...

Skrivet av 1up:

Programmeringsspråken ligger flera år efter processorutvecklingen så det är ju inte så konstigt egentligen. Jag tror att Linus Torvalds ord väger tyngre än någon annan programmerare i världen, eller är det någon som anser sig kunna bättre kanske...

Är du ironisk eller? Torvalds har rätt och det har faktiskt ingenting med språken att göra. Att det finns språk som är bättre på att utnyttja parallellism innebär inte att parallellismen plötsligt ökar hos själva problemet som kodas. Och det är problemets parallellism, inte en kompilators, programmerares eller språks möjlighet att identifiera parallellismen som räknas.

Skrivet av beh:

Detta är kanske det dummaste tvärsäkra uttalandet jag hört här på Swec. Språket har allt mer hur man utnyttjar hårdvaran att göra. Det finns en anledning till att eksimåer har tio ord för snö och thailändare kanske ett. Språket styr vad man kan uttrycka, och vad man kan uttrycka begränsar och styr hur koden du skriver till slut blir maskinkod som kör på processorn. Det är detta som är datavetenskap och om du inte har respekt för DV så var så snäll och var tyst eller kom med stöd för dina påståenden.

Nej, cardeci har precis rätt. Språket är totalt irrelevant. Ett problem som är seriellt till sin natur kan inte implementeras bättre i Erlang än i QBasic, åtminstone inte med avseende på just parallellism.

Att det finns språk bättre lämpade för parallella problem är liksom inte vad vi talar om. Språken eller datorarkitekturen är inte vad som avgör parallelliteten hos ett problem, utan det är en fundamental egenskap hos själva problemet. Och det är precis vad Amdahls lag berör.

Kan inte bara alla acceptera att Yoshman med titeln "Datavetare" samt några till i tråden faktiskt vet vad de talar om?. Detta är inte en fråga om teknikutveckling, om programspråksutveckling eller datorarkitektur utan en lag som är fundamental.

Jag brukar kalla dylika lagar för "andra ordningens naturlagar", dvs de lagar som inte rör saker som elektroners massa eller andra direkt fysikaliska fenomen, men som antingen beror av detta eller av matematik och där inget utrymme finns för att lagen är "fel" eller kan "fintas" med någon "smart algoritm" eller "ny teknik". Amdahls lag och den besläktade Gustafson-Barsis lag gäller oberoende av teknikområde, av tekniknivå eller datorarkitektur och gäller faktiskt även utanför datorns område. De är fundamentala lagar som sätter en övre möjligheternas gräns på hur effektivt en given arbetsuppgift kan parallelliseras (Gustafson-Barsis lag handlar mer om hur mycket "mer av problemet" kan beräknas på utsatt tid givet än mer tillgänglig datakraft).

Visa signatur

http://www.theatlantic.com/national/archive/2012/05/how-the-p...
"If there's a simple lesson in all of this, it's that hoaxes tend to thrive in communities which exhibit high levels of trust. But on the Internet, where identities are malleable and uncertain, we all might be well advised to err on the side of skepticism."

Permalänk
Inaktiv

Jag håller med vad du skrev men..

Skrivet av MBY:

De är fundamentala lagar som sätter en övre möjligheternas gräns på hur effektivt en given arbetsuppgift kan parallelliseras (Gustafson-Barsis lag handlar mer om hur mycket "mer av problemet" kan beräknas på utsatt tid givet än mer tillgänglig datakraft).

Inom datorteknik så är det inte alltid självklart vad arbetsuppgiften ska vara. Uppgiften beror dels på utvecklingstiden, ramverket och datorns beräkningskapacitet.
De två sista faktorerna är något som har stigit med rasande fart de senaste åren, vilket leder till att dagens programvara är mer bloated än vad den vad förr.
Det är bara se på fps spel, det arbetsuppgiften var igår är inte densamma idag. Nu ska man spela multiplayer, fysiken ska kännas verklig så att man kan förstöra objekt och skada motspelare (skjuta av kroppsdelar) och även spela in matcher, tanka hem torrents, ha igång någon filserver, packa filer m.m samtidigt. Hur långt denna utvecklingen kommer att gå är en bra fråga och realistisk fysik i spel är processorkrävande.

Så det jag menar är att arbetsuppgiften inte är självklar. För min del så får jag varje år bättre ramverk med fler funktioner som jag kan lägga in genom få musklick, detta vill självklart kunderna ha och antalet kluster som behövs för att driva skiten bara ökas. (p.g.a att utvecklingen av cpu har börjat stagnerat)

Och samma sak gäller allt, jag surfade bra på en 486 med 4MB ram runt 96, nu idag känns internet nästan slöare på min 2*12 kärniga bruk.

Så en fråga om fler kärnor i framtiden eller ej kräver att man först analyserar vad man gör i framtiden på datorn? För min egen del har jag inga problem att utnyttja "min" dator idag.
Annars kan man se på bilar, det är märkligt att dagens bilar behöver ha mer datakraft än en månraket, men detta tillräckligt och kommer utvecklingen att stagnera? Knappast, det blir bara mer och mer skit som bilföraren ska ha igång samtidigt och allt mer saker som att bearbetas av en dator. T.ex. dieselvärmaren, för några år sedan var det elektronisk bara en strömbrytare, idag är det en dator som styr denna och hela tiden ändrar hur denna beter sig och ändrar var värmen ska spridas. Och om några år om det inte redan finns idag så ska man nog från mobiltelefonen både kunna övervaka och styra dieselvärmaren.

Vilket innebär att problemet "värma upp bilen" inte är statisk utan allteftersom man får tillgång till mer datakraft så blir det bara fler funktioner. Där väldigt många av dessa funktioner är väldigt enkla att utföra parallellt på helt olika cpus om man så ville.
Och detsamma gäller såklart persondatorn, på 80talet satt entusiaster och bara gjorde en sak i taget, nu gör man väldigt mycket på datorn samtidigt.

Permalänk
Medlem
Skrivet av Sveklockarn:

Jag rekommenderar den här videon, angående utebliven parallellism i det tjugoförsta århundradet:

http://vimeo.com/71278954
(Bret Victor - The Future of Programming)

Det kanske inte är datorerna som behöver förändras så mycket som sättet att använda dem?

Riktigt intressant klipp, det var verkligen sevärt. Vi har med andra ord inte lärt oss någonting om programmering sedan dess.

Visa signatur

If you follow the herd you are going to have to step through a lot of manure. Have the courage to trust in yourself and follow your own path.

Permalänk
Medlem

Därför bygger man sin maskin efter det behov man har. Många som fortfarande tror att 32GB RAM är ett måste för 1342314512343 FPS i crysis eller whatever the kids are playing these days.

Visa signatur

Theres no place like 127.0.0.1

Permalänk
Inaktiv
Skrivet av Bockis:

Därför bygger man sin maskin efter det behov man har. Många som fortfarande tror att 32GB RAM är ett måste för 1342314512343 FPS i crysis eller whatever the kids are playing these days.

Man behöver nog mer minne än så för att få crysis att flyta på riktigt bra. I ditt exempel så vore det ej dumt att skapa en ramdrive som man installerar Cryes på och sedan kör spelet från denna.

Men jag förstår vad du menar och du har helt rätt, man köper dator efter ens behov och vad priset är. Där priset ofta har en väldigt stor betydelse och där priset påverkar vilken dator man köper och man ändrar sina beteende allteftersom man har tillgång till mer datakraft och bättre mjukvaror.

Storleken av snabba minnen finns det i den närmsta tiden ingen begränsning av hur mycket man behöver med avseende på vad som finns att tillgå. (Visst man inte behöver ha en GoogolByte cache till cpun i en mobiltelefon, men det kommer hellre inte att komma på ett bra tag)

Permalänk
Medlem
Skrivet av Lordsqueak:

Meh.
Beror ju helt på applikationen, vissa saker lämpar sig bättre än andra för parallelisering.

Men sen ska vi ju inte glömma att en moderna dator kör mer än 1 program samtidigt.
Ett modernt OS har ju en hel drös med olika tasks/deamons/services som kör och gör olika saker, och då hjälper det ju faktiskt om inte alla sitter och kör på samma core som ditt program gör.

Skrivet av Lessismore:

Det är ingen tvekan om att utvecklingen gått framåt när det gäller hårdvara, operativsystem och tillhörande program.

Dra igång en Pentium-D med Windows XP. Gör något kul som att tex kopiera lite filer. Allt du gör under tiden datorn jobbar, går segt. Gör samma sak på en dito dator med Windows 7 och du märker att datorn faktiskt är användbar.

Sen återigen det här med att vissa tycker att man inte tjänar något på att ha fler än 4st kärnor. Tex om man låter datorn arbeta med ett par saker i bakgrunden så att enhetshanteraren visar 82% CPU-last, 100% last på 3st kärnor och 50% på 1st kärna, känns ju datorn allmänt seg. Om man istället har en 6-kärnig CPU, så får man minst 2st kärnor att leka fritt med. Varför vill man inte ha 6-kärnig CPU då för?

Skickades från m.sweclockers.com

Skrivet av retro123:

Kanske är det så?, men har man flera skärmar och/eller multitaskar samtidigt som man spelar vilket ju inte bör vara så ovanligt, samma sak då menar du?

Visst har det betydelse, både OSet förbättring och dens... mög i bakgrunden.
Förr satt man ju timmar med W2k och XP och stängde av allt man kunde, för att den en kärna CPUn man körde på skulle orka med spelet man ville spela. NAturligvis bestämdes sig Windows för att när man spelar är en utmärkt tillfälle att defragmentera, uppdatera, indexera, rapportera och allt annat den kunde få för sig.

Idag är 2+ kärnor ett krav för mig, just pga detta. Man kan göra det man vill, och låta OSet göra typ vf det vill, så länge det inte stör mig. När man fick 4(3) kärnor var det faktiskt förbättring igen, pga nu kunde 2 tråd spelen flyta på bra, samtidigt som OSet hade en kärna att leka med. Hade funkat med 3, men Q9550 var 4. Nu dock.. är "belöningen minimal." Få spel utnjyttjar 4 kärnor perfekt, och ännu färre fler än 4 kärnor. Och även om OSet gärna vill ha iaf en kärna till sitt mög bakom, så räcker 4 kärnor otroligt långt, även till spel.
Tror inte vi kommer inom snar framtid behöva 8, eller iaf 8+.

Dock är en viktigt poäng sagd här. Vi gör fler saker samtidigt idag. Vi har youtube på en skärm, spelet på en, och forum på den tredje skärmen. DÅ och endast DÅ, är 8 kärnor av intresse imho, dvs när inte bara våra program parallelliseras, utan även vår konsumering av den. Dvs, VI börjar bli multitrådade...

Problemet är ju, som Lunus påpekar, vi gör inte detta i vår telefon... Det finns alltså inget behov av så många kärnor i en telefon/surfplatta. 4 lär starka kärnor lär räcka enormt långt där.

Skrivet av LoppanH:

Bara att slänga min nyinköpta 5820 processor i skräplådan å skaffa nåt annat då

Det blir till att multitaska uta H... eller så kan jag väl bjuda 1kr för den

Skrivet av cardeci:

Och 640k var aldrig ett mjukvaru problem.

Du verkar ha bra koll, så jag förväntar mig att jag bevisas fel, men...

Jag har alltid trott att begränsningarna var pga både mjukvara och hårdvara. Mjukvaran (DOS) var ju 16-bit, och därav hade sin begränsning med det. Det var ju först när Windows 95 kom som 32-bitars mjukvara började köras, som då kunde hantera mer minne, samt att den hanterade minnet på ett annat sätt. (Du kunde tex köra 2 DOS fönster med vars 640kB minne som bas + expanderat).

Dock kan du ha helt rätt i att 640kB aldrig var mjukvaru begränsning, men detta minne var ju bas minnet även långt in i 486 tiden, i mjukvaran DOS. Sen fick man ju köra expanderat minne för att få det RAM vi känner till idag. Och man var tvungen att ladda drivare som gjorde att DOS kunde använda det, för att sedan spel/program skulle kunna använda det.
Eller?