Názor k článku Nvidia má vlastní superpočítač. SaturnV je prý nejzelenější ve výkonu na 1 watt od jojioo - " V řadě jiných výpočetních benchmarků mají ale...

  • 17. 11. 2016 17:43

    jojioo (neregistrovaný)

    " V řadě jiných výpočetních benchmarků mají ale superpočítače s GPU mnohem větší propad reálného využitelného výkonu, než ta s CPU (k nimž spíše patří nový Xeon Phi)."

    Hmm.: https://www.nextplatform.com/wp-content/uploads/2016/11/Phycode2.jpg


    +upozorňujem na FMA, takže pokiaľ sa kód orientuje len na sčítanie alebo len na násobenie, tak je nutné hodnoty v grafe vydeliť dvoma.

    Teda je nutné dodržať presný počet aktívnych vlákien (čo je v systémoch s nepredvídateľnými prístupmi do zdieľanej pamäte problém), presný počet inštrukcií v nich (pravdepodobne dĺžka pipeline - inštrukcie na generovanie adries...) a ten správny typ inštrukcií. Vzhľadom nato sú grafiky absolútny luxus (hardvérový sheduler, rýchla pamäť).


    A mimochodom, aby sa to nezabudlo. :D

    "While the invention has been described with respect to specific embodiments, one skilled in the art will recognize that numerous modifications are possible. For instance, out-of-order instruction issue within a thread may be implemented if desired, e.g., by adapting out-of-order issue techniques from general-purpose processors that allow issue of any ready instruction within an “active window.” For instance, two or more instructions per thread could be loaded into buffer 510 of issuer 506 of FIG. 5. If, in some clock cycle, the oldest instruction for the thread with highest priority cannot be issued (e.g., because the destination functional unit is not ready or because an operand has not yet been collected), a newer instruction for that thread that can be issued might be selected instead."

    Z patentov Nvidie, kto o tom chce vedieť viac, ten to bez problémov nájde. Na mňa to je písané príliš vyčerpávajúcim spôsobom. :D

    AMD v tom bude mať väčší neporiadok kvôli veciam z procesorov, ale napríklad v manuáloch sú označené inštrukcie, ktoré nemajú ošetrené vracanie hodnôt mimo poradia.

    Ale vlastne to je celkom logické. V superskalárnych strojoch s rôznymi typmi inštrukcií (vykonávanými na rôznych jednotkách) sa musí stávať, že zatiaľ čo queue k jednej jednotke ešte čaká, tak sa objaví mladšia inštrukcia v inej v tej dobe voľnej queue.

    Napríklad kód:
    Add (latencia 1 clk)
    Load (5 clk)
    Store (5 clk)
    Sub (1 clk)

    Takže v dobe keď Sub príde na rad bude v L/S queue ešte stále inštrukcia Store, ktorá bude musieť čakať, aj keď ALU queue už bude voľná.

    Teraz je otázka, je lepšie obetovať xyz tranzistorov na to, aby sa takým prípadom zabránilo (aj za cenu poklesu výkonu), alebo bude lepšie pripustiť, že sa také situácie stávajú, a ošetriť to v neskoršej fáze pipeline (minimálne reorder buffer tam musí byť v oboch prípadoch), alebo aspoň nato upozorniť programátorov.

    Ešte dodám, netvrdím že jedno vlákno GPU = jedno vlákno Skylake, to určite nie. Ale myslím že 1 SM ~ 1 CPU jadro môže byť celkom blízko realite.