Deshalb ist Larrabee für realistische 3D-Spiele wichtig
Gerade hab ich mir zwei Demofilme zu Lara Croft – Underworld angesehen, und da ist mir mal wieder aufgefallen, wie wichtig realistische 3D-Darstellungen sind. Denn das gesamte Gameplay steht und fällt mit den physikalischen Verhaltensmustern des Spieletitels: Wie echt fällt der Regen auf eine strukturierte Oberfläche? Sieht Laras wehendes Haar wirklich naturgetreu aus? Was passiert mit Gras, wenn sich Mrs. Croft auf demselben geschmeidig abrollt?
All diese Aspkete (und viele mehr) werden mit dem englischen Terminus “Game Physiscs” zusammengefasst, und hier kommt eine Intel-Architektur ins Spiel, die wohl den gesamten Spielemarkt umkrempeln wird: Larrabee. Dahinter verbirgt sich vornehmlich die Idee, rechenintensive 3D-Aufgaben nicht mehr von einer oder mehreren Grafikkarten, sondern von einer CPU-basierten Einheit ausführen zu lassen. Damit ist Larrabee nichts anderes als ein x86-basierter Multicore-Verbund, der dank eines speziellen Befehlssatzes (LRBni) nicht nur für Excel-Tabellen taugt, sondern auch zum Berechnen und Darstellen aufwendiger 3D-Szenen.
So reagiert beispielsweise ein Ball unterschiedlich, je nachdem, ob er auf einer glatten Oberfläche landet oder auf einer weichen. Hinzu kommt der Wunsch vieler Spieler, 3D-Szenen immer komplexer darzustellen, also mit Dutzenden von verschiedenen Objekten, die sich alle realitätsnah verhalten müssen. Und das erfordert viel Rechenzeit und Speicherbandbreite.
Programmiermethoden: Daten- und Aufgabenparallelität
Bei der parallelen Programmierung unterscheidet man grundsätzlich zwischen drei Formen, die letztlich darüber entscheiden, welche Programmiermethoden man anwenden sollte.
Die eine Form der parallelen Programmierung orientiert sich an den zu verarbeitenden Daten, die zur Laufzeit der Anwendung anfallen. Ein gutes Beispiel für die Datenparallelität ist das Rendern eines Bildes, das aus vielen tausend Bildpunkten besteht, die sich unabhängig voneinander berechnen, zeichnen oder mit einem Filter versehen lassen.
Darin steckt also eine Menge an Multicore-Potenzial, wofür sich der Einsatz von OpenMP oder Intel TBB empfiehlt. Ein weiteres gutes Beispiel ist die Rechtschreibprüfung eines Textverarbeitungsprogramms. Hier können sämtliche Wörter simultan überprüft werden, da sie zueinander in keiner Abhängigkeit stehen.
Auf der anderen Seite existiert der Aufgabenparallelismus, der voneinander getrennte Aufgaben betrachtet, die sich vortrefflich parallel ausführen lassen. Ein gutes Beispiel hierfür ist Outlook, das aus unterschiedlichen Modulen besteht (Adressen, Kalender, E-Mail etc.), die sich grundsätzlich unabhängig voneinander ausführen lassen und damit auf separaten Prozessorkernen laufen können.
Multicore-Turbo für Visual Studio: Intel Parallel Studio
Erst gestern haben wir über die geplante Entwicklungsumgebung Intel Parallel Studio berichtet, die sich in Microsoft Virtual Studio einbinden lässt und C++-Programmierern und Software-Entwicklern dabei helfen soll, ihre eindimensionalen Singlethread-Anwendungen in leistungsfähige, parallelisierte Multithread-Applikationen zu verwandeln. Zwar befindet sich das Plugin noch in der Beta-Phase (für die Sie sich übrigens kostenlos anmelden können), das ist aber für uns überhaupt kein Grund, nicht schon mal einen Blick darauf zu werfen. Eine Kurzvorstellung.
Intel Parallel Studio setzt sich aus vier einzelnen Programmen zusammen, die entweder als Komplettpaket genutzt werden können oder aber jedes Tool für sich alleine.
Der Parallel Advisor untersucht bestehenden Sourcecode auf mögliches Parallelisierungspotenzial und schlägt bestimmte Routinen und Funktionen vor, mit deren Hilfe aus einfachen Programmen parallelisierte Anwendungen werden, die optimal auf Intel-Multicore-Plattformen laufen. Darüber hinaus analysiert der Advisor mögliche Programmkonflikte und nennt passende Lösungen.
Mehr Leistung mit mehreren CPUs: Multicore Computing
Der dritte und letzte Teil unserer kleinen Einführungsrunde hinsichtlich der Frage, was die Veranstaltung hier überhaupt soll, handelt vom Thema „Multicore“. Dass sich dahinter mehr verbirgt als die Frage, wie viele Kerne im Intel Core 2 Duo Prozessor stecken, dürfte klar sein. Es geht hier nämlich um zahlreiche Aspekte:
- Wie bringe ich meine Software dazu, auf Multiprozessorkern-Systemen optimal zu laufen?
- Welche Tools hat Intel für die Multicore-Optimierung meiner Software in petto?
- Welche Vorzüge bieten die Intel Threading Building Blocks und wie komme ich daran?
- Welche Ansätze parallelisierter Anwendungen gibt es eigentlich?
- Wie setze ich OpenMP für meine eigenen Software-Projekte sinnvoll ein?
- Wie programmiere ich überhaupt „multi-threaded“ Applikationen?
Darüber hinaus findet man auf der Multicore-Seite von Intel weitere nützliche Tipps und Hinweise. Zum Beispiel kann man via Feedburner Neuigkeiten aus dem Parallel-Universum abonnieren, die neuesten Blogeinträge lesen und sich im Forum umsehen, auf welche Hürden andere Programmierer stoßen.
Informationen rund um den Software Dev Blog
Dieser Blog zeigt die Vielfalt der modernen Software-Architektur und deren Auswirkungen auf aktuelle Anwendungen. Schwerpunkte hierbei sind die Themen Visual Computing (3D-Grafiken), Multicore (Core 2 Duo Prozessor & Co.) und Virtualisierung.
In regelmäßigen Beiträgen berichtet der Software Dev Blog über aktuelle Entwicklungen in diesen Segmenten, stellt nützliche Software vor, spricht mit den Machern erfolgreicher Software-Projekte und zeigt, was alles notwendig ist, um die eigene Anwendung für Intel-Plattformen zu optimieren.
Mit diesem Blog wollen wir vor allem Kontakt aufnehmen mit der großen Entwicklerschar, die auf Basis von Intel-Prozessoren Anwendungen für eigene Zwecke, aber auch im Auftrag ihrer Kunden konzipiert und realisiert. Lassen Sie uns teilhaben an den Hürden, Problemen und anderen Themen, mit denen Sie tagtäglich konfrontiert werden. Die Kommentarfunktion steht Ihnen 24 Stunden am Tag zur Verfügung …
