Overview
Project information
INF5660 - Avansert problemløsning i høynivåspråk er et nytt kurs ved Universitetet i Oslo. Dette prosjektarbeidet er gjennomført i forbindelse med kurset og oppgaveteksten er tilgjengelig via forelesers kurs-sider.
Gruppa har valgt å dele opp problemet i to deler. Generering av gcc-opsjoner og distrubusjon av pythonobjekter til eksterne noder via tcp/ip. Klaussen og Thorsen har hovedansvaret for "hovedproblemstillingen", mens Sannes og Skarby har hovedansvaret for dlib. Ellers har noe av arbeidet gått på tvers av disse undergruppene.
Requirements¶
- Python >2.3
- Swig
- libpng
Downloads¶
Check out last revision in files Unpack and read instructions in INSTALL.
Problemstilling¶
Meta-heuristikk¶
Gcc støtter mange forskjellige sett med flagg , til flere forskjellige språk, og flere forskjellige prosessorer. Til Pentium 4 for eksempel, så finnes det mer enn 60 forskjellige flagg som som virker inn på kildekoden som optimaliseringsflagg. Det teste alle mulige kombinasjoner av disse flaggene ville ta hundrer av millioner av år å regne ut alle kombinasjonene. Det finnes flere typer algoritmer som brukes i slike tilfeller, Generisk Algoritme (GA) og Tabusøk, for å nevne to. Vi benyttet sistnevnte.
Tabusøk¶
"Styring av søk mot ellers utilgjenglige områder i søkerommet ved bruk av restriksjoner" (INF-MAT 5380 - Geir Hasle - Leksjon 4)
Ved å benytte tabusøk, så bruker man prinsipper for intelligent problemløsning, og strukturer som utnytter historie/læring. Vi benytter "Beste Nabo" strategi.
Distrubusjon av python objekter (dlib)¶
For å kunne anvende dette i praksis er det behov for mye regnekraft, og det vil være fordelaktig å distrubuere deler av programmet. Dette løses ved bruk av dlib.
Vi ønsket å sende objekter til en rekke noder, og gi kommandoer til nodeobjektene via vanlig python syntaks.
Det oppstår her et par utfordringer, som at objektenes metoder må brukes asynkront. - Man ønsker å lage objekter på flere noder samtidig og så siden hente resultatene fra kjøringene. Å la programmet vente på svar fra en av nodene før neste metodekall distribueres ville være sløsing med ressursene fordi det da bare ville vært en node som arbeidet ad gangen.
Resultater¶
Prosjektet har løst dlib. Noen interessante endelige resultater forekommer ikke etter denne fasen av prosjektet. Imidlertid er det ikke store endringene som skal til før vi kan kjøre systemet på et kluster. I pakken følger både fungerende server og klient.