Hlavní navigace

Názor k článku Threadripper byl hobby projekt, který AMD nemělo v plánu. Jméno je původní „codename“ od Jan Olšan - @tombomino, ne dlaždice ve smyslu matrice se (momentálně)...

  • 10. 9. 2017 16:06

    Jan Olšan (neregistrovaný)

    @tombomino, ne dlaždice ve smyslu matrice se (momentálně) nedělají.
    "Slice" threading používá rozdělení obrazu na několik horizontálních pruhů (takže třeba u full HD by to mohlo být čtyřikrát 1920x270), které se kódují odděleně. To, co VP9 nazývá "tiles" je v podstatě totéž, ale vertikálně (takže sloupce 540x1080).

    U tohohle typu threadingu není dobré, když je těch sekcí moc, takže teoreticky by šlo mít nějakou matrici z hodně kousků, ale bylo by to dost špatné pro efektivitu.

    WPP je složitější, tam není ten frame striktně rozdělený, ale jednotlivá vlákna enkódují jednotlivé pásy macroblocků stejného "slice". Funguje to tak, že každý další thread začne enkódovat o něco později, když už má nad sebou hotových pár macroblocků. To je velká výhoda proti slice-threadingu, jelikož si z nich může brát data pro intra-predikci a tak, takže v tomhle režimu nejsou ztráty tak velké.
    Viz https://www.parabolaresearch.com/blog/2013-12-01-hevc-wavefront-animation.html


    No a frame threading funguje tak, že se enkóduje několik framů najednou, ale taky se chvíli počká. Když je už z prvního snímku hotových pár řad, může se začít kódovat následující, protože macroblocky v horní řadě už mají v předchozím snímku dost řad na to, aby z něj mohly být udělán motion search a nalezené bloky pro predikci (to proto, že motion vektory obvykle nejsou hodně dlouhé). Když už je i z druhého snímku hotovo celkem hodně, tak se může začít paralelně enkódovat třetí...

    WPP a frame threading se v x265 používají zároveň. Enkóduje se pár snímků najednou a k tomu ještě v tolika WPP řádcích, kolik jich umožňuje rozlišení (výška obrazu / 64 nebo 32 ec pokud omezíte velikost CTU). WPP se dá i vypnout a používat jen frame threads, ale defaultně je zapnuté, protože se počítá i s tím, že ho používají k paralelizaci některé dekodéry.

    Jinak ta efektivita není úplně o "maximálním počtu vláken". Každé rozdělení na vlákna něco ubere, ale je to křivka, takže ze začátku je to OK a postupně se to stává míň OK.