Skrivet av Gruarn:
Jag missförstår säkert vad det är siffrorna säger i det här testet av en Sandy Bridge, men min tolkning, givet vad du säger ovan, är att working set av någon anledning är större än L3$ resp L2$. Och givet vad vi vet om minnet i det testet verkar det ju finnas en viss prestanda att hämta.
Om utsagan att testet hade ett working-set på 4 MB hade det jag skrev varit rätt + det faktiskt hade varit ett test som kunna ge lite vettig information då primtal med Sieve of Atkin innehåller massor med villkorade hopp som i praktiken kommer vara omöjliga att förutse för branch-predictorn.
Så hade working-set varit litet nog att få plats i cache hade resultatet bl.a. varit en indikator på kostnaden för felspekulering av hopp, en egenskap som är relevant då det inte är helt ovanligt med felspekulering (bl.a. vissa spel hamnar här, finns konsol-CPUer där man specifikt optimerat för låg kostnad vid felspekulering, ett exempel är CPU i Wii U).
Men uppenbarligen är så inte fallet, har nu laddat ner, kört CPU Mark samt mätt antal minnesreferenser och hur stor del av dessa som träffar cache. Är extremt låg cache-hit rate.
Vad man gör är inte att använda många trådar för att räkna ut alla primtal upp till 32 M (tar 4 MB att hålla reda på så många tal i Sieve of Atkin), vad man i stället gör är att köra den enkeltrådade algoritmen parallella på alla trådar. Så working-set är 4 MB * antal CPU-trådar, vilket inte får plats i någon CPU-cache förutom hos L4 i 5775C (och 5775C presterar brutalt högt i Core Mark givet dess CPU-frekvens).
Det förklarar också det andra jag inte kunde begripa: hur fick man Sieve of Atkin att skala i det närmaste linjärt från 4-kärnors modeller till 6- och 8-kärnor. Svaret är att man bara kör den enkeltrådade algoritmen över allt fler CPU-trådar, vilket ger totalt värdelös information.
Fysiktestet tittade jag inte mer på än att konstaterade att 3D Mark och CPU Mark bygger på samma programvara. I 3D Mark presterar saker ju som man kan förvänta sig, inte helt oväntat då gänget där är gamla demo-programmerare.
I 3DMarks fysiktest är cache-hit-rate väldigt hög, vilket är dels väntat för den här typen av program samt ett krav för att testet faktiskt testar CPUs kapacitet att göra den typ av beräkningar som är relevant för fysiksimuleringar.
CPU Mark not so much... Även här verkar man gjort samma sak som för primtal, man har en enkeltrådad algoritm, man duplicerar sedan det enkeltrådade fallet över alla kärnor så även här lyckas man få ett totalt "working-set" som inte alls får plats i CPU-cachen.
Så i Core Mark testar fysiktestet och primtalstestet i princip samma sak: latens mot RAM... Ju fler CPU-trådar man slänger på ett sådant problem ju högre blir resultatet då latensen är rätt konstant oavsett hur många CPU-trådar som jobbar. Varje CPU-tråd har sin IPC begränsad av tiden det tar att få in data, så skalar därför rätt linjärt.
Skrivet av Oegat:
Nja, det du beskriver känner jag inte till, tänker du på det som kallas "homogenity of variances"? Det har att göra med variansen i en prediktor ska vara ungefär densamma oberoende av nivå på utfallsmåttet, alltså att molnet i en scatterplot mellan en prediktor och Y inte ska vara skevt. Detta krav bryter man ganska ofta mot, jag tror att det bara stör hypotestesterna, inte modellprediktionen. Jag tror inte att det finns något problem relaterat till att olika prediktorer har olika varians, så länge de har varians tillräckligt mycket större än 0. Nu pratar vi alltså om mellanindividvarians (variansen av de olika klockfrekvenserna för de olika processorerna) snarare än mätfelsvarians. Det senare är inget som modelleras specifikt som sagt, all felvarians klumpas ihop i modellen. Men mätfelen i dessa fall är som du skriver antagligen försumbara.
Ah, så missförstod denna. Felet som kan göras just kring frekvens är eventuellt lite skevt då turbo-frekvenser är maxvärden. Om verklig frekvens avviker så kan den då nästan bara avvika nedåt. Vilket inte helt sant då det också finns möjligheten att färre än alla kärnor används i något läge vilket då ger högre max turbo än mitt antagande.
Oavsett, mätfelen är generellt sett väldigt låga rakt igenom, så om modellen är relevant är nog även det uträknade resultatet hyfsat nära.
Skrivet av Oegat:
Men stämmer detta verkligen, skulle inte en linjär modell (utan log) göra så att steget från 2 till 4 är lika stort som steget från 4 till 6? Jag trodde det var poängen, att logaritmeringen gör att vi får veta responsen i FPS på varje fördubbling av prediktorn snarare än vid varje konstant ökning. Det kan dock vara jag som är för trött eller för matematiskt okunnig här.
Amdahl är som sagt en övre gräns, tillika en överskattning av den gränsen då antagandet är att p värdet är oberoende av antal kärnor (när det i praktiken kan påverkas svagt nedåt av ökande antal kärnor) samt man antar att den parallella delen alltid kan skalas till oändligt antal CPU-kärnor.
Om vi antar ett p värdet på 80 % så blir steget
från 1 till 2 kärnor ger max en speedup på x1,7
från 2 till 4 kärnor ger max en speedup på x1,5
från 4 till 6 kärnor ger max en speedup på x1,2
från 6 till 8 kärnor ger max en speedup på x1,1
från 4 till 8 kärnor ger max en speedup på x1,3
Med 90 % får man
från 1 till 2 kärnor ger max en speedup på x1,8
från 2 till 4 kärnor ger max en speedup på x1,7
från 4 till 6 kärnor ger max en speedup på x1,3
från 6 till 8 kärnor ger max en speedup på x1,2
från 4 till 8 kärnor ger max en speedup på x1,5
Detta är en rätt bra illustration varför vi stannat på två kärnor för bärbara och fyra kärnor på skrivbordet. Blir sedan snabbt väldigt mycket dimishing returns, ett p värde på 90 % eller högre existerar nästan bara för problem som är triviala att köra på massor med kärnor (typ ~90 % av alla benchmarks och ~10 % av alla desktop-program).
Logaritmen av kärnor mot speedup är betydligt mycket mer än rät linje än kärnor mot speedup, men blir allt mer fel ju närmare p kommer 1,0. Vid p=1,0 är det ju en rät linje när man plottar kärnor mot speedup, vid 0,9 är det inte i närheten att vara en rät linje.
Tar man ett problem som är trivialt att köra på många kärnor har dessa program kunnat utnyttja tusentals CPU-kärnor under väldigt lång tid.
Tar man däremot ett problem som inte är trivialt att köra på många kärnor men som har inneboende parallellism så finns en del hinder. Dels är det i alla fall dubbelt så dyrt att utveckla den typen av program så de kan dra nytta av många kärnor, många hävdar att dubbelt så dyrt är en grov underskattning.
Problemet att skala blir också exponentiellt svårare ju närmare man kommer vad som är teoretiskt möjligt. Spel verkar idag ligga på 80 % eller lägre, finns några enstaka exempel (Ashes of the Singularity) som ligger mellan 80-90 % Man lär nog lura sig själv om man tror att spel inom överskådlig tid kommer nå över 90 %, kanske inte ens är praktiskt möjligt att nå det om man så hade obegränsad FoU-budget.
Skrivet av Enigma:
Det är exakt just prime och fysiktestet som ökar stort i poäng med RAM hastighet/latens. Det finns extensiva tester på detta som verifierar det också:
http://i.cubeupload.com/XVMD0c.png
Börjar bli lite trött på alla lagar och teori då dom alltid inte går att applicera mot tester. Speciellt inte när man ska jämföra en arkitektur mot en annan som man inte vet allt om än (och ändå vet vi att Zen skiljer sig radikalt på många punkter mot Core). Bara den enorma skillnad som kan uppstå mellan syntetiska tester versus praktiska tester bekräftar det. Sen får man inte glömma att det är 2 helt olika arkitekturer som kommer bete sig olika med olika IPC beroende på tillämpning. Därför är det också alltför generaliserade antaganden ganska ofta.
En ökning på över 27% på primetal respektive 16% på fysiktestet med bara varierande frekvens/timings på RAM...
Har också testats på Ivy och Skylake med samma resultat. Zen hade för övrigt i dessa "läckta tester" över 70ns latens och kördes tydligen på ett A320 utan turbo. 70ns är definitivt något som är allvarligt fel/buggar/bios.
Har skrivet var mitt antagande brast och har nu mätt cache-hit-rate och minnesreferenser per tidsenhet i just den benchmarken. Men Jesus, det är ett diskussionsforum och tror det finns en hel del andra inlägg här som inte mäter och testar var enda gissning de gör innan de postar.
Detta gång hade jag totalt fel. Har absolut inga problem att erkänna det, framförallt inte när orsaken är att min gissning råkar bli totalt fel då de som skrivit CoreMark överhuvudtaget inte verkar veta vad de håller på med. I princip noll "riktiga" program uppför sig på det sättet, gäller även andra benchmarks (i 3D Mark och CPU-Z testet är RAM timings helt irrelevant). Här har du ett test som tittar just på effekten av RAM-timings, ett axplock
Varför nagelfar du inte de som jämför IPC mellan Ryzen 1700X och andra modeller, då den modellen har det smått magiska XFR så vet vi faktiskt inte alls vilken frekvens den kör på. Tänk om man kyler med LN2, kanske den går på 6,0 GHz
De skattningar jag gjorde på IPC-ökning i spel var lite bättre uppbackade, de verkar också stämma på andra håll. T.ex. så får man 14 % IPC ökning mellan HSW till SLK i Eurogamers 7700K test (där man var snälla nog att köra en rad CPUer klockade till 4,5 GHz). Notera 21 % ökning från IPC i AoS. Tyvärr har vi fortfarande noll läckta resultat som säger något om hur det kommer se ut där skalära heltal är det kritiska (vilket i praktiken är det klart viktigaste, är därför CPU-tillverkare historiskt lagt enorma resurser på att "knäcka" SPECInt).
Och om du är så har så ömmande tår kring spekulation... Det sista du skriver om att det är allvarliga fel/buggar/bios? Råkar ha en laptop där latens mot räknat i nanosekunder är nästan exakt samma som DDR4 2400 CL17 (vilket Ryzen ska ha använt), min dator har DDR3 1600 CL11. Detta är resultaten från den datorn i Core Mark, notera latensmätningen!
CL11 med 1600 MT (800 MHz) ger en teoretisk latens på 11/800 = 13.8 ns
CL17 med 2400 MT (1200 MHz) ger en teoretisk latens på 17/1200 = 14.2 ns
Om resultatet i Mem Mark är en effekt av allvariga fel/buggar/bios så borde min dator uppvisa väsenligt mycket bättre resultat i latens testet hos Memory Mark, eller hur? Tja, fick 57 där vilket är rätt nära Ryzen. Får däremot rätt bra resultat i Core Mark givet att det handlar om en laptop med max turbo på 2,8 GHz när alla kärnor jobbar och 3,1 GHz single core (borde vara 3,2 men Windows visar aldrig högre än 3,1).
Edit: resultatet ovan är alltså från en laptop med i7-4702MQ, d.v.s. fyrkärnig Haswell med 37 W TDP, specifikt en Dell XPS15.
Det är ett diskussionsforum, vissa har jobb att sköta så allt kan inte valideras till 100 % innan det postas. Att hamna totalt "in the weeds" för ett fall som totalt avviker från andra och för vad man rimligen kan förvänta sig skulle jag säga är ett rätt bra facit givet vad som generellt sett postas i en spekulationstråd.
Men peka gärna ut vilka andra teorier som varit fel. Lagarna antar jag är Amdahl, om du har bevis för att den på något sätt är fel tror jag det är en hel datorvärld som vill höra dina upptäckter!