Ray Tracing op GPU en CPU - EDM - UHasselt
Ray Tracing op GPU en CPU - EDM - UHasselt
Ray Tracing op GPU en CPU - EDM - UHasselt
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
uitgevoerd kan word<strong>en</strong>. Dit wordt respectievelijk het statisch <strong>en</strong> dynamisch aantal<br />
instructies g<strong>en</strong>oemd. Het dynamisch aantal instructies is typisch meerdere<br />
mal<strong>en</strong> hoger dan het statisch aantal. Indi<strong>en</strong> e<strong>en</strong> shaders toch dit aantal instructies<br />
probeert te overschrijd<strong>en</strong>, wordt deze afgebrok<strong>en</strong> <strong>en</strong> sprek<strong>en</strong> we van e<strong>en</strong><br />
time-out. Dit resulteert in pixels met e<strong>en</strong> ongedefiniëerde <strong>en</strong> dus onbruikbare<br />
resultat<strong>en</strong>. Tijd<strong>en</strong>s het programmer<strong>en</strong> di<strong>en</strong>t ook hiermee rek<strong>en</strong>ing gehoud<strong>en</strong> te<br />
word<strong>en</strong>. Meer over deze t<strong>op</strong>ic is te vind<strong>en</strong> in [PF05], de FAQ sectie van [nVi]<br />
<strong>en</strong> <strong>op</strong> het forum van [gpg].<br />
Aangezi<strong>en</strong> de fragm<strong>en</strong>t shader e<strong>en</strong> SIMD processor is, is het ook niet aangewez<strong>en</strong><br />
om deze te beschouw<strong>en</strong> als e<strong>en</strong> MIMD, tijd<strong>en</strong>s het schrijv<strong>en</strong> ervan.<br />
Dit zal in vele gevall<strong>en</strong> leid<strong>en</strong> tot zeer trage shaders, wat vaak ongew<strong>en</strong>st is.<br />
E<strong>en</strong> onschuldige if-th<strong>en</strong>-else constructie moet dus met voorzichtigheid gebruikt<br />
word<strong>en</strong>, om efficiëntie te garander<strong>en</strong>. T<strong>en</strong> eerste neemt if-th<strong>en</strong> constructie 4 klok<br />
cycli in beslag, <strong>en</strong> e<strong>en</strong> if-th<strong>en</strong>-else 6 klok cycli. Dit is relatief veel als we wet<strong>en</strong><br />
dat normaliter meerdere wiskundige <strong>op</strong>eraties tegelijkertijd (<strong>op</strong> 4 tupels) in één<br />
klok cyclus kunn<strong>en</strong> uitgevoerd word<strong>en</strong>. T<strong>en</strong> tweede kunn<strong>en</strong> we best het gebruik<br />
van if-th<strong>en</strong>(-else) structur<strong>en</strong> beperk<strong>en</strong> vanwege het feit dat én de if, én de else<br />
uitgevoerd word<strong>en</strong> indi<strong>en</strong> er slechts 1 parallelle shader de if keuze neemt, <strong>en</strong> e<strong>en</strong><br />
andere de else keuze. Beide keuzemogelijkhed<strong>en</strong> zull<strong>en</strong> uitgevoerd word<strong>en</strong> maar<br />
slechts de werkelijk uitgevoerde zal perman<strong>en</strong>t gemaakt word<strong>en</strong>. Het is dus van<br />
belang om het aantal <strong>en</strong> de omvang van deze if-th<strong>en</strong>(-else) constructies in te<br />
perk<strong>en</strong>. Nauwgezet programmer<strong>en</strong> is dus de boodschap. Meer details over de<br />
grafische hardware architectuur, zie [PF05].<br />
Duidelijk staat het GP<strong>GPU</strong> programmer<strong>en</strong> nog in kinderscho<strong>en</strong><strong>en</strong>, maar<br />
gelukkig is het wel e<strong>en</strong> “hot t<strong>op</strong>ic”. E<strong>en</strong> positief gevolg van de grote belangstelling<br />
hierin is dat er e<strong>en</strong> stuwkracht aanwezig is die de vorige problem<strong>en</strong><br />
zal <strong>op</strong>loss<strong>en</strong>, of minst<strong>en</strong>s verzacht<strong>en</strong>. Verzacht<strong>en</strong>de omstandighed<strong>en</strong> zoud<strong>en</strong> onder<br />
andere meerdere tools, betere programmeertal<strong>en</strong>, <strong>en</strong> de aanwezigheid van<br />
meerdere, grotere textures kunn<strong>en</strong> zijn.<br />
28