1 / 17

Parallellisering av Coin3D

Parallellisering av Coin3D. for Systems in Motion av Sveinung Thunes. 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

adeola
Download Presentation

Parallellisering av Coin3D

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 Egenskap Transformasjon Gruppenode, delt 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 Unik lås Delt lås Delt lås Delt 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. 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] Bufferlås Skrivetråd Lesetråd Bufferlås A B felt[] felt[] Noder i scenegraf

  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 Låser Frigjør 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)

More Related