Permalänk
Medlem

Har 8+ multi core ett problem?

Okunnig undran..
När de nu går mot flerkärnigt och mindre mot enstaka core hastighet, så måste det ju gå att hacka upp den enskilda överbelastningen dynamiskt och enkelt på fler kärnor efter behov, går det ens?

(Om inte så borde det ju bli allt mer problematiskt/(omöjligt) ju fler kärnor man måste förlita sej på).

Permalänk
Medlem

Rätta mig om jag har fel, men har inte nyare processorer funktion för detta? Så att det alltså inte sker på mjukvarunivå utan att belastningen sprids ut med hjälp av hårdvaran.

Visa signatur

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com

Permalänk
Medlem

Det är operativsystemet som fördelar processer och trådar på de olika processorkärnorna. Att mjuk- eller hårdvarumässigt dela upp ett program ytterligare är dock väldigt svårt eller omöjligt, så det är bara program som är skrivna för att dela upp sina beräkningar i flera trådar som kan dra nytta av en flerkärning miljö.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Phod
Det är operativsystemet som fördelar processer och trådar på de olika processorkärnorna. Att mjuk- eller hårdvarumässigt dela upp ett program ytterligare är dock väldigt svårt eller omöjligt, så det är bara program som är skrivna för att dela upp sina beräkningar i flera trådar som kan dra nytta av en flerkärning miljö.

Då hade jag fel med andra ord! Jag hade för mig att jag läste detta för ett tag sedan men har antagligen blandat ihop det med något annat. Rent tekniskt så är det intressant varför det inte är möjligt att fördela belastningen på hårdvarunivå, någon som har lust att djupgräva?

Visa signatur

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com

Permalänk
Avstängd

Vissa problem går inte att fördela på flera kärnor, går inte att göra parallellt.

Det är som om att en kock ska laga såsen utav köttbuljongen. Han måste vänta tills köttet koka klart, det går inte att göra parallellt.

Vissa saker går att göra paralllellt, andra går inte. Om kan göra saker parallellt, så är det möjligt att dela ut det på alla kärnor. Men detta är ett svårt problem och många har försökt lösa detta på ett bra sätt utan att lyckas. T.ex. sägs att Windows och Linux har problem med detta, medan t.ex. Solaris sägs göra detta bra. Ju flera cpuer, desta snabbare går det på Solaris, men det behöver inte bli vidare mycket effektivare på Windows/Linux. Man säger att Solaris skalar bra, och Windows/Linux skalar dåligt.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av save
Då hade jag fel med andra ord! Jag hade för mig att jag läste detta för ett tag sedan men har antagligen blandat ihop det med något annat. Rent tekniskt så är det intressant varför det inte är möjligt att fördela belastningen på hårdvarunivå, någon som har lust att djupgräva?

Jag tror du tänker på instruction level parallelism, som används för att optimera exekveringen av instruktioner i en enskild kärna/CPU. Men som saddam är inne på så är det svårt eller omöjligt att dela upp en given process utan att introducera race conditions, deadlocks o.s.v.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem

Ok tack då... :s
MAO maxbelastade kärnor blir ett större programmerings-problem framöver som ja befarade då.
Får hoppas det löses, och om inte på annat vis, så med mera hz (swecl. grafen 100 Ghz).

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av saddam
Vissa problem går inte att fördela på flera kärnor, går inte att göra parallellt.

Det är som om att en kock ska laga såsen utav köttbuljongen. Han måste vänta tills köttet koka klart, det går inte att göra parallellt.

Vissa saker går att göra paralllellt, andra går inte. Om kan göra saker parallellt, så är det möjligt att dela ut det på alla kärnor. Men detta är ett svårt problem och många har försökt lösa detta på ett bra sätt utan att lyckas. T.ex. sägs att Windows och Linux har problem med detta, medan t.ex. Solaris sägs göra detta bra. Ju flera cpuer, desta snabbare går det på Solaris, men det behöver inte bli vidare mycket effektivare på Windows/Linux. Man säger att Solaris skalar bra, och Windows/Linux skalar dåligt.

Citat:

Ursprungligen inskrivet av Phod
Jag tror du tänker på instruction level parallelism, som används för att optimera exekveringen av instruktioner i en enskild kärna/CPU. Men som saddam är inne på så är det svårt eller omöjligt att dela upp en given process utan att introducera race conditions, deadlocks o.s.v.

Tack, bra liknelse saddam! Ja det stämmer Phod, hade fått det lite om bakfoten. Låter som att det skulle kunna lösas med någon form av "cuepoints" från operativet till processor där exekverad kod kan cachas upp och skickas ut i rätt ordning, eller är jag helt ute och cyklar med de tankebanorna? Man är ju ingen kärnfysiker direkt här känner jag.

Visa signatur

i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com

Permalänk
Medlem

I dagsläget så får programmerarna parallelisera sin kod men fler och fler metoder för att automatiskt göra detta i kompilatorer görs.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av save
Tack, bra liknelse saddam! Ja det stämmer Phod, hade fått det lite om bakfoten. Låter som att det skulle kunna lösas med någon form av "cuepoints" från operativet till processor där exekverad kod kan cachas upp och skickas ut i rätt ordning, eller är jag helt ute och cyklar med de tankebanorna? Man är ju ingen kärnfysiker direkt här känner jag.

Processorer håller en väldigt liten del kod i minnet sett till hur mycket kod som ett normalt program består av. Därför är det svårt att implementera någon slags övergripande parallelisering där, även med hjälp av operativsystemet.

Som iXam nämner så kan kompilatorer hjälpa till att parallelisera kod, men det finns mig veterligen ingenting idag som kommer i närheten av att till fullo kan parallelisera ett givet program helt automatiskt.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Phod
Som iXam nämner så kan kompilatorer hjälpa till att parallelisera kod, men det finns mig veterligen ingenting idag som kommer i närheten av att till fullo kan parallelisera ett givet program helt automatiskt.

.... om programmet inte är skrivet med något språk som det per automatik är superlätt att parallelisera; t.ex. funktionella sådana.

ps. Sedan att sådana språk i vanliga fall är mycket långsammare "core-för-core" än gamla hederliga imperativa språk är en annan femma.

Visa signatur

"Nothing is impossible because impossible itself says I M Possible..."

Permalänk

Jag tror att det finns någon video där AMD använder OpenCL till att skifta mellan att använda flera olika trådar på processorn (upp till 24 kärnor eller vad det var) till att använda grafikkortet. (Inte helt säker på att de använde grafikkortet men OpenCL stödjer ju det först och främst).