Plattformunabhängige Parallelisierung des Lattice-Boltzmann-Verfahrens mit OpenCL

BearbeiterIn:Carolin Wolf
Titel:Plattformunabhängige Parallelisierung des Lattice-Boltzmann-Verfahrens mit OpenCL
Typ:bachelor thesis
Betreuer:Werth, T.; Philippsen, M.
Status:abgeschlossen am 17. Januar 2011
Vorausetzungen:

OpenCL ist ein Standard, um plattformübergreifend parallele Algorithmen programmieren und ausführen zu können. Dabei werden sogenannte Kernel programmiert, die zur Laufzeit auf die vorhandenen OpenCL-fähigen Geräte verteilt werden können.
Das Lattice-Boltzmann-Verfahren ist ein diskretes Verfahren zur Annäherung der Navier-Stokes-Gleichung in der Strömungssimulation. Dabei wird auf einem Gitter eine beschränkte Zahl an Partikeln simuliert und das Verhalten des Flusses durch Strömung und Kollision nachgeahmt. Diese Partikel interagieren mit den Partikeln der umgebenden Zellen, so dass bei einer Parallelisierung des rechenintensiven Verfahrens relativ wenige Datenabhängigkeiten entstehen.

Thema:

Im Rahmen der Arbeit soll das Lattice-Boltzmann-Verfahren mit Hilfe von OpenCL implementiert und optimiert werden. Der OpenCL-Standard wurde von verschiedenen Grafikkarten- und CPU-Herstellern implementiert (z.B. Nvidia, ATI, IBM). Bei der Implementierung soll ein besonderes Augenmerk darauf gelegt werden, in welcher Form die plattformspezifischen Eigenschaften der eingesetzten Hardware beachtet werden müssen, um optimale Leistung zu erzielen.

Folgende Schritte sind zur Bearbeitung der Arbeit vorgeschlagen:

  • Einarbeitung in den OpenCL-Standard und die verschiedenen Implementierungen
  • Einarbeitung in das Lattice-Boltzmann-Verfahren
  • Implementierung des Lattice-Boltzmann-Verfahrens mit OpenCL
  • Messungen auf unterschiedlicher Hardware
  • Optimierung des Implementierung
  • Optional: Skizzierung/Implementierung einer Compilererweiterung für datenparallele Probleme mit OpenCL
  • Ausarbeitung

Literatur:
[1]: Khronos Working Group: The OpenCL Specification, Version: 1.1, 377 pages, June 2010
[2]: Succi, S.: The Lattice Boltzmann Equation for Fluid Dynamics and Beyond (Numerical Mathematics and Scientific Computation), Oxford University Press, June 2001.
[3]: Lattner, C., Adve, V.: The LLVM Compiler Framework and Infrastructure Tutorial, In Languages and Compilers for High Performance Computing., Springer, Berlin, Germany, 2005
[4]: Purnomo, B., Rubin, N., Houston, M.: ATI Stream Profiler: a tool to optimize an OpenCL kernel on ATI Radeon GPUs, In International Conference on Computer Graphics and Interactive Techniques, ACM, NY, USA, 2010
[5]: Zhou, J., Zhong, C., Xie, J., Yin, S.: Multiple-GPUs Algorithm for Lattice Boltzmann Method, In Information Science and Engineering, 2008. Shanghai, China, 2008
[6]: Kahle, J. A., Day, M. N., Hofstee, H. P., Johns, C. R., Maeurer, T. R., and Shippy, D.: Introduction to the cell multiprocessor. In IBM Journal of Research and Development 49, 4/5 pages 589-604, July 2005.

watermark seal