- Liittynyt
- 22.10.2016
- Viestejä
- 11 876
fp16-tarkkuudesta:
Tässähän on nyt vähän tällainen "ympyrä on sulkeutunut"-ilmiö.
fp16-tarkkuus tuli directX9:n shader model 2.0aan maaliskuussa 2003.
Samalla tuli myös hassu fp24-tarkkuus sekä normaali fp32-tarkkuus.
Speksi sanoi, että oletuksena kaikki pitää laskea vähintään fp24-tarkkuudella, mutta ohjelmoija voi myös käyttää fp16-datatyyppiä jolloin sen saa suorittaa fp16-tarkkuudella (tai suuremmalla tarkkuudella)
Radeon 9700 tuki natiivisti fp24-tarkkuutta, eikä sen kanssa fp16 ollut yhtään nopeampi. Se laski kaiken fp24-tarkkuudella, ja oli nopea.
Geforce FX 5xxx -sarjalaisissa taas oli fp16- ja fp32-tarkkuudet, ja fp16-tuki oli selvästi nopeampi kuin fp32-tuki (aivan kuten nyt vegallakin).
5xxx-sarjalaisissa fp16-tuki oli siis suurinpiirtein yhtä nopea kuin radeon 9700n fp24, tuki. ja fp32-tuki selvästi hitaampi.
Radeon 9700 ehti markkinoille muutamaa kuukautta aiemmin, ja uuder DX9-pelit optimoitiin sille. Käytännössä mikään peli ei aluksi käyttänyt fp16-datatyyppiä, koska radeon 9700lla siitä ei olltu mitään hyötyä.
Kun sitten geforce 5800 julkaistiin, se pärjäsi onnettomasti 9700lle optimoiduilla peleillä, joissa joutui laskemaan kaiken fp32-tarkkuudella.
Pikkuhiljaa peleihin sitten alkoi tulla fp16-optimointeja ja vähän myöhemmin geforce 5000-sarja alkoi jo pärjätä paremmin. fp32-nopeus tuotiin kuitenkin jossain myöhemmässä nvidian piirissä samalle tasolle kuin fp16-nopeus jolloin taaskaan ei hyödytänyt käyttää fp16-datatyyppejä, ja ne jäi taas uusista peleistä pois.
Seuraava shader model 3?-versio nosti sitten vaadittavan oletustarkkuuden 24 bitistä 32 bittiin. AMDltä taisi X1xxx-sarjassa tulla tuki tälle, 24-bittinen tarkkuus vaihdettiin 32 bittiin.
Kului 10 vuotta. Kaikki laskivat kaiken 32 bitillä.
Sitten tuli Deep Learning-hype, ja idea että näitä voisi laska näyttiksellä. Näissä jutuissa riittää hyvinkin pieni laskentatarkkuus, ja sitten alettiin taas miettiä että olisi hyvä olla nopeampaa natiivia tukea alle 32-bittisille datatyypeille.
nVidia uhosi tuovansa Pascaliin tuplanopeuden fp16-tuen. Paitsi että taisi lopulta tuoda sen takaisin vain jossain quadro-/teslamallissa.
AMD toi saman PS4 Pro:n piirissä ja Vegassa.
Näillä uusilla piireillä näiden käyttämiseen tarvii kuitenkin aina laskea vähintään kahdenlevyisillä vektoreilla, koska yhden linjan(work-itemin, pikselin) leveys on kuitenkin aina 32 bittiä.
Ja nyt sitten tajutaan, että kun piireiltä nämä löytyy, näistä voisi olla kyllä iloa siinä graffakäytössäkin, jos vaan koodarit jaksaa miettiä, että mille muuttujille heidän shader-koodissaan riittää tuo fp16-tarkkuus.
Tässähän on nyt vähän tällainen "ympyrä on sulkeutunut"-ilmiö.
fp16-tarkkuus tuli directX9:n shader model 2.0aan maaliskuussa 2003.
Samalla tuli myös hassu fp24-tarkkuus sekä normaali fp32-tarkkuus.
Speksi sanoi, että oletuksena kaikki pitää laskea vähintään fp24-tarkkuudella, mutta ohjelmoija voi myös käyttää fp16-datatyyppiä jolloin sen saa suorittaa fp16-tarkkuudella (tai suuremmalla tarkkuudella)
Radeon 9700 tuki natiivisti fp24-tarkkuutta, eikä sen kanssa fp16 ollut yhtään nopeampi. Se laski kaiken fp24-tarkkuudella, ja oli nopea.
Geforce FX 5xxx -sarjalaisissa taas oli fp16- ja fp32-tarkkuudet, ja fp16-tuki oli selvästi nopeampi kuin fp32-tuki (aivan kuten nyt vegallakin).
5xxx-sarjalaisissa fp16-tuki oli siis suurinpiirtein yhtä nopea kuin radeon 9700n fp24, tuki. ja fp32-tuki selvästi hitaampi.
Radeon 9700 ehti markkinoille muutamaa kuukautta aiemmin, ja uuder DX9-pelit optimoitiin sille. Käytännössä mikään peli ei aluksi käyttänyt fp16-datatyyppiä, koska radeon 9700lla siitä ei olltu mitään hyötyä.
Kun sitten geforce 5800 julkaistiin, se pärjäsi onnettomasti 9700lle optimoiduilla peleillä, joissa joutui laskemaan kaiken fp32-tarkkuudella.
Pikkuhiljaa peleihin sitten alkoi tulla fp16-optimointeja ja vähän myöhemmin geforce 5000-sarja alkoi jo pärjätä paremmin. fp32-nopeus tuotiin kuitenkin jossain myöhemmässä nvidian piirissä samalle tasolle kuin fp16-nopeus jolloin taaskaan ei hyödytänyt käyttää fp16-datatyyppejä, ja ne jäi taas uusista peleistä pois.
Seuraava shader model 3?-versio nosti sitten vaadittavan oletustarkkuuden 24 bitistä 32 bittiin. AMDltä taisi X1xxx-sarjassa tulla tuki tälle, 24-bittinen tarkkuus vaihdettiin 32 bittiin.
Kului 10 vuotta. Kaikki laskivat kaiken 32 bitillä.
Sitten tuli Deep Learning-hype, ja idea että näitä voisi laska näyttiksellä. Näissä jutuissa riittää hyvinkin pieni laskentatarkkuus, ja sitten alettiin taas miettiä että olisi hyvä olla nopeampaa natiivia tukea alle 32-bittisille datatyypeille.
nVidia uhosi tuovansa Pascaliin tuplanopeuden fp16-tuen. Paitsi että taisi lopulta tuoda sen takaisin vain jossain quadro-/teslamallissa.
AMD toi saman PS4 Pro:n piirissä ja Vegassa.
Näillä uusilla piireillä näiden käyttämiseen tarvii kuitenkin aina laskea vähintään kahdenlevyisillä vektoreilla, koska yhden linjan(work-itemin, pikselin) leveys on kuitenkin aina 32 bittiä.
Ja nyt sitten tajutaan, että kun piireiltä nämä löytyy, näistä voisi olla kyllä iloa siinä graffakäytössäkin, jos vaan koodarit jaksaa miettiä, että mille muuttujille heidän shader-koodissaan riittää tuo fp16-tarkkuus.