Ausführliche Übersicht zur Multicore-Programmierung
Zugegeben, es ist auf diesem Blog ein wenig still geworden rund um das Thema Multicore-Programmierung. Das liegt daran, dass ich mich mit dem Thema hier schon ausführlich beschäftigt habe und sich die Themen grade ein wenig verschieben. Mit der Ankündigung des Intel AppUp Center während des letztjährigen Intel Developer Forum rückte das Netbook mit all seinen Facetten in den Mittelpunkt.
Das wird sicherlich auch noch ein wenig so bleiben, was aber nicht bedeutet, dass auf dem Software Dev Blog die parallele Verarbeitung von Programmcode keinen Platz mehr findet. Um dies unmittelbar zu belegen, möchte ich heute auf eine sehr ausführliche Übersicht aufmerksam machen. “Ultimativ” klingt immer ein wenig anbiedernd und angeberisch, aber in diesem Fall kommt der Begriff ziemlich nah an das heran, was die amerikanischen Kollegen unter dem Titel “Intel Guide for Developing Multithreaded Applications” zusammengetragen haben.
Diese wirklich umfangreiche Sammlung betrachtet sämtliche Aspekte der Parallelprogrammierung. Ob das das Multithreaden von Anwendungen im Allgemeinen ist oder spezielle Themen wie die Daten- und Ablaufsynchronisation oder das Speichermanagement – so detailliert konntet ihr euch dem Thema wohl selten widmen. Ok, das Ganze findet zwar auf Englisch statt, aber das sollte doch keine echte Hürde darstellen.
Ach ja, natürlich darf eine genaue Beschreibung sämtlicher Intel-Tools nicht fehlen, wenn es um das Multithreaden von Anwendungen geht. Also so Themen wie Intel Compiler, Parallel Inspector, OpenMP, Parallel Amplifier und viele mehr. Na, dann kann ich euch nur noch “Gut Stöber” wünschen und dass ihr möglichst viele Antworten auf eure parallelen Fragen findet. Die gibt es natürlich auch hier auf dem Software Dev Blog. Probiert doch einfach mal die Suchfunktion aus!
Intel AppUp Center öffnet seine Pforten
So, ihr Software-Entwickler mobiler Anwendungen für Netbooks, es ist soweit! Intel hat auf der CES 2010 seinen App Store offiziell eröffnet und seinem Baby den Namen Intel AppUp Center gegeben. Zwar liegt der App Store zunächst nur als Beta vor und auch nur in Englisch und nur für Windows, aber internationale Versionen sollen folgen und einen App Store für Moblin-Anwendungen soll es ebenfalls bald geben. Das ist nur eine Frage der Zeit.
Bis dahin solltet ihr weiterhin an euren angepassten Apps für Netbooks arbeiten, damit ihr sie rechtzeitig im Intel AppUp Center einstellen und somit eine Zielgruppe von rund 50 Millionen potenziellen Anwendern erreichen könnt. Hierfür müsst ihr euch lediglich für das Intel Atom Developer Program anmelden und eure Netbook-App einreichen. Den Rest erledigt dann Intel für euch. Und schon habt ihr am boomenden Netbookmarkt teil. Also, worauf wartet ihr noch?
Maxon setzt auf Intel Softwaretools für optimierte Apps
Dass Maxon alles dafür getan hat, ihre Software-Anwendungen wie Cinema 4D für die aktuellen Intel-Prozessoren zu optimieren, darüber habe ich schon vor längeren gebloggt. Und wie es der Zufall wollte (ok, der natürlich keiner war), konnten wir mit Maxon höchstpersönlich darüber reden, wie sie es immer wieder schaffen, dass ihre Anwendungen besonders performant auf Rechnern mit Intel-Architektur laufen.
Ein wesentlicher Punkt ist unter anderem der Einsatz des Intel C++ Compilers, der laut Maxon schon mal ohne nennenswerte Änderungen am Code etwa 15 Prozent mehr Speed bringt. Aber auch der Intel Thread Profiler steht bei Maxon ganz oben auf der Liste, wenn es darum geht herauszufinden, wie sich das parallelisierte Programm verhält, ob also die anfallenden Threads möglichst gleichmäßig auf die vorhandenen Ressourcen verteilt werden (Skalierung ist hier das Zauberwort).
Darüber hinaus kommen VTune Performance Analyzer und Intel Threading Building Blocks zur Sprache. Ok, dann würde ich mal sagen, den Rest solltet ihr euch am besten selbst ansehen. Viel Spaß dabei!
Die vier Schichten der Moblin-Linux-Distribution
Schaut man obiges Diagramm an, wird schnell klar, dass Moblin viel mehr ist als nur ein weiteres Linux-Derivat. Moblin bietet nämlich von Top to Buttom die passenden Tools und Schnittstellen, die für angepasste Anwendungen notwendig sind. Angepasste Anwendungen? Moblin ist ja ein Kunstwort aus “Mobile” und “Linux” und wurde speziell für den Einsatz auf tragbaren Geräten wie Netbooks, Nettops, MIDs und auch Smartphones konzipiert (letzteres wird allerdings noch ein wenig auf sich warten lassen).
Aus diesem Grund geht Moblin einen sehr konsequenten und klaren Weg, indem es die Eigenheiten des jeweiligen Gerätetyps möglichst optimal berücksichtigt. Das betrifft vor allem die Größe des Monitors, aber auch die unterschiedlichen Leistungsdaten wie Prozessor- und Speichertakt, Akkulaufzeiten und andere Parameter.
Moblin besteht grundsätzlich aus vier Schichten: Ganz unten befindet sich der Linux-Kern samt der notwendigen Treiber. Darüber treiben die App Services ihr Unwesen. Das sind vor allem die hardware-nahen Dienste für den Wifi- und Bluetooth-Stack, aber auch das Powermanagement lässt sich mit Hilfe der App Services einheitlich und über alle Plattformen hinweg konsistent implementieren.
Apps unter Mac OS X multicore-tauglich machen
Disclaimer: Dieser Beitrag ist ein Extrakt des Artikels “Mehrkern-Beschleuniger”, der in der mac-developer 1/2010 erschienen ist. Autor dieses Beitrags ist Maximilian Götzfried.
Ende August war ich bei Apple, um ein wenig mehr über deren Multicore-Beschleuniger Grand Central Dispatch zu erfahren. Diese in Snow Leopard implementierte Technik erlaubt es Anwendungsentwicklern, mit relativ wenig Aufwand, ihre Anwendungen multicore-tauglich zu machen. Und das ohne größeren Programmieraufwand, sondern lediglich mithilfe der C-API und den NSOperation-Klassen.
Das Tolle an GCD ist deren einfache Verwendung: Anstatt selbst Threads auf Basis von Tasks oder anderen Objekten zu erzeugen, kümmert sich GCD selbst darum. Das bedeutet aber für den Software-Entwickler, dass er sich für eine optimale Ausnutzung der vorhandenen Prozessorressourcen grundsätzlich Gedanken machen muss über die Programmlogik. Das Resultat seines überarbeiteten Programms sind einzelne Tasks, die je nach Programmablauf an die vorhandenen Multithreading-Queues übergeben werden können, wo sie von GCD bestmöglich verarbeitet werden.
Wie bereits angedeutet, stellt GCD zwei Möglichkeiten zur Verfügung, Programmcode zu multithreaden: Mithilfe der NSOperation-Klasse und der C-API. Beides soll kurz beleuchtet werden.
NSOperation: Warteschlangentechnik für asynchrone Tasks
Für das asynchrone, also zeitversetzte Ausführen von Anwendungen ist lediglich das Erstellen von NSOperation-konformen Objekten erforderlich, die dann an die zugehörige Warteschlange übergeben werden, die die Queue nach dem FIFO-Prinzip verarbeitet. Hierfür werden Tasks im Hintergrund ausgeführt, pausiert und zu Ende geführt. Es ist sogar möglich, die Anzahl der maximalen Threads festzulegen, was in Extremfällen ein einziger sein kann. Natürlich erlaubt GCD die ständige Rückkehr zum Main Thread.
Weitere Details zu Intels Cloud-Service “Parallel Universe”
Erst gestern habe ich darüber berichtet, dass Intel einen ganz neuen cloud-basierten Service vorgestellt hat, der sich Parallel Universe nennt. Dahinter verbirgt sich das kostenlose Angebot an Software-Entwickler, in häufiger Ermangelung eines Opto-Core-Rechners ihre parallelisierten Anwendungen auf deren Skalierbarkeit zu überprüfen. Das ist wirklich eine pfiffige Idee und könnte so manch einem Anwendungsentwickler (a) die Augen öffnen und (b) beim korrekten Multithreaden helfen.
Für ein paar weitere detaillierte Informationen rund um diesen Service hatte ich gestern Abend die Gelegenheit, an einer Telefonkonferenz mit James Reinders teilzunehmen. James ist Director Intel Software Development Products und beschäftigt sich schon seit vielen Jahren mit dem Thema Parallelprogrammierung. So springt er beispielsweise gerade auf der Supercomputing Conference 2009 herum, um dort vermutlich unter anderem sein paralleles Universum vorstellen. Von ihm erfuhren wir ein paar sehr interessante Details zum neuen Cloud-Service:
- Technisch gesehen ist es nicht nur ein Cloud-Rechner, sondern es sind bis zu drei Nehalem-basierte Server, die mit jeweils zwei Quadcore-CPUs bestückt sind. Das ermöglicht inklusive Hyperthreading 16 echte und parallele Hardware-Threads. Sollte ein Parallelrechner nicht ausreichen, werden ein oder zwei weitere automatisch dazugeschaltet. Dies bleibt dem Anwender natürlich vollständig verborgen. In Zukunft werden je nach Erfolgt von Intel Parallel Universe leistungsfähigere Maschinen eingesetzt, mit denen sich auch mehr parallele Threads simulieren lassen. Aber für die aktuellen Anwendungen ist eine Skalierung von maximal 16 Threads völlig ausreichend.
- Sämtliche Analysen, die von Software-Entwicklern eingereicht werden, wandern in eine Warteschlange, sodass es zwar Wartezeiten geben kann, diese allerdings kaum auffallen werden, da die Ergebnisse unmittelbar nach deren Berechnung im Webbrowser dargestellt werden.
Multicore-Testumgebung in der Cloud: Intel Parallel Universe
Das Entwerfen und Entwickeln parallel programmierter Anwendungen ist keine einfache Sache. Man muss nicht nur beim Entwurf der Software viele Dinge berücksichtigen, sondern will natürlich auch sicher sein, dass das Programm aufgrund der möglichen Abhängigkeiten (sowohl in der Logik als auch bei den Daten) möglichst fehlerfrei läuft. Vor allem beim Multithreaden kommt es nämlich immer wieder zu so hässlichen Dingen wie Dead Locks und Data Races, die unverhofft und völlig überraschend zur Laufzeit auftauchen.
Damit es erst gar nicht so weit kommt, stellt Intel seit Ende Mai dieses Jahres für C- und C++-Anwendungen Parallel Studio zur Verfügung. Mit diesem Plug-in für Visual Studio lassen sich nicht nur möglichst fehlerfreie, sondern auch möglichst skalierende Programme entwickeln, die je nach Anzahl der verfügbaren Prozessorkerne möglichst linear ablaufen. Soll also heißen, dass bei zwei Kernen eine Anwendung doppelt so schnell läuft, auf vier Kernen viermal so schnell usf. – theoretisch zumindest.
Doch wer hat schon unbedingt einen Quadcore- oder noch leistungsfähigeren Rechner im Testlabor rumstehen, mit dem sich diese Skalierung effizient und zuverlässig testen lässt? Eben. Und hier kommt ein ganz neuer Cloud-Service von Intel zum Einsatz, der seit heute kostenlos verfügbar ist. Sein Name: Intel Parallel Universe. Seine Idee: Das Testen parallelisierter Apps mithilfe eines 16-Core-Rechners, der via Internet zur Verfügung steht. Die Voraussetzungen: ein Internetbrowser, Zugang zum Intel Software Network und Parallel Studio für weitere Auswertungen und Analysen.
Preview: Das leistet das Intel App Store SDK
Auch wenn ihr euch noch ein paar Tage gedulden müsst, bis das Intel App Store SDK verfügbar ist, will ich es nicht versäumen, schon mal einen Blick auf das Software Development Kit zu werfen. Nicht zuletzt, um damit die Wartezeit ein wenig zu verkürzen.
Die gute Nachricht zuerst: Das App Store SDK erfordert keine langwierigen Einarbeitungszeiten, da es sich in die vorhandene Entwicklungsumgebung integrieren lässt. Egal also, ob ihr mit Eclipse Java-, Mac-OS- oder Linux-basierten Quellcode entwickelt oder lieber mithilfe von Visual Studio Windows-Programme schreibt – das Intel App Store SDK bietet für nahezu jeden Software-Entwickler die passende Plattform. Damit lassen sich sämtliche Prozesse, die für das Erstellen von neuer Software für Netbook und Co. und das Transferieren in den Intel App Store notwendig sind, unter einer einzigen Oberfläche durchführen. Das spart Zeit, Geld und Nerven.
Das AppStore SDK beherrscht folgende Dinge:
- Mithilfe eines eigenen Assistenten lässt sich ein neues Projekt anlegen, das die notwendigen Komponenten wie Codeschnipsel für die Abrechnung und das Tracking automatisch integriert. Anschließend könnt ihr den Programmcode wie gewohnt schreiben, testen und mehr.
- Innerhalb der eigenen Entwicklungsumgebung stellt das SDK den Komponentenkatalog zur Verfügung. Damit stehen sämtliche Tools anderer Entwickler zur Verfügung, die man für das eigene Projekt einsetzen kann, ohne dafür die IDE verlassen zu müssen. Bezahlen müsst ihr dafür aber wohl schon (bis auf die kostenlosen Komponenten).
- Die Abrechnungsfunktionen kann man ebenfalls direkt aus der Entwicklungsumgebung aufrufen.
Intel und Rapidmind gemeinsam in Sachen Multicore
Intel hat kürzlich die Multicore-Schmiede Rapidmind akquiriert. Da könnte man im ersten Moment die Frage stellen: “Warum tut Intel so etwas?” Schließlich gibt der Prozessorhersteller seit vielen Jahren große Dollarbeträge für Tools aus, die Software-Entwickler dabei helfen sollen, ihre Anwendungen für die zahlreichen Intel-Plattformen zu optimieren. Sieht man sich aber das Portfolio von Rapidmind etwas genauer an, wird schnell klar: Dieser Zusammenschluss folgt einer klaren Logik und bietet für beiden Seiten große Vorteile.
Zum einen werden die Rapidmind-Produkte und Lösungen in Zukunft von Intel vermarktet, was deren Reichweite natürlich drastisch erhöht. Zum anderen kommt Intel in den Genuss, die volle Bandbreite – sowohl technologisch als auch ressourcen-seitig – von Rapidmind zu nutzen. Und das geht meines Erachtens in diverse Richtungen.
Rapidmind-Tools wie Code Optimizer, Load Balancer, Data Manager und Diagnostics sind möglicherweise sehr gute Ergänzungen zu den vorhandenen Intel-Werkzeugen wie Parallel Studio, Thread Checker und Intel TBB. Vor allem, wenn man die Bandbreite der unterstützten Hardware seitens der Rapidmind-Tools genauer betrachtet: Ok, AMD-Prozessoren wird Intel wohl nicht im Visier haben, aber Grafiklösungen wie die kommende Larrabee-Plattform waren für Intel sicherlich ein wichtiger Kaufgrund.
Mac OS X 10.6 erleichtert die Multicore-Programmierung
Anfang Dezember vorigen Jahres hab ich schon mal ein wenig über die nächste OS-Version des Apple-Betriebssytems geschrieben. Und gestern erreichte mich eine E-Mail mit folgendem Inhalt:
Hallo,
vor wenigen Minuten solltest Du die Pressemeldung zu Mac OS X Snow Leopard bekommen haben. Am Freitag, 28. August, etwas früher als erwartet, ist die neue Version des fortschrittlichsten Betriebssystems der Welt erhältlich!
Wir möchten Dich noch am selben Tag zu einem kurzen Pressebriefing zur neuen Version des Desktop-Betriebssystems einladen, um Dir einige der Wichtigsten der neuen Verbesserungen und Technologien vorzustellen – von ‘Grand Central Dispatch’ (GCD) bis zur serienmäßigen Unterstützung für Microsoft Exchange.
Lust und Zeit aus erster Hand alles über Mac OS X Snow Leopard zu erfahren, mit den Fachleuten zu diskutieren und selbstverständlich im Anschluss an das Briefing eine Version der neuen Software mitzunehmen?!
Ob ich Lust und Zeit habe?! Na klar habe ich. Denn ich will endlich ein wenig mehr wissen über die geplanten Features des Schneeleoparden, wenngleich es kein ganz großes Update wird. Aber eins steht schon fest: Apple spendiert seiner sechsten OS-X-Version ein neues Tool, mit dem das Programmieren von Multicore-Anwendungen einfacher werden soll: Grand Central Dispatch (GCD).
GCD wird Bestandteil des OS-X-Kernels sein und damit nicht anwendungs-, sondern betriebssystem-nah arbeiten. Und das wiederum soll eine Vereinfachung der Multicore-Programmierung mit sich bringen, da nicht mehr einzelne Multithread-Anwendungen aufeinander abgestimmt werden müssen. Hierfür soll GCD die globale Verwaltung der notwendigen Threads übernehmen und nicht mehr benötigte Ressourcen automatisch freigeben.
