events
Auch in diesem Jahr veranstaltet die DESIGN&ELEKTRONIK wieder das Entwicklerforum »Embedded-System-Entwicklung« am 11. und 12. Juli 2012 in München. Neben einem technisch anspruchsvollen Vortragsprogramm ermöglichen verschiedene Workshops den Teilnehmern einen differenzierten Einblick in die Thematik.
Ausführliche Informationen:
www.embedded-entwicklerforum.de
Produkte des Jahres 2012
Linux /ARM
Linux ist heute erste Wahl geworden, wenn es um die Entscheidung für ein Betriebssystem in einem leistungsfähigen Embedded-System geht. Wie kann es sein, dass eine Open-Source-Software gerade bei Embedded-Systemen so erfolgreich ist?
Die große Konferenz für ARM-Systementwicklung am 11. und 12. Juli 2012 in München bietet Entwicklern die Gelegenheit, sich detailliertes Wissen über die aktuellen Cortex-Architekturen anzueignen, die mittlerweile zum Industriestandard avanciert sind.
Ausführliche Informationen:
www.arm-entwicklerkonferenz.de
embedded world Technology Report
Infos und Hintergründe rund um Android im Embedded-Umfeld.
Welche Embedded-Trends zeichnen sich ab? Im »embedded world Technology Report« gibt ein unabhängiger Expertenrat einen exklusiven Einblick in aktuelle Entwicklungen und zukünftige Trends im Embedded-Bereich.
Interessiert? Hier geht es zum kostenlosen Download
embedded world special
Wir haben aktuell von der weltgrößten Messe für die Embedded-Branche mit News, Videobeiträgen und Produktneuheiten berichtet.
Windows Embedded Standard 7
Was ist neu in Windows Embedded Standard 7? Lesen Sie alles rund um das neue Microsoft-Embedded-Betriebssystem Embedded Standard 7 in unserem Spezial.
Windows 7 - Special zum Download
Marktübersichten Embedded
Wer bietet was?
Schnelle Information auf einen Klick!
Software im sicherheitskritischen Bereich
Um die »Worst-Case Execution Time« zu erhalten, gibt es verschiedene Herangehensweisen – bequeme und weniger bequeme.
Multicore-Anwendungen
8 Tipps zum Parallelisieren und Debuggen von Multicore-Applikationen
Um Multicore-Prozessoren sinnvoll zu nutzen, müssen Software-Entwickler von jahrelang gepflegten Gewohnheiten Abschied nehmen und sich mit neuen Werkzeugen und Methoden beschäftigen.
Anzeige
Das Entwerfen von parallelen Programmen birgt eine ganze Reihe neuartiger Probleme und bringt neue Bugs mit sich, mit denen sich ein Software-Entwickler auseinandersetzen muss. Auch die Vorgehensweise bei der Programmgestaltung hat sich im Gegensatz zu seriellen Programmentwicklungen drastisch verändert. Im Folgenden werden ausgewählte Tipps für das Entwickeln „ge-threadeter“ Applikationen aufgezeigt. Bei dieser Gelegenheit wird beschrieben wie Intel Parallel Studio, ein Plugin-Tool zu Visual Studio für native Windows-C++-Entwickler, bei der Lösung dieser Probleme helfen kann.
Tipp 1: Entwickle und denke in parallelen Strukturen
Erfolgreiches Programmieren erfordert einen parallelen Software-Entwicklungsansatz. Es ist essentiell für den Entwickler, sein Programm genau zu kennen, bevor er parallele Elemente in sein serielles Programm einbaut, um die Applikationsleistung zu verbessern. Wichtigster Ausgangspunkt ist, den besten bekannten Algorithmus auch für die Parallelisierung zu verwenden. Ein paralleles Programm mit einem nicht optimierten Algorithmus wird im Vergleich zu einem seriellen Programm (mit einem optimaleren Algorithmus) ab einer bestimmten Problemgröße im Nachteil sein und langsamer ablaufen.
Als Software-Entwickler ist es wichtig, Konzepte wie Daten-, Task-, und Pipline-Parallelismus zu kennen. Man sollte aber auch mit Kommunikations- und Synchronisierungs-Overhead umgehen können. Auf diese Themen wird hier aber nicht im Detail eingegangen. Zu diesem Themenkomplex, wie man parallele Programme systematisch und algorithmisch angeht, gibt es eigene Literatur [1].
Hilfreich in dieser Phase ist der Intel Parallel Advisor. Dieses Werkzeug gibt dem Entwickler Verbesserungsvorschläge für ein serielles, zu parallelisierendes Programm an die Hand. Das Tool offeriert eine Methodik und eine Sammlung von Hilfs- Tools, die den Entwickler unterstützen, Nebenläufigkeit erfolgreich in sein Programm einzubauen. Ziel ist es vor allem, die Programmskalierbarkeit (bei steigender Kernprozessorzahl) zu gewährleisten. Der Parallel Advisor wird ab September Mitbestandteil der Intel Parallel Studio Suite.
Tipp 2: Schreibe Programme mit höherem parallelem Abstraktionsgrad
Paralleles Programmieren sollte mit Konstrukten bewerkstelligt werden, die einen höheren Abstraktionsgrad aufweisen. Es ist von Nachteil, mit Low-Level-Methoden wie etwa Winthreads oder Pthreads zu arbeiten. Diese sind extrem fehleranfällig, zeitaufwendig und für Außenstehende, die den Code verstehen wollen oder müssen, extrem schwer nachzuvollziehen. Statt das Threadmanagment selbst zu codieren, sollten C- und C++-Entwickler sich darauf konzentrieren, die Entwicklungsaufgabe auf einer höheren Ebene zu implementieren. Dies können sie besser mit domainspezifischen „Thread safe“-Bibliotheken bewerkstelligen, wie z.B. der Intel Performance Primitives (IPP) für Multimedia- Anwendungen, dem OpenMP Application Program Interface (API) und/oder den Intel Threading Building Blocks (TBB).
OpenMP ist ein standardisiertes skalierbares Modell, das ein einfaches und schrittweises Erweitern des seriellen Codes um parallele Programmsegmente bei symmetrischen Multiprocessing- Systemen (SMP) erlaubt. Es werden dazu so genannte Pragma-Anweisungen in die Programmsequenzen eines seriellen Quellcodes eingestreut, die besonders zeitintensiv sind (z.B. Schleifen). Die Lesbarkeit des ursprünglichen Programms wird nur unwesentlich verändert.
TBB erweitert C++ in einer von STL (Standard Template Library) bekannten Art und Weise um „thread-sichere“ Funktions-Templates und Container. Es bietet sich vor allem für objektorientiertes paralleles Programmieren an. Das Besondere an TBB sind der in Tipp 3 erwähnte Task-Scheduler und der auf paralleles Programmieren angelegte dynamische Memory-Allokator (siehe auch Tipp 5). Alle diese Werkzeuge sind übrigens Bestandteil des Intel Parallel Composer und des Intel C++-Compilers.
1. Teil: 8 Tipps zum Parallelisieren und Debuggen von Multicore-Applikationen
2. Teil: Tipps 3 bis 6
3. Teil: Tipps 7 und 8
4. Teil: Literatur und Autor
Weiterführende Links:








