Keresés

Új hozzászólás Aktív témák

  • dezz

    nagyúr

    válasz gbors #346 üzenetére

    Valóban? Hát tudd meg, nekem már hamarabb is elegem lett a te nagyképű stílusodból, csak nem tettem így szóvá, hanem csak óvatosan jeleztem, hogy talán egy kicsit másképp kellene - szerintem jogosan. Kicsit nevetséges, hogy ezek után még te jössz ezzel.

    [Szerkesztve]

  • ollie

    MODERÁTOR

    válasz gbors #346 üzenetére

    Pedig a ti beszélgetésetek volt a legértelmesebb a topicban. Vicc nélkűl.

  • dezz

    nagyúr

    válasz gbors #340 üzenetére

    ''Csak a fene se tudta előre, hogy az melyik.''
    Előre? Ha rendesen elolvasnád, amit a másik ír, pontosan láthatnád. Utána mondjuk érdemben reagálnál az egyes dolgokra, gyorsabb lehetne az egész eszmecsere.

    ''Nem, ugyanis akkor is a teljes rendszer / másodperc átbocsátóképessége érdekelt, és ebből a szempontból mindegy, hogy 4 SP csinál valamit 1 ciklus alatt, vagy 1 SP 4 ciklus alatt (legalábbis ha van min. 4 SP-d). Nemde?''
    Nyilván (legalábbis elvileg). De attól még magához képest lassabb lesz több elemi művelet/egész művelet esetén a G80. Az R600-nak meg az 5 művelet egy időben fekszik a legjobban.

    ''S ez b****a az én csőrömet. Bedugul a cső időnként, vagy mi van?''
    Mittudomén. Ennek kiderítéséhez kicsit több információra lenne szükség.

    ''Azaz ezek a SIMD blokkok is tudnak külön thread-en dolgozni, mint a MAD blokkok.''
    Nem hinném, hogy más-más threaden dolgozhatnának. Már csak azért sem, mert egy közös scheduler van 1-1 8-way SIMD MAD párra + 8-way SIMD spec. funct. párra.

    ''G80: a special instructiont 1 SI feldolgozó 4 ciklus alatt végrehajtja, ez idő alatt egy MAD SP végrehajtja a 4 MAD utasítást (lehet, hogy nem pont ez a szervezés, de ez most mindegy). Azaz 1 SI feldolgozó és 1 MAD SP együtt 4 ciklus alatt 5 műveletet hajt végre, ez átlagosan 1,25 művelet / ciklus, mindkettő feldolgozóból van 128 db, 1350MHz-en ketyegnek. Ez összesen 216 milliárd op / sec. Vagy hol a hiba?''
    Talán ott, hogy nem 4 MAD-ról volt szó, plusz egy spec. funct.-ról, hanem: 1. MUL - ezt a MAD egység csinálja; 2. MAD - ezt is; 3. MIN, 4. MAX, 5. SQRT - lehetséges, hogy G80-on mind a 3 spec. function...

    [Szerkesztve]

  • dezz

    nagyúr

    válasz gbors #334 üzenetére

    ''Na látom már a fényt az alagút végén, csak érdemes volt megírni a kisregényt Majd elteszem az utókornak...''
    A nagyrészt már tudott információ mely részét volt érdemes szájbarágósan újraiterálni?

    ''Na igen, az számomra sem volt titok hogy a 4 SP-ciklust igénybe vevő float4 MAD utasításból miért 1/4 annyit hajt végre a G80 1 másodperc alatt, mint a float1 MAD-ból''
    Akkor sem volt titok, amikor pl. ezt kérdezted: ''Önmagában miért rossz a sorosítás?'' ? ;)
    A 28.3 vs. 34.05-öt én nem nevezném ''jelentős esés''-nek... (Elkülönítve a 80%-os problémát.) Szemben a 34.05 vs. 136.2-tel, aminek viszont tudjuk az okát.

    ''Én azt feszegetem, hogy hogy a jó égbe' jön ki a 28.3, amikor az elméleti maximum 43.2, de még az első tesztnél tapasztalt rejtélyes 80%-os limit mellett is 34.05-nek kellene lenni. Még az utóbbi is 20% különbség, ami szerintem túl sok ahhoz, hogy elhanyagolhassuk - ennek tuti van valami kézzelfogható oka.''
    Nyilván. Olyan, mintha a float4 valami miatt 4 helyett 5 ciklus alatt zajlana le. 136.2/5=27.24...

    ''Szerinted? Ezen nem fog múlni, felőlem lehet a nagy a tömb, a kicsi meg a blokk.
    Oké. De azt ugye látod, hogy nem az számít, én hogy használom, hanem hogy a cégek hogy teszik.

    ''A special instruction sztori
    Ooops. Csak hogy ne maradjak meglepetés nélkül. Még egyszer áttúrtam a Beyond3D-s architektúra ábrát, és valóban ott sunnyog 128db interpolator / special instruction egység (hívjuk SI-nek) - szerintük ugyanúgy van szervezve, mint a MAD egységek (8 tömb, mindegyikben 2 blokk, minden blokkban 8 egység).''

    Ebben most hol is van a meglepetés, azok után, hogy én is pont ezt írtam?

    ''Viszont ez több kérdést vet fel, mint amit megválaszol. A következőket szűröm le belőle:
    - Ha a MAD és az SI SIMD-ek párhuzamosan tudnak működni (és miért ne tudnának), akkor az nekem azt jelenti, hogy a 172.8 milliárd op / sec mellé kapunk ''ingyen'' special instruction kapacitást, nevezetesen 128 * 1,35Ghz / 4 = 43.2 milliárd op / sec mennyiségben.''

    Számomra is ezt jelenti. Ezzel részben magyarázható is az itt kijött magasabb eredmény a vártnál, mint már említettem.

    ''- Ez egyben azt is jelenti, hogy a teljes átbocsátó képesség szempontjából ugyanaz a best case, mint az R600-nál: 4 MAD-ra jut egy SI. Összesen 216 milliárd op / sec.''
    Nem, mivel ez R600-on 1 ciklus, G80-on meg 4.

    ''- A fentiekből elég jól látszik, hogy nem értem, hogy miért osztottál 4-gyel''
    Lásd eggyel feljebb.

    ''ill. azt sem, hogy miért a 172.8-at osztottad''
    Csak próbáltam közelíteni egymáshoz a két eredményt, és gondoltam, talán itt nem játszik be az a 80%-os dolog. De oké, legyünk konzekvensek, számoljunk végig a 136.2-vel.

    ''- És hogy legyen egy kis hab is a tortán: a tesztben megmérték a serial SQRT teljesítményt is, ami 21 milliárd op / sec lett - kicsit kevesebb, mint a fentebb számolt elméleti határ fele''
    Tényleg furcsa ez is. A 136.2-ből kiindulva ~6.5 ciklusra jön ki.

  • dezz

    nagyúr

    válasz gbors #330 üzenetére

    Ejj. Felesleges volt ilyen szájbarágósan leírnod, amit már rég tudunk. :( Az első bekezdés helyett meg elég lett volna ennyi: G80-nál 2-2 SIMD blokk párosával hajt végre egy threadet. (Ezt tényleg nem tudtam, hogy 1 threaden dolgoznak együtt.)

    ''A float2+ műveletsorokon jelentősen esik a teljesítménye - ennek okát próbáljuk felderíteni''
    Tök egyszerű, és már le is írtam (2x): A G80-nak több ciklusra van szükség a feladat elvégzéséhez (egyébként inkább float3+). Mint már te magad is leírtad, egy-egy floatX műveletet egy műveletnek számolnak. Még jó... Ha az egyedi MAD-okat, vagy más nem spec. műveleteket számolnák, mindig egyforma lenne az eredmény G80 esetén (adott floatX esetén), miközben az adott feladat elvégzési ideje más és más. Értve? ;)

    ''egy SIMD blokkot (itt nincs egy blokkon belül két SIMD tömb, mint a G80-nál).''
    Szándékosan használod éppen ellenkező módon a két fogalmat (tömb, blokk), mint én? Az AMD-s slide-okon a 16db 5-way s.s. SP páros egy arrayt (tömböt) alkotnak, azaz a nagy egység a tömb, és a kicsit nevezhetjük blokknak. OK?

    ''Eddig OK? Remélem ;)''
    Ha nem lenne OK, akkor mégis hogy írtam volna meg a #286-os, #301-es, stb. hozzászólásokat?

    Float MAD serial, 1. probléma: Ez egyelőre nyitott kérdés marad. (Hacsak nem az van mégis, amit írtam.)

    Float4 MAD parallel: Maradjunk a 2x2 ciklusnál (G80). Viszont, mint már írtam, és olvashatod is a tesztben, 2db, float4-en végzett MAD tesz itt ki egy ''instruction''-t, amihez a G80-nak 2x2=4 ciklusra van szüksége. Az első tesztben kijött 136.2-ot (ami az elméleti max. 78.8%-a ugye, de most ezt tegyük félre, az 1. problémához tartozik) elosztva 4-gyel 34.05-ös számot kapunk, ami már elég közel van a tesztben kijött 28.3-hoz. [A #304-esben a flops-ból indultam ki, ami persze hibás, mert egy MAD 2 flops. De jónak tűnt, mert 1x8-as blokkal számoltam.]

    Float 5-instruction issue, 3. probléma (G80 esete): Nem tudom, tudod-e, hogy a spec. funct. műveletek számára egy külön 8-way SIMD egység van, ami párhuzamosan működhet az alap SIMD egységgel. Azt viszont nem tudom, hogy a SIMD párosok 1-1 tagja egyforma utasítást hajt-e végre, vagy sem (tehát együtt egy 16-way SIMD-ként szerepelnek-e, vagy 2 független[ebb] 8-way SIMD-ként). Először számoljunk az első esettel: 4 különböző nem-spec. utasítás -> 4 ciklus, 5. spec. művelet -> 4 ciklus (párhuzamosan); egyszerre 16 pixelre, x8 cluster --> 172.8 / 4 = 43.2. (Ugye világos, miért osztok itt 4-gyel?) Teszt: 56.0. Valami még nem stimmel, de legalább közelítünk.

  • dezz

    nagyúr

    válasz gbors #325 üzenetére

    ''Akkor ez mostantól nem off? :D''
    Talán egy picit az. Bár szerintem nem sokkal jobban, mint hogy hogy fut saját gépen, mitől fagy, melyik driverrel megy, stb. Meg aztán demokrácia van, és állítólag a többséget zavarja a ''túl szakmai'' szöveg. (K10 topikban is szóvá lett téve, hogy miért vesézzük ki túl mélyen a K10 újításait. :P ) Halványabban talán kevésbé zavaró. :D

    ''Leírom, bár nagyon egyszerű - ismét előjöttek némi alapfeltevésbeli különbségek :D''
    Először is talán próbáljuk meg értelmezni a teszt számait. Nyilvánvalóan nem az összesen végrehajtott egyedi műveletek számát tartalmazza a grafikon, hanem azt elosztja az egész feladat végrehajtási idejével, mivel az a mérvadó. Így számolva nagyjából azokat a számokat kapjuk.

    ''Float MAD: 128 művelet / ciklus * 1.35GHz = 172.8 művelet / sec''
    Na ja, ez világos. (Csak írd hozzá: serial, mert az R600-nál az alapvetően fontos tényező.)

    ''Innentől, ha nincs benne special instruction, akkor a művelet / sec ugyanaz, mint float MAD esetében.''
    Na ja, de ha nem számolnák bele a feladatvégrehajtási időt az eredménybe, semmit sem mondana arról, hogy maga a feladat milyen hatékonységgal van végrehajtva. ;)
    (Vagy úgy is nézhetjük, hogy az 5-ös utasításcsoportot egy műveletnek vesszük - bár láttam, ez neked kevésbé tetszik.)

    ''Btw. a tesztben is így számoltak.''
    Te ugyanazt a számot látod ott, mint a float MAD serialnál, mert én nem. :)

    ''A float4 MAD viszont egy művelet, még akkor is, ha 4 SP 1 órajelnyi munkája kell hozzá.''
    A teszt egynek is veszi.

    ''Ezért: (128 / 4) = 32 művelet / ciklus * 1.35GHz = 43.2 művelet / sec. Ha vannak a ''büntetőciklusok'', akkor a fele. Azért 2-ről és 4-ről beszélek, mert szerintem 2 ciklus alatt hajtja végre két SP az 1 float4 műveletet, nem 4 ciklus alatt 1.''
    Milyen 2 SP? A G80 egy 8-way SIMD blokkja egyféle műveletet tud egyszerre nem kettőt.

    ''Én is kételkedem egyébként a ciklusvesztésben, de jobb magyarázatot egyszerűen nem tudok elképzelni.''
    Akkor esetleg olvasd el, amit írok. :)

    ''Azt nemigen hiszem, hogy a G80 fixen kiosztaná a SP-ket ilyen / olyan feladatokra - már csak azért sem, mert a Beyond3D-sek állításuk szerint könnyen mérni tudták a maximális kapacitást.''
    Jó, akkor mivel magyarázod a vertexes tesztet, és a pixelesben kijövő 80%-os eredményt? Úgy tűnik, bizonyos esetekben bekapcsol ez a 80/20 arány. (A vertexes teszttel kapcsolatban fel is vetik, hogy a G80 abban láthatóan nem teljes kapacitásával vesz részt.)

    ''Önmagában miért rossz a sorosítás?''
    Hát mert több ciklusra van szükség egy helyett.

    [Szerkesztve]

  • dezz

    nagyúr

    válasz gbors #311 üzenetére

    Válaszolnál érdemben a #304-es fennmaradó kérdéseire, a #301 figyelembevételével?
    Azaz, le kellene írnod, hogy jönnek ki neked ezek a számok...
    Pl. hogy lenne az 5-issue 172.8, akár 5 ciklusosan? Amikor az a szám best case float MAD serialnál tud kijönni? Elfelejtetted 5-tel osztani?
    A float4 MAD-os számok meg nagyon-nagyon alacsonyak, főleg a 2 v. 4 cikushoz képest, ami mellesleg 8 ciklus kell legyen.

    ''Cserebere'': kizártnak tartom, hogy minden egyes float2+ operandus miatt +1 ciklusra lenne szükség. CPU thread-váltásnál le kell cserélni a regisztetek tartalmát, azt tuti megoldották, hogy itt utasításonként (float2+) ne legyen erre szükség, tovább rontva a sorosítás miatti helyzetet. Gondolom, a 2.-x. utasítás egy index hozzáadásával hajtódik végre, ami megcímzi a vector megfelelő elemét, vagy ilyesmi.

    ''80%'': ezen számok, és a vertex-shaderes tesztek alapján úgy tűnik, a G80, v. a driver nem utal ki 100% kapacitást semmelyik shader-típusnak, sőt, mintha le lenne fixálva egy 80/20%-os arány a PS és VS között (a GS nem tudom, hogy ékelődik be).

    venember83: szerintem azért annyira nem off, mivel a cikk elsősorban nem a demóról szól, hanem a cirkuszról, ill. hogy indokolt-e, lehet-e valamilyen oka, hogy ilyen lassan fut R600-on.

  • válasz gbors #311 üzenetére

    No akkor most a táblázat még 1x:

    --------------------------------------------
    _________________________|Ideal| 79% |Teszt
    --------------------------------------------
    float MAD _______________|172.8|136.2|136.2
    --------------------------------------------
    5-issue (ha 5 ciklus) ___|172.8|136.2|
    -------------------------------------|
    5-issue (ha 8 ciklus) ___|108.0| 85.1| 56.0
    -------------------------------------|
    5-issue (ha 13 ciklus) __| 66.5| 52.4|
    --------------------------------------------
    float4 MAD (ha 2 ciklus) | 43.2| 34.1|
    -------------------------------------|
    float4 MAD (ha 4 ciklus) | 21.6| 17.0| 28.3
    --------------------------------------------

  • dezz

    nagyúr

    válasz gbors #302 üzenetére

    ''ott figyel a végén egy SQRT - tehát a sorozat nem 5 ciklus, hanem 8.''
    Mármint G80-on, ugyebár...? (Szal ott 4 ciklus egy SQRT? Hol találtál erre vonatkozó adatot?)

    ''Ha műveletenként a cserebere overhead elvisz +1 ciklust, akkor az összesen 13 ciklus az 5 műveletre''
    Leírnád egy mondatban, milyen csereberéről van szó?

    ''így már a float MAD serial és a float 5-issue eredménye ugyanarra hajaz.''
    Már miért? Inkább úgy gondolnám, így még nagyobb a különbség: 1 cikus vs. 5 ciklus helyett 1 ciklus vs. 13(?) ciklus.

    ''De akkor meg a float4 MAD túl gyors - ilyen alapon az csak 17 lenne''
    Na nézzük, tehát 2db float4 MAD; G80-on 8 ciklus; 345.6/8=43.2 elméleti max.
    Neked hogy jött ki a 17?

  • dezz

    nagyúr

    válasz gbors #297 üzenetére

    Hát elmélkedjünk.

    ''float MAD serial''
    G80: ciklusonként 1 MAD, 2x8 pixelre/blokk, x8 blokk --> 128 MAD/ciklus
    R600: ciklusonként 1 MAD / 5-way superscalar blokk (többi 4 számoló inaktív), x2 szál, x8 pixel, x4 tömb --> 64 MAD/ciklus

    ''float 5-instructions issue''
    G80: 1. ciklus A, 2. ciklus B, 3. ciklus C, 4. ciklus D, 5. ciklus E művelet, 2x8 pixelre/blokk, x8 blokk --> 128 művelet/ciklus, de 5 ciklus kell az egészhez
    R600: ciklusonként 5 különféle mat. művelet, x2 szál, x8 pixel, x4 tömb -> 320 művelet/ciklus, és 1 ciklus alatt megvan

    (Itt a G80 5x több pixelt dolgoz fel, csakhogy 5x kell beolvasnia ugyanazt, az adott műveletsorhoz.)

    Valami ilyesmi.

  • Abu85

    HÁZIGAZDA

    válasz gbors #297 üzenetére

    ''Lehet, hogy a G80 nem tud thread-et cserélni ciklusvesztés nélkül?''
    Ciklusvesztés nélkül nem, de ez eddig is így volt. A beyond3D fórumán olvastam valahol.

    [Szerkesztve]

  • Abu85

    HÁZIGAZDA

    válasz gbors #273 üzenetére

    Én ezt másképp látom, az NV3x vs R3xx-at egyértelműen megnyerte az ATi. De az NV4x vs R4xx, szvsz az NV4x nyerte. Nem a teljesítményt nézem, hanem az egész rendszer összképét. Az NV40 sokkal fejlettebb volt az R4xx-nél. A G7x vs R5xx szívem szerint döntetlenre hoznám. Bár ha választani kell akkor G7x, mert az tudta a VTF-et.

  • dezz

    nagyúr

    válasz gbors #241 üzenetére

    ''Az 5-dimenziós shader teszt (#238-ban) finoman szólva sportszerűtlen''
    Nem ''sportszerűtlennek'' nevezném, egyszerűen csak a worst case az egyik oldalon, mint ahogy a full dependens ''float MAD serial'' meg a másikon. Már csak az a kérdés, egy áltagos kódban mennyi a végrehajtást erősen negatívan befolyásoló dependencia-sűrítmény, illetve az ilyen kevert utasítástípusok egymás után, kevéssé dependensen. (Persze attól is függ, ki hogy írja... Úgy tűnik, adottak a feltételek ahhoz, hogy egyes programok a G80-on fussanak jobban, mások meg az R600-on.)

    ''hiába innovatívabb az ATI, nem igazán tudják, hol a határ - az nVidia jobb pozícionálása (mind piaci, mind műszaki!) korábban csak pénzügyi előnyt hozott''
    Ezzel pontosan mire célzol?

    ''most az ATI annyira előreszaladt, hogy teljesítményben is sikerült a falnak menniük.''
    Hát ezzel? Órajelben v. hőtermelésben el tudok képzelni falnak menést, de teljesítményben hogyan?

    ''Gondolom, az AMD-nél most külön részleg alakult arra, hogy a shaderprogramozókhoz imádkozzanak - ha elkezdenek az engine-ekben megjelenni a jól parallelizálható pixel shaderek, akkor van remény arra, hogy az év második felében (vagy inkább 4. negyedében) kijöjjön az R600 brutális lóereje.''
    Az R600-nak jobban fekvő kevert kód alkalmazásának ösztönzésére gondolsz?

    ''Ja és a G80 extra MUL-ja. A Beyond3D-sek megtalálták, de olyan komplikált, hogy első olvasásra egy az egyben átsiklottam felette''
    Hmm, akkor én is ''átsiklottam felette'' (túlzottan nem is kerestem :) ), de akkor hol is van?

    ''Nincs igazán jelentősége, jelenleg csak egyes speciális esetekben lehet használni - egy pixel shaderen nem segít.''
    Hát, végülis előfordulhat, hogy egy MAD után (ami eleve tartalmaz egy MUL-t) jön még egy MUL, ugyanazzal/-okkal az operandussal/-okkal. Vagy összetettebb eset kell hozzá?

    Abu85: hát, néha csak ilyenkor van időm nyugodtan olvasgatni.

    [Szerkesztve]

  • dezz

    nagyúr

    válasz gbors #227 üzenetére

    No, akkor tehát azt a 16 threadet szabadítanak rá egy SIMD tömbre. De akkor egészen véletlenül az a 16 thread nem ikertestvérek? Ezt indikálná a SIMD tömb elnevezés. (Tehát ugyanazok a műveletek, csak különböző elemeire egy pixel v. egyéb halmaznak.)

    Akkor viszont mitől lesz ez VLIW? Egy utasítás, és sok operandus? A G80 is 8 pixelre, stb. hajtja végre ugyanazt az utasítást egy blokkjában, de ott nincs VLIW-zés, egyszerűen a következő 8 elemet veszi, vagy ilyesmi. Akkor ide minek?

    #229: na igen, valamivel gyengébb ''MAD teljesítményben'' (8*4*500=16000 vs. 16*900=14400). Viszont, utóbbinál a kihasználtság mindig 100%, és ha hasonló a nagytestvérhez, a 16 MAD egység mellett van ott x egyéb (spec. funct.+stb.) egység is. (Meg rebesgetnek még valami plusz MUL-t is, csak még senki sem találta meg.) Bár még azzal is talán max. egálban vannak. Mindegy, a 7300 még nem a legrosszabb DX9 gamer kártya. A 8500-assal viszont szerintem eleve nem sokan akarnak majd DX10-ben játszani.

    [Szerkesztve]

  • rudi

    nagyúr

    válasz gbors #199 üzenetére

    Gondlom, nem véletlenül gyúr az NV float2-re, hiszen jelenleg ez a meghatározó utasításformátum a pixel shadereknél, és szerinem az árnyalási képletek jellege miatt ez is marad. Persze VS és GS-nélmár a float4 a gyakoribb, csak nagy kérdés, hogy egy modern kódban ezek a shaderek milyen arányban lesznek.

    Ezt a ciklusos dolgot hogy érted az R600 kapcsán? Nekem elég bizarrnak tűnik.

Új hozzászólás Aktív témák

Hirdetés