2023. január 27., péntek

Gyorskeresés

Mi a csuda ez a CUDA?

Írta: | Kulcsszavak: dxva . cuda . uvd . hd . mkv . lejátszás

[ ÚJ BEJEGYZÉS ]

Nemrég felvetésem után megkértek hogy egészítsem ki ha lehet CPT.Pirk cikkét a CUDA alkalmazásával.
Szvsz a bejegyzésemnek vannak formai hiányosságai, de nem is rendes cikknek készült. Ez inkább csak egy kis jegyzettömb aminek tartalmát remélem hogy CPT.Pirk alkalmasnak fogja találni arra hogy felhasználja a cikkéhez.
p
Figyelem Ez a bejegyzés már a sokadik átírást éli meg ami általában azt jelenti hogy frissítem új tapasztalatokkal, vagy éppen érthetőbbé szerkesztem. Amint újat tanulok azt ide le fogom jegyezni tehát e bejegyzés tartalma bármikor változhat !!!

A cikk ezen része nem IT szakemberekhez szól csak azoknak akik szeretnének bármilyen HD tartalmat lejátszani de még nem hallottak, vagy nem eleget a CUDA-ról.

Ugye azt már tudjuk hogy ha szeretnénk hogy a videokártyánk dogozzon a CPU helyett ahhoz olyan VGA vagy IGP kell aminek a GPU-ja tartalmaz VPD-t (Video Processing Device) mivel alapesetben ez végzi a HD filmek dekódolását. Az AMD/ATI saját VPD fejlesztését UVD-nek, az nVidia a sajátját pedig VP-nek nevezte el de különböző GPU magok különböző fejeltségű VPD-t tartalmazhatnak amelyeket a gyártók számozással különböztetnek meg. Pl.: UVD1;+;2;2.2 illetve VP1;2;3
Ezek az egységek a GPU magon belül találhatóak de csak egy kis területét alkotják a GPU-nak. Mi lenne ha a GPU minden porcikáját használatba lehetne venni erre a célra (is)?
Itt meg kell jegyeznem hogy sokan úgy mondják hogy "megy a DXVA" vagy "nem DXVA-s a film" pedig ez így pontatlan hisz az AMD VPD-jének DXVA határértékei alacsonyabbak mint az nVidia-nál, tehát az nVidia VPD szélesebb tartományban tud DXVA-t használni (CUDA-tól függetlenül), így több HD videót tud gyorsítani mint az AMD.

Az igazi áttörést a DirectX 10 által megkövetelt egyesített shader architektúra (Unified Shading Architecture) hozta meg, amely leváltotta a külön feladatokra specializálódott pixel és Vertex shader processzorokat. Az NVIDIA G80 és AMD R600 kódnevű lapkák voltak az első grafikus magok, amelyek az említett felépítésnek megfelelően készültek akárcsak a jelenleg forgalomban lévő G92, GT200 és RV770 magok. Bár ezek az "új" magok már megérdemlik azt hogy GPGPU-nak (általános célú [General Purpose] grafikus processzorok [GPU] nevezzük őket.

A két nagy gyártó nem meglepő módon saját utakon kezdett bele a GPGPU-képességek kiaknázásába, ennek hála saját rendszerfejlesztői készletet fejlesztettek a programozók számára. Az ATI Stream-nek az nVidia CUDA-nak nevezte el a saját gyermekét de olybá tűnik, a CUDA nagyobb népszerűségre tett szert már csak azért is mert az nV most gyorsabban lépet mint az ATI.

Tehát a CUDA az nV által kifejlesztet rendszerfejlesztői készlet (továbbiakban SDK) melyet GPGPU-képességek kiaknázására hozott létre.

Hogy is működik ez valójában? Mi kell hozzá? Mit kell tennem ha használni szeretném ezt a CUDA-t a HD tartalmak lejátszására?

Mint említettem nem fogok mélyenszántó leírásba kezdeni mellyel a CUDA minden algoritmusát kivesézném.
Csak röviden:
A filmek lejátszása esetében a CUDA használatára felkészített player vagy codec számára ez az SDK valójában egy "mankó" amely közvetlenül tudja a GPU shader processzorait használni olyan feladatokra is amire eddig nem volt képes. Úgy használja a GPU-t mintha az egy egyszeres pontosságú, 32-bites lebegőpontos számításokra képes CPU lenne.
Tehát az olyan filmek lejátszásánál ahol a lejátszó program a nem tudja DiretcX -et igénybe venni ott a a Cuda-t használja megfelelő GPU és megfelelő driver és megfelelő codec megléte esetén.

Mit is lehet tapasztalni egy régebbi driver esetén ami nem tartalmaz CUDA-t? Ekkor az MPCHC csak azon filmeket tudja rendesen lejátszani amik kódolása megengedi hogy a VPD-t igénybevevő DXVA működni tudjon. Tehát pl.: ha egy 1080p-s mkv filmet úgy készítettek el hogy a film ref. frames értéke kevesebb mint 4 akkor az újabb MPCHC állapot sorában megjelenik egy (DXVA) felírat. Amennyiben ez a ref. frames érték pl.:6 vagy több akkor már nem tud működni a DXVA és ezért nem lesz jelzés az állapot sorban.

Amennyiben viszont egy újabb drivert teszünk fel ami már tartalmaz CUDA-t. akkor azt tapasztalhatjuk hogy az eddig pl.:11 ref frames-el rendelkező 1080p-s filmet amit gyenge CPU esetén nem tudtunk megfelelően lejátszani, immáron teljes sebességgel élvezhetjük, - dacára annak hogy a GPU-ba épített videó dekódoló egység nem tud működni - hiszen ekkor a player egy alkalmas codec által a CUDA-t használva már a GPU processzorait használja. Erről a MPCHC tájékoztat is minket úgy hogy ismét megjelenik az állapotsorban a (DXVA) felírat. Tehát Cuda jóvoltából már 98% hogy nem lesz olyan HD videó ami kifogna az nVidia VGA kártyánkon IGP-n.

A mai nap és már egy ideje az nVidia driverei beépítve tartalmazzák a CUDA-t amennyiben az adott VGA kari megfelelő GPU-val van ellátva. Ezek Cuda-s VGA-k.

Tehát a teendők::
1. legyen Cuda alkalmas VGA-d vagy IGP-d
2. Legyen fent a legújabb driver
3. Olyan Codec legyen fent ami tartalmaz CUDA támogatást. Tipp: CoreAVC 1.9.5w az eddigi legjobb bár nem ingyenes.
4. DXVA képes és több CPU magot használni tudó playert használj. Tipp: MPCHC aminek a beállítása csak kicsit tér el a cikkben már leírtaktól.
5. NE installálj semmilyen video codeccsomagot vagy olyan videó codec-et ami nem CUDA-s, sőt ha idővel lesz több CUDA-s codec akkor is csak az egyiket tedd fel mert csak bekavarhatnak.

Beállítások:

A CoreAVC-nek a beállító paneljának így kell kinéznie:

Az MPCHC-nél csak annyiban változik a beállítása a playernek hogy a "Belső szűrők" oldalon a "Dekódoló szűrők oszlopában Vegyük Ki a Pipát a H264/AVC(FFmpeg) és a VC1(FFmpeg) szűrők elöl, majd a "Külső szűrők" oldalán a "szűrő hozzáadása..." gombot használva az előugró listából adjuk hozzá a CoreAVC-t. Ez után ügyeljünk arra hogy a "Értékesség beállítása" legyen kijelölve melynek értéke alapesetben:00800200
Ezzel azt értük el hogy a CoreAVC csak akkor fog dolgozni amikor a DXVA a VPD által már nem képes gyorsítani.

Oké rendben! De mi a helyzet az AMD-vel és a HDxxxx kártyáival IGP-ivel? Hogy lehetne ezek GPU-inak processzorait befogni a munkába hogy valóban minden HD filmet a GPU-val számoltassak ne csak az UVD egység által gyorsíthatóakat?
Jelenleg nincs olyan kezdeményezés amivel az AMD Stream SDK-ját lehetne használni HD tartalmak gyorsításához. De elkeseredni nem szabad. Ugyanis a legújabb 11 -es DirectX-nek - ami a win7-el debütál - része lesz a Compute Shader ami valójában egy API-hoz kötött GPGPU-támogatás.
Erről nem sokat tudok de merem remélni hogy azt jelenti hogy megfelelő DX11-es driver esetén akár filmek lejátszásához is lehet használni bármilyen DX11-es VGA-t (HD5xxx). És persze remélem hogy lesz a HD5xxx karikból is belépőszint, mint az előző 4-es szériában a jó kis HD4350-es illetve jó kis 5-ös szériás IGP-k is meg fognak jelenni jó árú lapokban.

Tapasztalatok tesztek:

Szeretem tesztelni a manapság megjelenő MKV HD filmeket. Ekkor már nem csak azokat a filmeket töltöm le amik érdekelnek hanem valóban mindent ami megjelenik. Ekkor olyan tapasztalatokkal leszek gazdagabb amikel nem találkoznék akkor ha csak azokat a filmeket tölteném le amik valóban érdekelnek. Ezek a tapasztalatok pedig mindig ledöbbentenek. Vagyis a jelenleg megjelent filmek VPD ready-k -e vagy sem.

AMD-nél:
Döbbenet hogy 43 db 1080p-s filmből 16 film nem felel meg az UVD követelményeinek mert túl magas ref.frames értékkel lettek elkészítve. A legdurvább film a:

trinity-madagascar.escape.2.africa.720p ami bár csak 720p de nem kevesebb mint 16 ref.frames-t alkalmaztak. Továbbá
Cars.2006.BluRay.1080p.x264.DTS.Hun-iLL-arpi 11-es értékével illetve a
Ice.Age.2.The.Meltdown.1080p.BluRay.Dual.x264-PREtorians a maga 9-es ref frames értékével is durva eltérés a határértékektől.
1080p-n a megengedett érték max. 4 lenne. 720p-n pedig max 11

nVidiánál:
Már sokkal rózsásabb a helyzet. Itt már 1 kivételével minden film ment DXVA-val, kivétel:
trinity-madagascar.escape.2.africa.720p ahol nem kevesebb mint 16 ref.frames-t alkalmaztak sajnos már megakasztotta a VP2-es VPD-t.

De nem csak "régi" filmeket kódoltak el!
Ilyen pl. még a 2008-as You.Dont.Mess.with.the.Zohan
vagy a szintén 2008-as Saw.V is.

Most pedig egy kis teszt alapú összehasonlítás:

A fent említett 43 1080p-s filmek egyikét sem lehet pusztán CPU-val lejátszani az alábbi CPU-val:

AMD x2 4000+ (2100Mhz)
op.rendszer : Windows xp Prof. SP3

Viszont a HD3200-es IGP-vel a VPD ready (tehát ahol az UVD egység képes a gyorsításra) filmeket
2-8% de max 15%-os CPU terheltséggel le lehet játszani úgy hogy közben aktív a C&Q (vagyis az XP csak egy 1000Mhz-es x2-es CPU-t lát).

De a HD3200-as a cikk írásakor még nem tudott olyan filmeket gyorsítani amik nem UVD ready filmek.
Ekkor jön jól hogy beszereltem egy G98-as magos - így CUDA képes - GF8400gs-t.

Ekkor a CUDA-val már a magas ref frames értékű filmeket is le tudom játszani aktív C&Q-val (vagyis az XP továbbra is csak egy 1000Mhz-es x2-es CPU-t lát) Ebben az esetben a működő CUDA-val a CPU terheltség: 10-15% de max 28% nem több.

További tesztek ezzel a 8400GS-el: (a %-ok a CPU terhelést jelzik a fent már említett rendszerben)

1. Film adatai: sample-cars.1080.hun-ill-arpi.mkv
23,976fps - AVC - 10,6 Mbps - 1920*800 - 11 ref.frames

CoreAVC Cuda: 10-28% (C&Q aktív)
CoreAVC(CUDA off):32-59% folyamatos lejátszás (C&Q kikapcsolt)

MPC(DXVA):9-22% (C&Q aktív)
MPC(FFMPEG):58-77%-on ritkán megáll - nem folyamatos (C&Q kikapcsolt)

Ebből is az látszik hogy amikor a DirectX -et használjuk gyorsításra az kevésbé pörgeti a CPU-t de az eltérés minimális. Viszont amikor már a DX nem képes gyorsítani - hála a magas ref.frames-nak - a CUDA még mindig talpon van.

Film adatai: Planet_Earth_From Pole_to_Pole_1080p_sample_16ref.mkv
23,976fps - AVC - 18,6 Mbps - 1920*1080 - 16 ref.frames

CoreAVC Cuda: 53-95% csak a részletes és mozgalmas képeknél szaggat be - nem folyamatos
CoreAVC(No CUDA): u.a.

MPC(DXVA): Kép nem jelenik meg
MPC(FFMPEG): Folyamatosan szaggat, lassú, meg-meg áll nézhetetlen

Ebből látszik hogy a jelenlegi CUDA verzió még mindig nem a szent grál hisz a 16ref.frames -es filmek őt is megfogják. De azt már legalább egy frissítéssel, újabb verzióval ki lehet küszöbölni ellentétben a DX-es gyorsításnál ahol a hardver (VPD-je) a szűk keresztmetszet.

Minden segítőkész fórumtársnak köszönöm a segítséget de
külön köszönet CPT.Pirk és iMaverick valamint stevve és PuMbA fórumtársaknak :R

Hozzászólások

(#1) gabor85


gabor85
őstag

jut eszembe, miszen programmal lehet m2ts-ből mkv-t csinálni?

(#2) band1103 válasza gabor85 (#1) üzenetére


band1103
őstag

passzolok

"A bölény királyul néz ki: tisztára mint egy rasta tehén !" # * Have a Nice Death!* ...powered by vérpistike... #

(#3) band1103


band1103
őstag

UP! :B

"A bölény királyul néz ki: tisztára mint egy rasta tehén !" # * Have a Nice Death!* ...powered by vérpistike... #

(#4) kenesei1982


kenesei1982
aktív tag

Hi,

A cikkben olvastam egy bizonyos 8400GS átalakított kártyáról. Mit jelent az h "egy módosított magos így CUDA képes "?
Az nvidia oldalán szerepel a listában, hogy a 8400-as CUDA képes, de ezekszerint nem mindegyik az?
A gyártók oldalán keresgélve csak a Galaxy-nál találkoztam olyannal h egyáltalán oda volt írva a CUDA.
Vmi occsó karit keresek a htpc-mbe, mert a mostani konfigon nem megy a hd rendesen. És a tasztből kiderült, h a CUDA jobb, mint az ati beépített hd kódolása, ezért azt nem akarok.

Tudtok segíteni?
köszi

(#5) picur220


picur220
veterán

Szerintem először írni tanulj meg, mondjuk az új az egy jé és hosszú úúúúú:DDD

(#6) band1103 válasza picur220 (#5) üzenetére


band1103
őstag

Szerintem először ismerkedj meg az emberi hangnem sajátosságaival. Ha valaki nem ír helyesen az csak az iskolázatlanság vagy a dekoncentráltság tükre, ellenben ha valaki csak bunkó módon tud megszólalni az lehet felőlem egy zseni, az élete nem ér többet egy csótánynál amit el kell taposni.
És lehet mindenféle mosolygós figurát tenni egy mondat végére ha közben nincs az az élethelyzet ahol az ilyen bántó szavakat elnézik egy idegentől csak azért mert közben jópofizik.

Ja, és mellesleg azért csak köszönöm hogy szóltál mert átnéztem újra a cikkem és 5 szót írtam el benne amit javítottam is de egyik sem volt pl.: az "új" szó.

Ha további hibák lelhetők fel benne számítok a "segítségedre" :DDD .

[ Szerkesztve ]

"A bölény királyul néz ki: tisztára mint egy rasta tehén !" # * Have a Nice Death!* ...powered by vérpistike... #

(#7) Vassili


Vassili
tag

Kösz jól érthető cikkecske! Segített bár még vannak fehér területek, amik nem tiszták, még el kell olvasnom pár cikket, de ez is segített! :R

(#8) Rhinout válasza Vassili (#7) üzenetére


Rhinout
csendes tag

Sziasztok! Nekem az tetszik,hogy egyàltalàn veszi a fàradsàgot ès ennyi mindent leìr! Köszönöm! Üdv! Gergö

Paradoxon: Az állam megtartja, azt, amit ígér. A paradoxon bizonyítása: Ha pénzt ígér, azt is megtartja.

(#9) Szten Márs


Szten Márs
nagyúr

"Amint ujjat tanulok"

Mondjuk szerintem tanulhatsz újat a helyesírásról. ;) ;]

(Komolyan nem tudom megérteni, hogy 10 logoutozóból miért keveri 6 az ujjait azzal, hogy valami új)
Szerk: most látom, te írtad helyesen is az újat, így ez valószínűleg csak benézés. Csak az utóbbi pár hónapban többször olvastam ezt rosszul itt a logouton, mint jól, és kissé felőrölte az idegeimet :DDD

[ Szerkesztve ]

(#10) Aprósólyom válasza band1103 (#6) üzenetére


Aprósólyom
addikt

Ezt nagyon szépen megfogalmaztad! Tetszett! Majdnem teljes mértékben igazat adok. Kivéve a csótányos résszel nem értek egyet, de ettől még értem mit akartál kifejezni, csak azért az már túl lőtt a célon. Néha be kell venni a leszarom tablettát. Gyanítom, hogy bu*kó nagyvárosi! Véleményem szerint a magyar nyelv szépsége nem a helyesíráson alapszik. Csak meg kell figyelni, egyesek hogyan használják a nyelvünket. Azután leszarom, már bocsánat, hogy valaki helytelenül ír, ha szebben beszél, mint aki, helyesen ír. Ez ott számít, hogy valaki 5-öst, valaki 2-est kap nyelvantból az érettségin.

További hozzászólások megtekintése...
Copyright © 2000-2023 PROHARDVER Informatikai Kft.