openCL oder doch nicht?

Hi,

OpenCL ist so eine Sache. Wenn dein Programm auf möglichst vielen Plattformen (CPU,GPU,DSP, auch von verschiedenen Herstellern) laufen soll, dann ist OpenCL zumindest theoretisch zu empfehlen. Es kommt eben auf das Thema der Bachelor-Arbeit an und welches System du zur Verfügung hast:

1.
Wenn du "nur" ein (parallelisierbares) Problem auf einem Desktop-Rechner lösen willst, solltest du aktuelle GPGPUs verwenden. Und da ist OpenCL imho Quatsch da z.B. NVidia Grafikkarten OpenCL zwar unterstützen aber mit CUDA eine wesentlich einfachere/schönere/performantere Schnittstelle zur Verfügung stellen (OpenCL setzt da einfach auf CUDA auf... :( ). Leider bist du dabei einem Hersteller und dessen "Firmemphilosophie" ausgeliefert...

2.
Soll die Arbeit auf DSPs/FPGAs gemacht werden muss ich gestehen, dass ich mich nicht genau auskenne. Theoretisch sollte ein OpenCL-Programm ja sowohl auf der CPU, als auch auf der GPU als auch auf einem DSP laufen (bei entsprechender Unterstützung des Herstellers). Nette Idee, wie es in der Praxis aussieht weiss ich nicht. Ich bin im Moment in einem Forschungsprojekt in welchem die Algorithmen auf FPGAs implementiert werden sollen, und im Pflichtenheft wird halt VHDL und nicht OpenCL vorgeschrieben.

3.
Wenn es auf allem laufen soll, kannst du dir denken was du machen musst ;)

Fazit:
Rede mit dem Betreuer genau über das Problem, v.a. auch um welche Plattform es sich handelt, Geschwindigkeitsanforderungen, Portabilität, .......
 
was ist denn eigentlich das thema von der bachelorarbeit? vielleicht kommen wir ja so weiter.
 
Ich hab noch kein Thema gefunden. Neben JAVA & .NET wollte ich mich "programmiertechnisch" weiter bilden und stieß auf openCL bzw. CUDA. Als mögliches Thema wäre das portieren von Algorithmen und dadurch ein Komplexitätsverhalten zu ermitteln. Beispiel Laufzeitverhalten von Fallzahl = n bei Mergesort, Bubblesort etc....
 
Du kannst parallel programming als Arbeit auswaehlen. Da passt OpenCL + CUDA auch perfekt rein, denn z.B. mit einer 260 gtx216 kommst du in den Genuss von 216 cores die du parallelisieren kannst. Bei meiner sinds "nur" 192.
Wie waere es mit einem threaded B-Tree mit >100.000.000 eintraegen?
Oder ein threaded B-Tree mit laufzeit von O(N^2) was ungewoehnlich ist fuer einen B-Tree.
Auch eine moeglichkeit ist einen Algorithmus zu entwickeln, der OpenCL oder CUDA dazu verwendet um ein Video zu de/encodieren, aufgeteilt auf 216 threads. Da koenntest du x264 als Vorlage nehmen und vielleicht umschreiben. Oder ein Plugin fuer blender, damit die Grafikkarte das rendering des Projektes uebernimmt? Manche Projekte brauchen auch auf meinem i7 ewigkeiten und 3 Tage bis die fertig gerendert haben.

Das sind allerdings noch relativ kleine Sachen, man weiss ja nicht wieviel Zeit du zur Verfuegung hast.
 
@FreddyMercury, den Antrag kann ich erst im Sommer stellen, jedoch jetzt mich für einen Betreuer entscheiden und das Thema absegnen lassen, so dass ich jetzt schon starten kann ;-)
Insgesamt ca: halbes jahr. Ich habe nur meine HD5850 und kann dann leider nur openCL einsetzten.

Danke für deinen Hinweis, werde diesbezüglich meinen Professor kontaktieren, melde mich dann nochmal :)
 
Zurück
Oben