Linus Torvalds sågar fler processorkärnor

Permalänk
Medlem
Skrivet av Yoshman:

EDIT: fördelen med "share nothing" är att det fungerar även i kluster som INTE är cache-koherenta, compute-noder i "molnet" är ett bra exempel på sådana system och förklaringen till varför det är sådan hype kring algoritmer och metoder som kör med "share nothing".

Mjo, vilket även är anledningen till att det är mest sånt jag jobbar med. Med tanke på att det är just "moln" servermjukvara som jag utvecklar.

Permalänk
Inaktiv

Tänk vad mycket Linus kunde få sagt om han inte uttryckte sig och använde ett språk som lokala alkis-Bosse på bänken

Permalänk
Medlem
Skrivet av Dunder:

640000 vad? Kärnor?

Du får fråga någon senior om detta, fr just nu har du gjort en riktig pudel.

Visa signatur

Nyfikenhet = Kunskapens Fader
Repetition = Kunskapen Moder

Permalänk
Keeper of Traditions
Skrivet av JuCke:

Du får fråga någon senior om detta, fr just nu har du gjort en riktig pudel.

Alltid lika roligt med folk som hoppar in i en diskussion, utan att ha läst vad folk skrivit innan, och tror att de är lustiga. Läs mer än ett inlägg och fundera sen på vem som gjort den där pudeln.

Visa signatur

|| Intel 8700K || Asus RTX 4070 TI Super TUF || Samsung 750 EVO 500GB & Kingston A2000 1TB & Samsung 960 EVO 250GB || Corsair RM 850x || Antec P183 || Asus G-Sync RoG Swift PG279Q || Dell XPS 15 || Thinkpad X220

The Force is like Duct Tape, it has a light side, a dark side, and holds the universe together.

Permalänk
Medlem
Skrivet av hersses:

Faktum kvarstår att på den tiden var det nära 0 privatpersoner som behövde mer kraft än 640K, lite som att idag säga "vem behöver mer än 16 GB?". Då blir det helt plötsligt inristat i sten och man får en idiotstämpel av dig för att det kommer se annorlunda ut om 10-20 år? åååååkeeej

Användaren kommer alltid att fråga efter snabbare prestanda (åtminstone tills vi klarar av raytracing i realtid...). Det är inte det som är problemet, utan hur man klarar av att leverera bättre hårdvara. CMOS-teknologin väntas ta slut vid ca 5-7nm enligt alla seriösa bedömare (inträffar sannolikt runt år 2020-2022). Sen får vi hitta på något nytt (om det går). Högre processorfrekvenser slutade vi att få för 10 år sen, så det blev andra former av förbättringar istället (fler cores, o.s.v.).

Problemet är dock att fler cores inte gör signifikant nytta efter ungefär 4 för de flesta typer av applikationer. Ett AI-intensivt spel som Civilization 5 skalar iofs bra med fler cores, men den typiska spelmotorn levererar inte så speciellt många fler fps om du trycker in en 15-kärnig Xeon-processor. Småuppgifter är helt enkelt för svåra att dela upp på flera trådar på ett effektivt sätt. Den stora majoriteten av alla desktop-applikationer kommer därför inte att dra nytta av att öka antalet cores från 4 till 15.

Torvalds har därför en väldigt bra poäng. Det finns givetvis undantag dock, men de är få för den genomsnittlige konsumenten. Istället får man göra något annat för att tillfredställa vår hunger efter högre prestanda. Exakt vad det kommer att bli vet vi inte idag.

Permalänk
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.

Som han själv säger att han aldrig har sagt...

Visa signatur

CPU: Ryzen 9 5900X MB: ASUS ROG Crosshair VIII Dark Hero GPU: GIGABYTE Radeon RX 6900 XT AORUS Ultimate Xtreme WaterForce WB RAM: 32GB 3200 MT/s CL 16 Trident Z RGB SSD: WD Black SN750 1 TB PSU: ASUS ROG Loki 1000W SFX-L Skärm: Alienware AW3423DW

Permalänk
Hedersmedlem
Skrivet av anon159643:

Förenklat så ju fler trådar på varje kärna, ju större är risken att ens viktiga tråd inte får exekvera omedelbart och så länge som den behöver för att uppfylla realtidskraven.

Så är det nog, men är det inte risk för att man har gjort fel™ om man har realtidskrav och ändå väljer att köra ett system som oförutsägbart introducerar slumpmässiga fördröjningar?

Permalänk
Inaktiv
Skrivet av Elgot:

Så är det nog, men är det inte risk för att man har gjort fel™ om man har realtidskrav och ändå väljer att köra ett system som oförutsägbart introducerar slumpmässiga fördröjningar?

Beror på hur hårt det är och har man ens blandat in windows så är det redan kört för att göra något bra.

Men för mer konsumentapplikationer som spel finns det också realtidskrav och det är inte ovanligt med forumstrådar när någon klagar att spelat hackar till enstaka gånger. Och då inte ovanligtvis precis innan någon skjuter en, där nog grafikkortet nog är största boven.

Så även ur konsumentsynpunkt kan jag tycka vara lite fel på att enbart se applikationerna som att de ej har några realtidskrav alls och allt handlar om hur snabbt de kan exekveras.

Permalänk
Medlem

Om det är så meningslöst med mer än 4 kärnor, varför valde Sony då att använda 8 istället för 4 i PS4?

Och varför finns det vissa PC spel som där man rekommenderas att ha 6 eller 8 kärnor för bäst prestanda?

Visa signatur

Chassi: en låda | CPU: i femma | Ram: 16 gib | Moderkort: jag vet inte | Hårddisk: några tusen gig och en SSD | Grafikkort: GTX 670 | Strömgrej: PSU

Permalänk
Hedersmedlem
Skrivet av anon159643:

Beror på hur hårt det är och har man ens blandat in windows så är det redan kört för att göra något bra.

Fast om man börjar tala om garantier och "omedelbar exekvering" är det väl underförstått att man menar tämligen hårt. Garanterar windows att ens tråd får köra någonsin?

Permalänk
Inaktiv
Skrivet av Elgot:

Fast om man börjar tala om garantier och "omedelbar exekvering" är det väl underförstått att man menar tämligen hårt. Garanterar windows att ens tråd får köra någonsin?

Ingen aning, på min studietid så fanns det applikationer som man kunde köra för att förbättra det.
Ett exempel som jag hittade vid googling: http://www.tenasys.com/overview-ifw

Och min uppfattning då var att realtid på windows fungerade på samma sätt som TCP/IP nätverk inom mer krävande system. Även om man ej kan garantera att ett paket kommer fram inom en bestämd tid, så har fruktansvärt mycket överkapacitet emot vad man behöver ha så risken är liten om man nu kan skydda nätet emot skräpdata.

De system som jag använder så får man enbart ett argt telefonsamtal om något skulle exekveras för sent och resultera i ett larm(t.ex watchdog), det blir ingen härdsmälta eller så precis.. hehe

Permalänk
Medlem

Enligt grafen ser det ut som prestandan är en tilltagande funktion upp till iaf 16 kärnor innan det blir en avtagande funktion.
Dvs upp till 16 kärnor är prestanda ökningen högre per kärna och efter 16 kärnor ser prestandaökningen ut att bli lägre för varje extra kärna.

Och om parallell portionen är 95% ser funktionen inte ut att bli riktigt avtagande förrän vid 128 kärnor.

Visa signatur

AMD Ryzen 1500X @ stock | Sapphire RX 580 Nitro+ 8GB | Asus ROG Strix B350-F Gaming | 2x8GB 3200MHz Corsair | EVGA Supernova G3 550W | Acer XF270HUA 1440P 144MHz Freesync

Permalänk
Medlem

Förresten så har....

...de flesta webläsare flertrådsupport idag, kör normalt Chrome men testade med Opera och IE som jag också har på maskinen. Vet att Firefox 2013 annonserade att de skulle komma med ny avancerad flertrådsupport, men vet inte om det är klart. Safari har det på OS X och gissar att även Windows versionen har det för att kodbasen skall vara så lik som möjligt.

Det faktum att från Opera 10.6, Safari 4.0, Chrome 11.0, Firefox 4.0 och IE 10 det finns stöd för "HTML5 multi-threading capability" via "Web Workers" för javascript, borde innebära att från dessa versioner åtminstone kan webläsarna utnyttja flera trådar.

På samma sätt som WebGL givit "webappar" direktaccess till grafikkorten kommer WebCL ge dem kontroll över flera trådar.

WebGL kommer från OpenGL och WebCL från OpenCL, (Open Grahipcs Library and Open Compute library), men fick begränsas något av säkerhetsskäl.

Permalänk
Hedersmedlem
Skrivet av anon159643:

Ingen aning, på min studietid så fanns det applikationer som man kunde köra för att förbättra det.
Ett exempel som jag hittade vid googling: http://www.tenasys.com/overview-ifw

Just det där verkar väl dock lösa problemet genom att, via någon sorts virtualisering, köra ett eget operativsystem bredvid windows (och sedan på något sätt kommunicera).

Skrivet av anon159643:

Och min uppfattning då var att realtid på windows fungerade på samma sätt som TCP/IP nätverk inom mer krävande system. Även om man ej kan garantera att ett paket kommer fram inom en bestämd tid, så har fruktansvärt mycket överkapacitet emot vad man behöver ha så risken är liten om man nu kan skydda nätet emot skräpdata.

De system som jag använder så får man enbart ett argt telefonsamtal om något skulle exekveras för sent och resultera i ett larm(t.ex watchdog), det blir ingen härdsmälta eller så precis.. hehe

Jo, oftast fungerar det ju bra men garantera något kan man sällan (och det var vad jag främst reagerade på).

Skrivet av stimpen:

Enligt grafen ser det ut som prestandan är en tilltagande funktion upp till iaf 16 kärnor innan det blir en avtagande funktion.
Dvs upp till 16 kärnor är prestanda ökningen högre per kärna och efter 16 kärnor ser prestandaökningen ut att bli lägre för varje extra kärna.

Och om parallell portionen är 95% ser funktionen inte ut att bli riktigt avtagande förrän vid 128 kärnor.

Nja, funktionen blir aldrig avtagande utan närmar sig 2, 4, 10 och 20 sakta men säkert (ökningstakten minskar dock), så fler kärnor är alltid bättre (om än inte så mycket bättre till slut). Det där är dock ideala fall, så det framgår inte om det till exempel kostar resurser att administrera alla kärnor.

Permalänk
Avstängd

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.

Permalänk
Medlem
Skrivet av anon159643:

Men för mer konsumentapplikationer som spel finns det också realtidskrav och det är inte ovanligt med forumstrådar när någon klagar att spelat hackar till enstaka gånger. Och då inte ovanligtvis precis innan någon skjuter en, där nog grafikkortet nog är största boven.

Tja, på sätt och vis. Den vanligaste anledningen till hack i spel är att något måste kopieras från RAM till grafikkortet, eller, några storleksordningar värre, från din SSD till ram till grafikkortet. Eller, helt otänkbart uselt, från din roterande disk till grafikkortet via ram.

Permalänk
Medlem
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 går inte. Det är bevisat att så inte är fallet, av flera olika anledningar. Kom igen när du läst på lite.

Världens enklaste exempel: Räkna hur många gånger det står "hej " i en fil.

Kom tillbaka när du har ditt perfekt parallella program.

Permalänk
Medlem

Att allt inte kan flertrådas stämmer ju helt klart och jag kan nog hålla med om att det råder en allmän övertro på att allt kan delas upp på flera trådar. Vi behöver nya och bättre komprimeringsalgoritmer, nya och bättre dyn. prog. algoritmer och nya smartare och snabbare programmeringsspråk.

Men det som kanske skulle kunna göra störst skillnad är att kassera de nuvarande instruktionsuppsättningarna och tänka igenom en ny standard. Men det skulle å andra sidan bli helt omöjligt dyrt.

Skrivet av Frisell:

Alltid hetsiga känslor här på SweC. Utan att hata nån tycker jag Herr Torvalds har fel. Just NU må han ha en poäng, men det där kommer vara lika med 640k ram-citatet om några år. Klart det går att utnyttja fler kärnor om programmet är skrivet så...

I hela tråden har folk försökt förklara varför allt inte går att parallellisera.

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 går inte att köra allt flertrådat och det är inte enkelt. Sen blir det ingen egentlig skillnad för en processor att köra ett flertrådat program på en kärna jämfört med att köra samma program skrivet för en tråd, läs lite om time-sharing och hur det funkar på en CPU. Finns säkert en wikipedia-artikel.

Matris eller vektormultiplikation är klassikern när det gäller att illustrera vad som kan brytas ner i flera trådar. Naivaste ansatsen är att låta en tråd beräkna ett element i resultatmatrisen. Så multiplicerar vi en n*m-matris med en m*o-matris kan vi då bryta ner problemet i n*o stycken trådar där varje tråd multiplicerar och adderar en rad och en kolumn. Förutsatt n*o-kärnor tar det bara m^2 tid, tiden för att beräkna ett element, istället för n*o*m^2 tid på en tråd.

Någonting som inte går att dela upp i flera trådar är något som kräver mycket synkronisering. Du kan till exempel inte flertråda själva lösandet av en rubikskub, du vill av någon anledning skriva ut hur kuben ser ut efter varje vridning - i det här scenariot har du fått en lösning vridning för vridning. Vid lösning av en rubiks kub vrider du som regel aldrig mer än ett lager samtidigt. För att skriva ut varje utseende måste du ha beräknat varje steg före, det finns inga genvägar. Det finns alltså saker som inte går att dela upp i fler trådar och saker som kan delas upp. Du kan dock förmodligen beräkna den snabbaste lösningen flertrådat.

Det finns däremot andra intressanta lösningar på problemet som dynamisk programmering där man lagrar beräkningar som man kan tänkas behöva igen för att på så vis bara läsa från minne istället för att utföra en tidskrävande beräkning igen. Nackdelen är såklart att det inte är lika minneseffektivt. Men mer minne är enklare att skaffa än algoritmer som kan köras på flera trådar.

Visa signatur

En potatis

Permalänk
Medlem
Skrivet av cardeci:

Nej, det går inte. Det är bevisat att så inte är fallet, av flera olika anledningar. Kom igen när du läst på lite.

Världens enklaste exempel: Räkna hur många gånger det står "hej " i en fil.

Kom tillbaka när du har ditt perfekt parallella program.

Han har dock rätt när det gäller särskilda nischade applikationer, men de har alltid trådat bra pga instruktionerna är lätt att parallellisera i sin natur, fast jag är medveten om att det inte var det du syftade på.

Ditt exempel så skulle man kunna låta en kärna första skanna filen, för att sedan dela upp den i så många delar du har kärnor, distribuera ut dem och gå igenom det de fick för att sedan sammanställa och presentera antal hej. Fast vi det laget så vore det snabbare att låta första kärnan som går igenom filen räkna dina hej och presentera det innan den skickar vidare till resten av kärnorna

Visa signatur

Ride more, Work less!

Permalänk
Medlem
Skrivet av cardeci:

Nej, det går inte. Det är bevisat att så inte är fallet, av flera olika anledningar. Kom igen när du läst på lite.

Världens enklaste exempel: Räkna hur många gånger det står "hej " i en fil.

Kom tillbaka när du har ditt perfekt parallella program.

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.

Visa signatur

En potatis

Permalänk
Medlem

Fast att ha mer än fyra kärnor är ballin' och om man vill bencha så är de bra. (äger dock inget med mer än fyra c: )

Visa signatur

En dator

Permalänk
Medlem

Som en replik till Torvalds utspel så tillhör jag väl till de "få" då som inte kan få nog av CPUer/kärnor på desktop. Å andra sidan så gäller det de flesta i min umgängeskrets också. Hans frågeställningar angående nyttan av mängder av CPU kärnor på Smartphones etc. är jag helt med på.

Visa signatur

Ride more, Work less!

Permalänk
Avstängd
Skrivet av sgtprobe:

Som en replik till Torvalds utspel så tillhör jag väl till de "få" då som inte kan få nog av CPUer/kärnor på desktop. Å andra sidan så gäller det de flesta i min umgängeskrets också. Hans frågeställningar angående nyttan av mängder av CPU kärnor på Smartphones etc. är jag helt med på.

Det är precis samma sak på majoriteten av folks datorer, majoriteten av dem har ingen användning av fler än 4 kärnor (om ens det).

Visa signatur

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

Permalänk
Medlem
Skrivet av XFTality:

I program som kan använda 6 kärnor är din CPU 6% snabbare, vilket inga program gör förutom benchmarks. Dessutom är 2 extra kärnor för bara 6% mer prestanda och inte 30-50% nästan lite löjligt.

I singel-trådade program är i5-2500k 43% snabbare, och skalar ända upp till 4 kärnor. Dessutom går min i5-2500k ända upp till 5GHz, på luft. http://valid.x86.fr/481ctv

Källa på det fetade, tack. Tror att du överskattar din 2500k något enormt. IPC'n ska vara ungefär lika mellan 1100T och 2500k. 2500k lite starkare, men inte 43%. Den siffran har du hittat på.

6 starka kärnor är underbart. Kändes framtidssäkert när jag köpte den och det stämde bra. Tyvärr är ju Phenom II det sista bra AMD gjort på väldigt länge. Skulle aldrig gå över till bulldozer. Extrem fail där.

Permalänk
Medlem
Skrivet av Rajat:

Det är precis samma sak på majoriteten av folks datorer, majoriteten av dem har ingen användning av fler än 4 kärnor (om ens det).

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

Permalänk
Medlem
Skrivet av Lessismore:

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

Ja, jag vet inte heller hur folk tänker. Kanske dom upplever det som trevligt att datorn tuggar på och skorrar när dom har för många applikationer öppna? Vissa spel upplever jag utnyttja flera kärnor riktigt bra dessutom. Far Cry 4 var en trevlig överraskning på min gamla Phenom II. Lär inte tråda bra på Intel, eller kanske detta har fixats?

I dagsläget skulle det enda vettiga vara en 5820K för min del men den är på gränsen till för dyr för min smak. Skulle ju dessutom vara tvungen att skaffa ny bräda och nya minnen då. Avvaktar i och med att allt flyter på finfint fortfarande.

Permalänk
Medlem
Skrivet av moztech:

Källa på det fetade, tack. Tror att du överskattar din 2500k något enormt. IPC'n ska vara ungefär lika mellan 1100T och 2500k. 2500k lite starkare, men inte 43%. Den siffran har du hittat på.

http://www.sweclockers.com/image/diagram/2491?k=a27879abd98a4...

6 starka kärnor är underbart. Kändes framtidssäkert när jag köpte den och det stämde bra. Tyvärr är ju Phenom II det sista bra AMD gjort på väldigt länge. Skulle aldrig gå över till bulldozer. Extrem fail där.

Det där är en index som inkluderar ett antal flertrådiga program, så IPC kan inte riktigt avgöras där. Hell, att i5:an med endast 4 kärnor ligger ovanför 1100:an säger snarare att skillnaden i IPC kan vara enorm mellan de två.

Och det är den: http://m.sweclockers.com/artikel/14579/19

(Ex. Dåligt trådade pgm: pcmark, x264 1st pass)

Visa signatur

i7-2700K 5GHz | 16GB DDR3-1600 | ASUS Maximus V Gene | GTX 980

Permalänk
Medlem
Skrivet av Teddis:

Det där är en index som inkluderar ett antal flertrådiga program, så IPC kan inte riktigt avgöras där. Hell, att i5:an med endast 4 kärnor ligger ovanför 1100:an säger snarare att skillnaden i IPC kan vara enorm mellan de två.

Och det är den: http://m.sweclockers.com/artikel/14579/19

(Ex. Dåligt trådade pgm: pcmark, x264 1st pass)

Vet inte om dåligt trådade program är hur man testar IPC. Borde man inte köra ett komprimeringsprogram med en kärna på samma frekvens?

Permalänk
Medlem
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.

Exakt! Och hur ska du göra summeringen på noll tid? Det kommer ta log2(n) tid, där n är antalet cores. Så det blir inte exakt parallellt. Och om vi blandar in verkligheten: Jag kan trivialt enkelt skriva ett program som på en core saturerar minnesbandvidden på att räkna "hej", så det kommer inte gå snabbare med två cores.

För att inte tala om om filen är större än ram, och ligger på en SSD eller nåt.

Det är exakt det ahlmdals lag säger. I princip inga problem är exakt 100% parallella. Och även problem som är det till 90%+, som det där filsökningsproblemet på en teoretisk dator med oändligt snabbt och mycket minne, planar rätt snabbt ut allt eftersom man adderar fler cores (se grafen i artikeln).

Permalänk
Medlem
Skrivet av Felix:

Men det som kanske skulle kunna göra störst skillnad är att kassera de nuvarande instruktionsuppsättningarna och tänka igenom en ny standard. Men det skulle å andra sidan bli helt omöjligt dyrt.

Och jag tvivlar på att det skulle göra så speciellt mycket skillnad vad för bytekod man matar CPU:n med. Den kan ändå köra vad den vill internt (intels x86 är en load/store arkitektur med 160+ register internt)