Evaluation: OpenMP, OpenCL, CUDA, Microsoft AMP

High Performance Projekt zur statistischen Auswertung

Es wurden OpenCL, OpenMP, CUDA und AMP als Technologen und Programmierumgebung für ein „High Performance Projekt zur statistischen Auswertung“ untersucht.

Anforderung

Für das aktuelle Projekt werden statistische Auswertungen über Zahlenreihen unter Ausnutzung der Prozessorkerne und GPUs durchgeführt.

Für die Implementierung der Logik ist bereits die Entscheidung zu Gunsten der Intel Threading Building Blocks TBB gefallen.

Für die Programmierung der GPUs sollte in kleinen Tests Erfahrung gesammelt werden und eine Entscheidung für die Programmierung getroffen werden.

Kandidaten

Für die Programmierung habe ich OpenMP®, OpenCL der Khronos Group, CUDA von Nvidia und AMP von Microsoft angesehen bzw. in kleinen Beispielen getestet.

Die Entscheidung ist für OpenCL gefallen.

  • Unabhängigkeit der verwendeten Hardware (gegenüber CUDA und AMP)
  • Unabhängigkeit der verwendeten  Betriebssysteme
  • Unabhängigkeit der verwendeten Compiler
  • Besser zu steuern gegenüber OpenMP
  • Microsoft unterstützt nur OpenMP 2.0 zur Zeit und ich musste im Testcode wieder #ifdefs verwenden
  • AMP habe ich nur angelesen aber nicht getestet.

Verwendete Bibliothek

Nach einer kurzen Testphase verwende ich den „OpenCL C++ Wrapper“ der Khronos Group. Das Projekt Boost.Compute (kein Boost Projekt) habe ich mir ebenfalls angesehen und es ist als Kandidat noch im Rennen.

Testumgebung

Getestet wurde auf Mac Pro unter OSX mit CLion und CLang.

Vergleichswerte im Micro Benchmark

Vergleichswerte mit unterschiedlichen Implementierungen des „Micro Benchmark“ stelle ich vor, wenn die Implementierungen stabil sind.

Category: C++, Softwareentwicklung | Tags: , , , ,

Verwendete Entwicklungswerkzeuge im Jahr 2016

Neu hinzugekommen:

Bereits im Jahr 2015 verwendet

  • Aus Interesse ein wenig ADA mit GNAT und SPARK
  • Wechsel von C++ 98 zu C++ 11/14
  • C/C++ seit 1981
  • C# etwas für kleine Projekte
  • Microsoft Visual Studio 2010-2015
  • JetBrains YouTrack
  • JetBrains Resharper
  • CMake
  • Visual Lint
  • CppDepend
  • Visual Assist
  • Subversion
  • Git
  • RC WinTrans
  • InstallAware
  • VMware Desktop
  • Parallels Desktop
  • Windows 7 bis Windows 10, Windows Server 2012
  • OSX
  • SQLite
  • Boost
  • PKCS#11
  • CryptoPP (https://www.cryptopp.com)
  • OpenSSL

 

Projekt: Aufbau einer C++ Buildumgebung

Für ein neues C++ Projekt soll eine neue Buildumgebung geschaffen werden, welche eine Entwicklung auf OSX und Windows ermöglicht.

Das C++ Projekt startet im Februar 2016. Die Buildumgebung soll daher Anfang Februar funktional sein.

  • Die Entwicklung erfolgt gleichzeitig für Windows mit Microsoft Visual Studio und auf OSX mit JetBrains CLion.
  • Eingesetzt wird GIT für die Source Verwaltung, vermutlich mit Gitolite für die Verwaltung der Zugriffsrechte.
  • Projektmanagement und Bugtracking erfolgt mit YouTrack von JetBrains.
  • Als Continuous Integration Server wird TeamCity von JetBrains eingesetzt.
  • Testweise wird auch Upsource von JetBrains als CodeReview Tool getestet.
  • GIT, YouTrack, TeamCity und UpSource werden auf einem Debian Server laufen.
  • Die Entscheidung für die Datenhaltung ist noch ungeklärt. Es stehen SQL Datenbank, SQLite und XML zur Diskussion.

JetBrains CLion für OSX im Einsatz

Seit heute ist die Entwicklungsumgebung CLion von JetBrains im Einsatz für die C++ Softwareentwicklung unter OSX.

Kerberos – Single Sign-on in gemischten Umgebungen

Heute gekommen 🙂

  • Autor: Mark Pröhl
  • Verlag: dpunkt
  • Erscheinungsjahr: 2011
  • Originaltitel: Kerberos – Single Sign-on in gemischten Linux / Windows Umgebungen
Category: Fachliteratur | Tags:

Kryptografie

Beruflich gelesen. Sehr gut die Verfahren dargestellt.

  • Verfahren, Protokolle, Infrastrukturen
  • Autor: Klaus Schmeh
  • Verlag: dpunkt
  • Erscheinungsjahr: 2013
Category: Fachliteratur | Tags: ,

Verwendete Entwicklungswerkzeuge im Jahr 2015

  • Aus Interesse ein wenig ADA mit GNAT und SPARK
  • C/C++ seit 1981
  • C# etwas für kleine Projekte
  • Microsoft Visual Studio 2013
  • JetBrains YouTrack
  • JetBrains Resharper
  • CMake
  • Visual Lint
  • CppDepend
  • Visual Assist
  • Subversion
  • RC WinTrans
  • InstallAware
  • VMware Desktop
  • Parallels Desktop
  • Windows 7 bis Windows 10, Windows Server 2012
  • OSX
  • SQLite

Praxishandbuch BPMN 2.0

Ich habe das „Praxishandbuch BPMN 2.0“ beruflich gelesen. Es ist ein  guter Einstieg, der Praxistest folgt jetzt in 2016.

  • Autor: Jakob Freund und Bernd Rücker
  • Verlag: Hanser
  • Erscheinungsjahr: 2014
Category: Fachliteratur | Tags:

Clean Coder: Verhaltensregeln für professionelle Programmierer

Beruflich gelesen

  • Autor: Robert C. Martin
  •  Verlag: mitp Professional
Category: Fachliteratur | Tags:

The C++ Standard Library: A Tutorial and Reference

Beruflich gelesen

  • Autor: Nicolai M. Josuttis
Category: Fachliteratur | Tags: ,