Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Parallellisering av Coin3D for Systems in Motion av Sveinung Thunes.

Liknende presentasjoner


Presentasjon om: "Parallellisering av Coin3D for Systems in Motion av Sveinung Thunes."— Utskrift av presentasjonen:

1 Parallellisering av Coin3D for Systems in Motion av Sveinung Thunes

2 Coin3D  Høynivå objektorientert bibliotek over OpenGL for rask utvikling av 3D grafikk  Benytter scenegrafer som datastruktur  API fullt ut kompatibel med Open Inventor fra SGI  Dokumentasjon i The Inventor Mentor (grunnleggende bruk) og The Inventor Toolmaker (muligheter for egne utvidelser)

3 Dagens situasjon  Utviklet for enkelttråds applikasjoner –API tilbyr global synkronisering av tråder –Ikke støtte for samtidige lese- og skrivetråder, selv om dette skjer på uavhengige data –Ingen mekanisme for å definere dataavhengigheter eller å internt skille mellom uavhengige scenegrafer  Flerprosessor datamaskiner blir nå standard, så dette er ikke lenger akseptabelt

4 Utfordringer (1)  Muliggjøre samtidige tråder, ikke bare samtidige lesetråder –Ta hensyn til dataavhengigheter –Effektivt, utelukker utstrakt bruk av kostbare synkroniseringsmekanismer (mutex og låser) –Fleksibelt mht kjøretid, balansere ekstra kostnad per prosessor mot total ytelse –Fleksibelt mht minnebruk, balansere total minnebruk mot ytelse –Generell løsning, unngå spesialtilfeller

5 Utfordringer (2)  Minimale endringer i dagens API –Coin er i utstrakt bruk, endringer i API kan være kostbart –Løsning kan tilby ekstra funksjonalitet, men må ikke kreve at denne tas i bruk –Bør ikke kreve spesialkunnskaper for å kunne benytte nye mekanismer for synkronisering  Intern implementasjon –Støtter full parallellisering, men har potensielle flaskehalser

6 Oppbygning av scenegrafer  Gruppenoder –Lister av undernoder som beskriver grafens struktur –Gruppenoder kan dele undernoder  Egenskapsnoder  Transformasjonsnoder  Geometrinoder

7 Eksempel scenegraf Gruppenode, separator Gruppenode, delt Egenskap Transformasjon Geometri

8 Uttegning av scenegraf  Scenegraf gjennomgås venstre-høyre, dybde først  Gruppenoder endrer ikke tilstand for OpenGL, men sender videre til undernoder  Andre noder som behandles underveis endrer tilstand og matriser i OpenGL  Geometrinoder som behandles tegnes med gjeldende tilstand og matriser  Andre operasjoner utføres tilsvarende

9 Dataavhengigheter (1)  Gruppenoder i samme scenegraf må ikke endres uavhengig av hverandre –Når en operasjon har startet på en scenegraf må ikke lister med undernoder endres på noen måte –Når en tråd får lese- eller skrivetilgang til en gruppenode må den få samme tilgang til alle gruppenoder i scenegrafen

10 Dataavhengigheter (2)  Data i noder kan være avhengig av hverandre –Data innkapsles i feltklasser –Feltklasser kan kobles sammen slik at endringer i et felt skal føre endringer i et eller flere andre felt –Dersom en tråd har lese- eller skrivetilgang til en node i en slik gruppe felt må den ha samme tilgang til alle nodene i gruppen

11 Løsningsmetoder  Låsbar baseklasse for noder –Per objekt låsing av noder  Delte låsobjekter gjennom låsgrensesnitt –Låsing av nodegrupper med dataavhengigheter  Ulike implementasjoner av låsobjekter –Mutex, lese-skrive lås, bufferlås  Hurtiglåsing av delte låsobjekter –Låse effektivt, frigjøre hurtig

12 Delte låsobjekter Alle gruppenoder må dele samme lås Delt lås Unik lås

13 Implementasjoner låsobjekter  Standardlåser –Mutex –Lese-Skrive lås  Bufferlås –Benytter separate lese- og skrivefelt for noder –Endringer på data kan gjøres uten å blokkere lesetråder –Endringer gjøres synlige ved å bytte gjeldende lese- og skrivefelt –Mindre blokkering av tråder, økt minnebruk

14 Bufferlås  A.readLock –Leser fra felt[0]  A.readUnlock  B.readLock –Leser fra felt[1]  B.writeLock –Skriver til felt[1]  B.writeUnlock –Bufferlås bytter gjeldende lese- og skrivefelt for noder  A.writeLock –Felt[0] ikke klar for skriving  A.writeLock –Tråd frigjøres og skriver til felt[0] BA Bufferlås Noder i scenegraf Lesetråd Skrivetråd felt[]

15 Hurtiglåsing  Operasjoner på scenegraf –Per node låsing er for kostbart, låsing skjer kun én gang per faktiske lås –Alle avhengige noder må holdes låst til de ikke lenger skal behandles, ellers vil ikke resultatet bli korrekt –Låser må frigjøres så fort som mulig for å frigjøre eventuelle blokkerte tråder  Disse kravene er sammenfallende og kan innfris ved å la låsobjekter vite hvor mange noder som er tilknyttet dem

16 Eksempel hurtiglåsing Låser Låser og frigjør Låser Frigjør Låser Frigjør

17 Videre  Dokumentere ytelse for ulike bruksområder og vurdere egnet bruk for ulike teknikker  Påpeke situasjoner som kan føre til problemer  Vurdere hvordan scenegrafer skal organiseres dersom bruker ikke ønsker å overstyre dette (de fleste vil nok ikke det)


Laste ned ppt "Parallellisering av Coin3D for Systems in Motion av Sveinung Thunes."

Liknende presentasjoner


Annonser fra Google