dinsdag 9 december 2008

Grid resoluties

Status update: onze implementaties werken nog niet helemaal, alles lijkt trager te gaan dan we verwachten. Het programmeren op de GPU is niet altijd even eenvoudig - hoewel debuggen met CUDA al redelijk wat makkelijker gaat, blijft het een uitgebreid werk.

De PIC & FLIP implementatie begint stilaan vormen te krijgen. De meeste code werd reeds vorig week geïmplementeerd en getest. De interpolatietechniek van vorige blogpost werd ook vervangen door een trilineaire interpolatie. De eerste stappen in het algoritme werken al (het mappen van particle eigenschappen op een grid en terug), alsook het framework (simulatieparameters, visualisatie met VBO's, ..). We wilden dan de nauwkeurigheid testen van het grid. Hiervoor gebruiken we 1536 particles (dat kwam goed uit met het aantal cores op mijn GPU) en twee intialisatie manieren: in damvorm (zoals tijdens de simulaties) en random. De resultaten voor verschillende gridwaarden kun je in onderstaande grafiek terugvinden:

Kleinere resoluties dan 32x32x32 hadden een nog grotere fout. De echte waarde zou 1000.0 moeten zijn, dus voor 32 als gridsize ondervinden we een fout van 9% bij random intialisatie en 3.5% bij de dam. Omdat de berekentijden tochwat oplopen (en er behoorlijk wat meer interpolaties nodig zijn: namelijk nog 3 voor elke component van de snelheid) zullen we toch met een zekere afrondingsfout moeten leven. Of dit echt slechte resultaten gaat opleveren is nog af te wachten.

Bij absurd lage gridresoluties (zoals 4) krijg ik nogwel vreemde resultaten (NaN), maar zelfs na enkele uren debuggen kon ik de oorzaak niet vinden. Daar moet zeker nog eens naar gekeken worden, het zou kunnen dat er nog fouten in de implementatie zitten. Daarnaast moet ik ook eens kijken naar de mogelijkheid van 3D textures om reeds zelf te interpoleren bij het uitlezen. Dat gaat wellicht sneller gaan dan mijn handmatige methode, maar voor nog grotere afrondingsfouten zorgen (die interpolaties zijn niet exact). Beide zaken laat ik even liggen om zo snel mogelijk een werkende simulatie af te hebben.

Geen opmerkingen: