Compilerunterstützte Parallelisierung des Lattice-Boltzmann-Verfahrens mit OpenCL

BearbeiterIn:Dimitrij Kotrev
Titel:Compilerunterstützte Parallelisierung des Lattice-Boltzmann-Verfahrens mit OpenCL
Typ:Diplomarbeit
Betreuer:Werth, T.; Philippsen, M.
Status:abgeschlossen am 28. April 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 eine Sprach- bzw. Compilererweiterung entworfen und implementiert werden, um das Lattice-Boltzmann-Verfahren mit Hilfe von OpenCL effizient implementieren und ausführen zu können. Der OpenCL-Standard wurde von verschiedenen Grafikkarten- und CPU-Herstellern implementiert (z.B. Nvidia, ATI, IBM). Zuerst soll eine Laufzeitbibliothek erstellt werden, die es ermöglicht, LBM-Kernel mittels OpenCL auszuführen. Anschließend soll die Sprach- bzw. Compilerweiterung entworfen und implementiert werden.

Folgende Schritte sind zur Bearbeitung der Arbeit vorgeschlagen:

  • Einarbeitung in den OpenCL-Standard und die verschiedenen Implementierungen
  • Einarbeitung in das Lattice-Boltzmann-Verfahren, Analyse/Vergleich vorhandener Bibliotheken
  • Entwurf und Implementierung einer Laufzeitbibliothek zur Ausführung von LBM-Kerneln mittels OpenCL
  • Entwurf und Implementierung einer Sprach- bzw. Compilererweiterung
  • Messungen auf unterschiedlicher Hardware
  • 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]: Heuveline, V., Latt, J.: The Openlb Project: An Open Source and Object Oriented Implementation of Lattice Boltzmann Methods, In International Journal of Modern Physics, World Scientific Publishing Company, 2007
[7]: Quinlan, D., Ur, S., Vuduc, R.: An Extensible Open-Source Compiler Infrastructure for Testing, In Hardware and Software, Verification and Testing., Springer, Berlin, Germany, 2006

watermark seal