Intel veröffentlicht Power Gadget 2.0 zum kostenlosen Download
Cleveres Tool, nicht nur für Programmierer, sondern auch für Systemadministratoren und System-Builder: Mit dem neuen Power Gadget 2.0 können Sie bei Sandy Bridge-Prozessoren den Energieverbrauch und die Prozessorfrequenz in Echtzeit messen. Dafür laden Sie (kostenlos natürlich) ein kleines Windows 7-Gadget (zusammen mit Treibern und Libraries) auf Ihren Desktop, das Ihnen in Watt-Angaben die CPU-Belastung anzeigt. Diese Angaben holt sich das nützliche Programm direkt aus den Energy Conuters des Prozessors. Folge: Die Messwerte sind genauer und schneller, als wenn diese über Third-Party-Tools vom Motherboard geschleust werden.
Gedacht ist das Tool sowohl für Notebooks, Desktop-PCs als auch Server mit Windows 7.
Im Gegensatz zur früheren Version verfügt das neue Release über Support für Multi Socket-Systeme und die Möglichkeit per API-Layer (diverse Librariers und DLLs) via C/C#/C++ oder JavaScript relevante Energieinformationen auszulesen und weiterzugeben. Sie können das Tool über das Gadget bedienen oder auch über die Kommandozeile steuern. Dafür steht Ihnen die Funktion PwrLogSample.exe zur Verfügung.
Systemvoraussetzungen:
- Windows 7 32-bit oder 64-bit
- Windows Server 2008, Windows Server 2008 RC2 (64-Bit Server)
- Microsoft .Net Framework 4
- Microsoft Visual C++ 2010 SP1 (x86 oder x64 anhängig vom OS)
- Sandy Bridge-Prozessor
Intel veröffentlicht GPA 4.2 – kostenloser Download für Teilnehmer des Intel Visual Adrenaline Developer Programms
Eines der besten und wichtigsten Developer-Tool-Sets für die Analyse und Optimierung grafischer Berechnungen in 3D-Spielen und Animationen erscheint nun in einer neuen Version. Die Rede ist von den Graphics Performance Analyzers, kurz GP 4.2.
Hier eine schnelle Leistungs- und Funktionsübersicht für Spiele-Entwickler, die GPA noch nicht kennen. Das Set besteht aus drei Programmen:
- Intel GPA Frame Analyzer ist ein intuitiv bedienbares Tool zur Analyse und Optimierung einzelner Frames.
- Intel GPA System Analyzer Heads-up Display (HUD) bietet eine erste und grundlegende (Fehler-)Analyse, ermittelt Bottlenecks und misst die Grafik-Performance auch hinsichtlich möglicher Microsoft 3D-Effekte
- Intel GPA Platform Analyzer stellt eine Zeitskalenansicht für die Analyse von Tasks, Threads, Microsoft DirectX, OpenCL und anderen GPU relevaten Applikationen zur Verfügung.
Wenn Sie mehr darüber erfahren möchten, empfehle ich Ihnen diesen Beitrag von der GDC Europe 2011 zum Thema GPA.
Nun zu den Neuerungen der Version 4.2. Gegenüber der Version 4.1 vom Anfang des Jahres kamen abgesehen von einigen Fixes folgende Funktionen hinzu:
- Aktualisierte Intel Instrumentation und Tracing Technology (Intel ITT): Mehr Tracing-Informationen werden gesammelt, um typische Problemfelder wie Flaschenhälse noch exakter zu ermitteln
- Die Task Timeline Ansicht stellt nun auch Task Sub-States dar
- Task-Daten können nun auch über die OS- Scheduler Informationen hinaus abgerufen werden
- Task-Farben können nun flexibler angepasst werden um die Übersichtlichkeit der Darstellung zu verbessern
- In der Zeitskalenansicht kann der Anwender nun eigene Tracks hinzufügen
Neugierig geworden? Dann probieren Sie GPA doch selbst in Ihrem persönlichen Umfeld aus. Als Mitglied des Intel Visual Adrenaline Developer Programms können Sie die Tool-Sammlung kostenlos downloaden. Und hier können Sie sich für das Intel Visual Adrenaline Developer Programm registrieren, wenn Sie noch nicht dabei sind.
Andernfalls kostet GPA 4.2 299 US-Dollar und wird hier angeboten.
News-Beiträge, Workshops, Tutorials und Videos zu dem cleveren Toolset können Sie übrigens regelmäßig hier abrufen.
Das leistet Flow Graph von Intel Threading Building Blocks 4.0
Mitte September, passend zum Intel Developer Forum 2011, stellte der Chiphersteller die vierte Version seiner C-/C++-Multithhreading-Bibliothek Threading Building Blocks vor. Eine wichtige Neuerung von Intel TBB 4.0 ist der Flow Graph, mit dem sich Abhängigkeiten zwischen Funktionen und anderen Konstrukten grafisch darstellen und damit einfacher analysieren lassen. Da ich über den Flow Graph noch nicht ausführlich berichtet habe, hole ich dies hiermit nach.
Solch ein Flow Graph besteht aus drei Elementen: das Graph-Objekt, Knoten und Verbindungen. Das Objekt stellt Methoden zur Verfügung, mit deren Hilfe Tasks ausgeführt und beendet werden können. Die Knoten hingegen erstellen, transformieren und speichern Nachrichten. Und die Verbindungen machen aus dem Graph eine Einheit, indem sie die Knoten miteinander verbinden und auf diesem Weg die Nachrichten von Knoten zu Knoten senden. Es gibt diverse Typen von Knoten, die sich je nach Aufgabe einsetzen lassen:
Funktionen: Hierfür sind vier Typen vorgesehen: source_node, continue_node, function_node und multioutput_function_node.
Speichern (Buffering): Hierbei wird unterschieden in buffer_node, queue_node, priority_queue_node und sequencer_node.
Teilen/Vereinen (split/join): Die zugehörigen Knoten lauten queueing_join, reserving_join, tag_matiching_join, split_node und nor_node.
Diverse: Darunter fallen broadcast_node, write_once_node, overwrite_node und limiter_node.
Und so sieht das Ganze in der Symbolansicht aus:

Diese Knoten werden von Intel TBB Flow Graph unterstützt
Im folgenden Bild ist ein möglicher Einsatz des Intel TBB Flow Graph zu sehen. Dabei soll der Verlauf einer Wellenfront mit Hilfe einer Reihe von Continue-Knoten dargestellt werden. In diesem Beispiel kann eine Berechnung erst dann ausgeführt werden, sobald die Berechnungen oberhalb und links von ihr abgeschlossen sind. Ist dies geschehen, erhält der jeweilige Knoten eine Nachricht vom Typ contiune_msg.

Mit Hilfe dieses Beispiels soll der Verlauf einer Wellenfront berechnet werden
Ein komplettes Beispiel solch einer Flow-Graph-Implementierung zeigt der zugehörige Blogbeitrag von Michael Voss.
.NET-Portierungstool MonoDevelop 2.8 mit neuen Funktionen für Mac-Entwickler
Es ist wohl der Traum eines jeden .NET-Entwicklers: Wie portiere ich meinen existierenden C#-Quellcode mit möglichst wenig Aufwand auf weitere Plattform, sodass ich meine Software-Programme einer größeren Anwenderschar zur Verfügung stellen kann. Mit dem unter General Public License 2.1 stehenden Entwicklerumgebung MonoDevelop wird dieser Traum wahr, und ab sofort steht die verbesserte Version 2.8 zum Download zur Verfügung. Folgende wesentliche Neuerungen bietet das Portierungs- und Entwicklertool:
Der Quellcode-Editior wurde um neue Funktionen für das Projektmanagement erweitert. Das bedeutet unter anderem, dass MSBuild-Projektdateien mit Visual Studio durch das Update kompatibler und darüber hinaus angepasste Frameworks unterstützt werden. Auch neu: die Syntax lässt sich farblich individuell darstellen, indem man eigene Farbschemen festlegt und diese je nach Projekt einsetzt.
Mac-Entwickler können ab sofort Xcode 4 für das Schreiben ihres Quellencodes einsetzen. Somit können beispielsweise Interface-Builder-Dateien mithilfe von Xcode 4 editiert werden. Desweiteren sollen neue MonoTouch-Beispiele dabei helfen, Xcode 4 besser einzusetzen.
Außerdem wird der Testing-Services TestFlight unterstützt. Hierfür müssen Sie sich lediglich auf testflightapp.com anmelden, das zugehörige SDK in Ihre Build-Datei integrieren, dieselbe hochladen, testen lassen, fertig. Darüber hinaus lassen sich die Pfade zum Portierungstool MonoTouch und zum iOS SDK besser konfigurieren, es gibt neue Projektvorlagen für iPhone und iPad und die neue Storyboard-Funktion, die unter iOS 5 zur Verfügung steht, wird ebenfalls unterstützt.
MonoDevelop 2.8 können Sie von der Download-Seite auf Ihren Rechner laden. Unterstützt werden Windows, Mac OS X sowie die Linux-Distributionen openSUSE, SLE, Debian und Ubuntu.
Intel Threading Building Blocks 4.0 stehen mit neuen Funktionen bereit
Als ob ich es geahnt hätte: erst am Freitag habe ich über die Intel Parallel Building Blocks geschrieben, den “großen Bruder” der Intel Threading Building Blocks (Intel TBB). Und heute erfahre ich, dass die Multithreading-Bibliothek von Intel ab sofort als Major Release 4 erhältlich ist. Na, das ist mir ja wohl einen genaueren Blick wert.
Eine wichtige Verbesserung bzw. Neuheit stellt der Flow Graph dar, den man ja schon im fünften Update der Intel TBB 3.0 vorgefunden hat, allerdings noch nicht in der finalen Version. Dies ist mit Intel TBB 4.0 geschehen, und Software-Entwickler werden diese neue Funktion lieben.
Denn mit dem Flow Graph lassen sich Abhängigkeiten zwischen einzelnen Berechnungen und Algorithmen grafisch darstellen. Das betrifft sowohl statische als auch dynamische Operationen. Dies ist vor allem bei der Visualisierung von parallelisierten Codeabschnitten sehr hilfreich, da vor allem in diesen speziellen Fällen unvorhersehbare Nebeneffekte auftreten können, die mit Flow Graph unter Umständen sichtbar werden.
Neben Flow Graph spielen neue Mechanismen in TBB 4.0 ein weitere wesentliche Rolle, mit deren Hilfe Speicheroperationen auf definierte Bereiche beschränkt werden können. Diese Memory Pools eignen sich ebenfalls dazu, mögliche Speicherprobleme bei parallel programmierten Codeabschnitten zu vermeiden.
Für die explizite Parallelprogrammierung kommt in Intel TBB 4.0 eine Concurrent Memory Queue zum Einsatz, mit deren Hilfe die Abarbeitung paralleler Aufgaben einfacher gewichtet, also priorisiert werden können. Und mit den neu eingeführten Concurrent Unordered Sets können Software-Entwickler thread-sichere Container zum Ablegen von Nutzerobjekte erstellen und per Hashkey nutzen.
Darüber hinaus lassen sich auch Tasks und ganze Task-Gruppen priorisieren, und zwar auf drei verschiedenen Ebenen, nämlich Low, Normal und High. Last but not least unterstützt der GCC dank Intel TBB 4.0 ab sofort thread-sichere atomare Operationen, was Parallelcode noch effizienter machen soll.
Intel Threading Building Blocks 4.0 gibt es in Varianten für Windows, Linux und Mac OS X, und zwar kostenfrei, wenn man damit nicht-kommerzuielle Projekte betreibt (auf Basis der GPLv2 mit Runtime Exception). Für kommerzielle Projekte stehen diverse Kaufversionen von Intel bereit. Und das inklusive Support.
Intel veröffentlicht Parallel Studio XE 2011 für Fortran-Entwickler
Über die Programmier-Suite Parallel Studio XE 2011 habe ich ja hier schon diverse Male berichtet: ob in Form eines Videointerviews, ob vom Composer XE als Beta-Programm oder vom VTune Amplifier XE in Kooperation mit OpenCL – C- und C++-Programmierer finden hier immer erstklassige Werkzeuge.
Heute gibt es wichtige Neuigkeiten für Fortran-Programmierer, denn Intel bietet ab sofort eine angepasste Version der Entwickler-Suite Parallel Studio XE 2011 an, die sich Fortran Studio XE 2011 nennt und sämtliche Komponenten bietet, die man auch von Parallel Studio XE 2011 kennt. Dazu gehört der Fortran-Composer, den es für Windows, Mac OS X und Linux gibt. In diesem Paket befinden sich neben dem Fortran-Compiler Multicore-optimierte Bibliotheken, spezielle Vektor-Funktionen und die Intel Parallel Building Blocks, die Thread-sichere Funktionen zur Verfügung stellen.
Darüber hinaus gehört zu Fortran Studio XE 2011 auch das Analyse-Tool VTune Amplifier XE und das Speicher-Überprüfungs-Werkzeug Inspector XE, das Intel für Fortran-Zwecke angepasst hat, da es ja bisher nur C- und C++-Entwicklern zur Verfügung stand.
Damit entspricht Fortran Studio XE 2011 funktionsseitig vollständig Parallel Studio XE 2011, allerdings mit angepassten und aktualisierten Komponenten. Dazu gehört das Update 12.1.0 des Fortran-Compilers, dem Intel eine Reihe an Verbesserungen spendiert hat. Dazu gehören folgende Funktionen:
- ALLOCATE auf Basis eines polymorphen SOURCE= wird jetzt unterstützt
- zahlreiche neue Visual-Studio-2010-Funktionen wie der Code-Browser (aber nur für Visual Studio 2010)
- OpenMP 3.1 wird jetzt unterstützt
- die Intel Math Kernel Library wurde auf 10.3 Update 6 aktualisiert
Weitere Infos zu Fortran Studio XE 2011 bekommen Sie in dem zugehörigen Blogbeitrag, in dem Steve Lionel von Intel ausführlich auf die Entwickler-Suite eingeht.
Live von der GDC Europe 2011: Philipp Gerasimov im Interview
Wenige Stunden vor seiner offiziellen Session habe ich Philipp für ein Kurz-Interview verpflichten können. Philipp ist Senior Application Engineer bei Intel, blickt auf eine langjährige Developer-Erfahrung zurück und ist Experte für Intel Graphics Performance Analyzers.
Im Interview erklärt er, wer GPA unbedingt braucht, welche Verbesserungen die Version 4.1 gegenüber dem Vorgänger verspricht und wie Sie sehr, sehr günstig an die aktuelle Version kommen, um die Grafikleistung auch Ihrer eigenen Spiele zu optimieren.
Hier das sehr sehenswerte Video dazu:
Später werde ich von noch von seiner Session berichten.
Tech-Interview: Mit Java-Extension einfach parallel programmieren
Die Kollegen vom SoftTalk-Blog hatten die Gelegenheit, ein Interview mit Patrick Viry zu führen, der eine Software-Firma in Paris betreibt. Er entwickelt dort mit seinem Team Erweiterungen für etablierte Progammiersprachen und fokussiert sich derzeit mit seinen Ateji PX Extension auf Java. Die Antworten fand ich so interessant, dass ich sie in Auszügen wiedergeben möchte. Das komplette Interview können Sie auf dem SoftTalk-Blog nachlesen.
Wie schafft es Ateji, die Parallelprogrammierung einfacher zu machen?
Nun, zunächst haben wir eine bestehende Sprache erweitert (nämlich Java), sodass es nicht notwendig ist, eine neue Sprache zu lernen (weitere sollen folgen). Dann haben wir auf Basis einer mathematischen Formel eine parallele Extension entwickelt, mit deren Hilfe sich parallele Ausdrücke mit einem einfachen Operator kombinieren lassen. Wenn Sie beispielsweise eine Funktion a und b parallel ablaufen lassen wollen, müssen Sie das lediglich als a || b in Ihren Quellcode einfügen.
Welche Programmiermodelle unterstützen Sie?
Dazu gehören eine ganze Menge:
- task-basierte Modelle wie Cilk
- daten-basierte Modelle wie OpenMP
- rekursive und spekulative parallele Konstrukte
- und einiges mehr.
Worin unterscheiden sich die Ateji-Extensions von anderen Erweiterungen, die es zum Zwecke der Parallelprogrammierung bereits gibt?
Nun, da gibt es eine Reihe von Unterschieden:
- Chapel, X10, Fortress, etc. adressieren den Bereich des High Performance Computing (HPC), sind also vor allem für Supercomputer ausgelegt. Ateji PX wurde für “einfache” Java-Entwickler geschrieben, die Anwendungen für herkömmliche Multicore-Server und -Cluster schreiben.
- Es handelt sich dabei im eine Spracherweiterung, die mit Standard-Java-Code kompatibel ist.
- Der einfach zu erlernende ||-Operand erlaubt es, diverse Parallelisierungs-Konstrukte mithilfe einer einzigen Sprache auszudrücken.
- Unsere Extension basiert auf einer erprobten, zuverlässigen mathematischen Formel, sodass wir genau vorhersagen können, was innerhalb des parallelen Konstrukts passieren wird. Das bedeutet auch, dass der Compiler mögliche Fehler wie Data Races relativ genau vorhersagen kann.
Wie reagieren Entwickler auf Ihre Java-Extension?
Nun, unsere Hauptaussage, dass mit Ateji PX die Parallelprogrammierung einfacher wird, ließ sich schon des öfteren bestätigen. So können Entwickler in der Regel innerhalb eines halben Tages ihr erstes parallel programmiertes Programm schreiben und zum Laufen bringen. Und ein großes Bankinstitut hat es tatsächlich geschafft, innerhalb von zwei Tagen ihre Java-Anwendung derart zu parallelisieren, dass sie hinterher fünf mal schneller lief als ohne den Parallelisierungsaufwand.
Weitere Informationen zur Ateji PX Extension für Java gibt es im zu zugehörigen PDF oder auf der Ateji PX Webseite. Es gibt auch eine Case Study, die zeigt, wie sich mit Hilfe von Ateji eine Server-Anwendung mit 16 Prozessorkernen um den Faktor 12,5 beschleunigen ließ.
Parallelisierungspotenzial von Anwendungen mit Hilfe von Parkour bestimmen
Also, es gibt ja Tools, die kaum ein Mensch kennt, was wirklich eine Schande ist. Denn mit einem Werkzeug wie Parkour, das begabte Wissenschaftler der Universität von Kalifornien in San Diego entwickelt haben, lässt sich das Leben eines Software-Ingenierus sicherlich vereinfachen. Was aber genau tut Parkour hierfür?
Nun, zunächst einmal stelle man sich vor, dass man eine seriell/sequentiell programmierte Anwendung gebaut hat, von der man gerne wissen möchte, ob sie auf einem Multicore-System schneller laufen würde, wenn sie parallel programmiert wäre. Und das betrifft schließlich einen Großteil sämtlicher Computersysteme, die derzeit am Markt zu kaufen sind. Denn das Parallelisieren von Software-Anwendungen kostet Zeit und Geld und sollte damit wohl überlegt sein.
Und genau hier setzt Parkour an. Anhand einer hirarchischen Analyse sämtlicher kritischen Pfade einer Anwendung (Hierarchical Critical Path Analysis) ermittelt das Tool diejenigen Codebereiche, die sich ganz besonders für die Parallelisierung von seriellem Code eignen. Hierzu gehören vor allem Schleifen und Rekursionen, aber auch andere Konstrukte. Für diese Analyse muss allerdings keine Instrumentalisierung (Instrumantation) des Codes vorgenommen werden, da dies der Parkour-Compiler übernimmt. Das Ergebnis der vollständigen Anaylse einer Anwendung mit Hilfe von Parkour stellt eine Vorhersage anhand eines 64-Core-Systems dar. Damit lässt sich relativ genau prognostizieren, in welchem Ausmaß die serielle Anwendung im parallelisierten Fall skalieren würde, und zwar auf 1, 2, 4, 8, 16, 32 und 64 Prozessorkernen.
Die Grenzen von Parkour werden allerdings bei kurzem Nachdenken recht schnell klar: Neben der hilfreichen Aussage, in welchem Umfang die Anwendung auf x Kernen laufen würde, fehlen nützliche Hinweise, in welchen Bereichen die Parallelisierung des Software-Programms sinnvoll wäre. Hierfür benötig man also andere Tools, so wie Intel Parallel Advisor oder CilkView, wobei CilkView ähnlich wie Parkour arbeitet. Parallel Advisor hingegen gibt Auskunft darüber, an welchen Stellen Optimierungspotenzial besteht und wie dies zu implementieren ist. Allerdings steht Parallel Advisor nur C/C++-Entwickler zur Verfügung. Mehr Infos hierzu finden Sie auch bei Intel.
Ach ja: Die Herren Amdahl und Gustafson haben sich schon vor vielen Jahren zur Skalierbeit von Software-Anwendungen so ihre Gedanken gemacht.
Mit JSIL .NET-Anwendungen in Javascript-Code umwandeln
Heute wage ich mal wieder einen der Über-den-Tellerrand-Blicke. Es geht konkret um die Möglichkeit, mithilfe eines speziellen Compilers .NET-Anwendungen in Javascript-Code zu überführen. Der Name dahinter: JSIL. Dieses Tool macht dabei nichts anderes, als den CIL-Bytecode der .NET-Anwendung in browser-tauglichen Javascript-Code umzuwandeln, der dann direkt aus dem Webbrowser heraus gestartet werden kann. Darüber hinaus generiert JSIL im Gegensatz zu anderen Cross-Compilern lesbaren und einfach zu testenden JavaScript-Code, der die Struktur des ursprünglichen .NET-Quellcodes beibehält.
Die auf der zugehörigen Webseite verfügbaren Beispiele zeigen recht eindrucksvoll, wie das Ganze aussehen kann. OK, Tetris ist nicht so der Brüller, aber das Indiana Jones-Verschnitt-Spiel kann sich durchaus sehen und spielen lassen. Das Spiel läuft recht flüssig, je nach vorhandener Hardware. Und bei der Wahl des Browsers sollte man ebenfalls wählerisch sein: So werden nur die aktuellen Webbrowswer wie Internet Explorer 9, Firefox 4, Safari 5 und Chrome 11 vernünftig unterstützt, da diese den noch recht neuen JavaScript-Standard ECMAScript 5 sowie HTML5 beherrschen. Alle Opera-Anwender werden sich daher noch ein wenig gedulden müssen.
Es sind lediglich vier Schritte notwendig, um JSIL für seine eigenen Zwecke einzusetzen:
- Erstellen Sie mithilfe von Git eine Kopie des zugehörigen Repositories (vergessen Sie die Submodule nicht).
- Erzeugen Sie mithilfe von Visual Studio 2010 (ja, die Express-Version funktioniert auch) die Build-Datei JSIL.sln.
- Lassen Sie die so erzeugten JSILc.exe über Ihre .NET-Anwendungen laufen.
- Versuchen Sie, die entstandenen Fehler zu korrigieren (JSIL befindet sich noch im Beta-Stadium).
Ach ja: JSIL ist nicht der erste Versuch, .NET in Java- oder JavaScript-basierten Code umzuwandeln. Die Projekte IKMV.NET und XMLVM haben dies bereits vorgemacht. Vor allem das XMLVM-Projekt ist für Entwickler mobiler Anwendungen äußerst interessant, da sich auf diesem Weg Android-Apps in iPhone- und iPad-kompatible Anwendungen konvertieren lassen. Hierfür bietet XMLVM die Möglichkeit, Java Bytecode in Objective-C-Code umzuwandeln.
Intel OpenCL SDK 1.1 als Windows-Beta und Linux-Alpha
Intel macht mehr und mehr Ernst mit dem Thema GPCPU! Darauf deutet zumindest die Nachricht hin, die ich heute in einem der amerikanischen Intel-Blogs entdeckt habe, die davon berichtet, dass das OpenCL SDK in der Version 1.1 als Beta für Windows zum Download zur Verfügung steht. Zudem ist eine Alpha-Preview für Linux erhältlich.
Und was hat das mit dem Thema GPCPU zu tun? Nun, wie Intel ja schon vor längerem angekündigt hat, wird das ehemalige Vorzeigeprojekt Larrabee wieder auferstehen, und zwar unter dem Namen Knights Corner. Dabei handelt es sich um eine Art Co-Prozessor, der 50 Prozessorkerne umfassen, in der 22-Nanometer-Technik gebaut und für parallele Rechenaufgaben geradezu prädestiniert sein wird. Das Ganze wird im Laufe des nächsten Jahres auf den Markt kommen.
Und genau hier setzt OpenCL ein, denn mit diesem Framework, das mit OpenCL C konform ist und diverse Tools für Programmierer bietet, lassen sich vor allem grafisch-orientierte Aufgaben deutlich schneller ausführen als auf jedem Standard-PC, der CPU und GPU nicht gemeinsam nutzen kann.
Das Intel OpenCL SDK 1.1 Beta umfasst folgende Merkmale:
- Das SDK ist vollständig kompatibel mit der OpenCL-Spezifikation
- Beta-Support für Microsoft Windows (32 and 64 bit)
- Alpha-Support für Linux
- OpenCL-Client-Treiber
- CPU-Vektorisierungsmodule für SIMD-Berechnungen
Darüber hinaus werden folgende optionale Core-Features unterstützt:
- Out-of-Order-Execution
- Unterstützung nativer Kernels
- native Verarbeitung von Bildern
- Code-Optimierungen mithilfe bestimmer Compiler-Einstellungen (cl-fast-relaxed-math)
- Floating Point-Erweiterungen für Berechnungen mit doppelter Genauigkeit (cl_khr_fp64)
- Code-Beispiele
- Debug- und Analyse-Tools sind ebenfalls Teil des SDKs (z.B. Intel GPA und VTune Amplifier-Support)
Mithilfe des zugehörigen Links kann das Intel OpenCL SDK auf den eigenen PC zu Testzwecken geladen werden.
Download: Performance Tuning Utility (Intel PTU) Utility 4.0 Update 5
Intel hat gestern das neue Performance Tuning Utility (Intel PTU) zum kostenlosen Download veröffentlicht.
Dabei handelt es sich um ein Performance Analyse-Tool für unterschiedliche Systemplattformen wie Windows und Linux. Neben den gewohnten Power-Funktionen etwa zur Identifizierung von Flaschenhälsen und Leistungsbremsen im Sourcecode, hat Intel eine Reihe von Verbesserungen zur Datenkontrolle, Analyse und Visualisierung integriert.
Die wichtigsten Funktionen und Eigenschaften des Performance Tuning Utility:
- Ereignisbasiertes Sampling: Über die prozessoreigene Leistungsmessung lassen sich Probleme sehr genau ermitteln
- Block-Analyse: Hotspots werden exakt ermittelt
- Visualisierung: Performance-Histogramme stellen Leistungshöchst- und Tiefstwerte in der Anwendung dar
- Schleifen-Analyse: Ermitteln von Loops und Rekursionen im Code
- Data Access Profiling: Identifizieren von Memory-Hotspots und Zuordnen zu Code-Hotspots
- Heap Profiler: Ermitteln der Speichernutzung der Anwendung und in der Folge auch von möglichen Memory-Leaks
Insgesamt gesehen bietet die Toolbox hinsichtlich Performance-Analyse ähnliche Funktionen wie der Intel VTune Performance Analyzer. Allerdings profitieren vor allem erfahrene Anwender von den sehr flexiblen Profi-Features.
Dazu gehört ab sofort eine detailliertere Speicherdiagnostik hinsichtlich der CPU-Nutzung. Leistungsprobleme können so schneller dem Sourcecode zugewiesen werden, um Korrekturen einzuleiten. Auch die grafische Darstellung von Leistungswerten -und kurven wurde erweitert.
Hier eine Übersicht der Neuerungen:
- volle Unterstützung für Sandy Bridge inklusive AVX
- bessere Unterstützung für neue Atom-Prozessoren von Intel
- neue Profile ermöglichen bessere Konfiguration
- verbesserte Hotspot-Analyse
- Möglichkeit zur Integration des Intel Performance Bottleneck Analyzer
- diverse Fehlerkorrekturen
Neugierig geworden? Hier gibt es den Download und eine detaillierte Übersicht zu allen Neuerungen.
Zwei Updates & neue Videos zum Thema Parallel-Programmierung
“Alles neu macht der Mai”, heißt es in einer Redewendung. Wir beginnen schon im April damit und stellen Ihnen zwei wichtige Updates für Developer-Tools vor und neue Entwickler-Videos bei ISN.
Beginnen wir mit den Updates:
Der Parallel Advisor 2011 wurde mit einem zweiten Update aufgewertet. Zum einen wurden, wie bei Updates üblich, kleine Fehler korrigiert. Zum anderen wurde das Tool aber auch für das Zusammenspiel mit Windows 7 Service Pack 1 und Microsofts Entwicklungsumgebung Visual Studio 2010 optimiert.
Hintergrund: Der Parallel Advisor ist eines der wichtigsten Entwicklerwerkzeuge von Intel, um festzustellen, welche seriellen Codebestandteile Parallelisierungs-Potenzial haben und wie sich entsprechende Threads implementieren lassen.
In diesem Blog habe ich bereits mehrfach über den Parallel Advisor und dessen Möglichkeiten in der Programmierpraxis berichtet.
Auch Intels VTune Amplifier XE hat per Update ein paar neue Funktionen erhalten. Das Tool ist konsequent auf die neue Sandy-Bridge-Generation ausgerichtet und bietet nun neue Performance- und Analyse-Funktionen wie
- vordefinierte Event-Profile zur einfacheren Diagnose
- mehr integrierte Messverfahren etwa zur Speicherbelegung
- automatisches Markieren von Code-Elementen, die einen bestimmten Normwert übersteigern
- Tooltipps
Hintergrund: Der VTune Amplifier XE sammelt, analysiert und bewertet Leitungsdaten in vorhandenen Programmen, um Schwachstellen und Flaschenhälse zu ermitteln.
Weitere Informationen zum VTune Amplifier können Sie ebenfalls in diesem Blogbeitrag nachlesen.
Zudem hat das Intel ISN eine Reihe neuer Videos im Rahmen des Parallel Programming Talk veröffentlicht. Der Parallel Programming Talk ist eine wöchentliche Video-Show im Intel Software Network TV, die sich an Parallel-Programmierer wendet – auch an Einsteiger. Um zu neuen Video-Aufzeichnungen auf dem Laufenden zu bleiben, können Sie sich auch per Twitter informieren lassen.
CPU-Tool zu Visualisierungszwecken von Turbo Boost 2.0
Über die neuen Intel-Prozessoren der Core-Serie, die auch unter ihrem Codenamen “Sandy Bridge” bekannt sind, habe ich ja schon das eine und andere Mal gesprochen. Zu den wesentlichen Neuerungen aus Entwicklersicht ist zweifelsohne die neue Register-Generation AVX, mit deren Hilfe prozessornahe Befehle fast doppelt so schnell ausgeführt werden können, da die zugehörige Registerbreite verdoppelt wurde und zudem neue Micro-Befehle implementiert worden sind.
Interessant aus Entwicklersicht ist aber auch eine Technik, die es in der Vorgänger-Architektur “Nehalem” bereits gab und die eine Überarbeitung erfahren hat: Turbo Boost. Mit Turbo Boost 2.0 von Sandy Bridge geht Intel einen Schritt weiter und fokussiert sich im Gegensatz zur Version 1.0 nicht nur auf sequentiell ablaufende Anwendungen, sondern auf seriell und parallel programmierte Apps gleichermaßen. Und mithilfe des Tools Intel Turbo Boost Technology Monitor kann man dem Prozessor-Turbo unter Windows 7 in Echtzeit bei der Arbeit zusehen.
Einer der wesentlichen Unterschiede zwischen TB 1.0 und 2.0 ist die längere Boost-Zeit, die auf die vorhandenen Prozessorkerne verteilt werden kann. Darüber hinaus funktioniert diese Turbo-Funktion hinsichtlich CPU und GPU, die ja seit der Einführung von Sandy Bridge auf einem gemeinsamen Die sitzen (Stichwort: SoC).
Hierfür hat Intel einen ausgeklügelten Algorithmus entwickelt, der stets auf der Suche nach dem perfekten Mix aus Leistungbedarf und aktueller Auslastung sucht. Gleichzeitig wird stets darauf geachtet, dass die Leistungsaufnahme von CPU und CPU möglichst optimal ist, was vor allem bei Notebook-Prozessoren wichtig ist, um so längere Akkulaufzeiten zu erreichen.

Aber zurück zum Turbo-Boost-Tool von Intel. Dieses kleine Werkzeug ist immer dann nützlich, wenn man verstehen will, was gerade beim Ausführen einer Anwendung passiert. Hierfür folgt das Tool einer bestimmten Farbkodierung:
- Ist Turbo Boost nicht aktiv und die CPU verbraucht weniger Strom als spezifiziert, leuchtet ein grünes Blatt und die Bezeichnung “Energy Saver” auf.
- Wenn sich die aktuelle Frequenz unterhalb der spezifizierten Taktrate bewegt, wird ein dunkelblauer, senkrechter Balken angezeigt, aber ohne eine Angabe der aktuellen Frequenz.
- Aktiviertes Turbo Boost 2.0 wird mithilfe eines hellblauen Balkens und der TB-Frequenz dargestellt. Außerdem wird der Text “Intel Turbo Boost Technology 2.0″ angezeigt.
Beim Installieren des TB-Tools sollte beachtet werden, dass nur Windows 7 sowie sämtliche Intel-Core-Prozessoren der zweiten Generation (“Sandy Bridge”) richtig unterstützt werden.
Tipp: Jenseits des Intel-TB-Tools gibt es ein ähnliches Werkzeug, das sich TMonitor nennt und vom CPUID-Team stammt. Damit lassen sich einerseits auch ältere Prozesorren beobachten, und andererseits werden die aktullen Taktraten aller Prozessorkerne angezeigt.
Für Spiele-Entwickler: kostenlose Beispiel-Applikation “Shadow Explorer”
Für Programmierer von 3D-Spielen sind Raytracing und Shadowmapping nach wie vor die größten Hürden auf dem Weg zu einem realitätsgetreuen 3D-Gaming-Erlebnis. Dabei konkurrieren unterschiedliche Shadow-Algorithmen in Bezug auf Code-Komplexität, Skalierbarkeit, Qualität und Belastung der Hardware-Ressourcen.
Intel hat dazu eine interessante Beispielanwendung veröffentlicht, die es Spiele-Entwicklern ermöglichen soll, unterschiedliche Shadow-Algorithmen hinsichtlich Qualität und Performance zu vergleichen. Auf zwei unterschiedliche Szenen werden die Algorithmen angewendet: Ein „Stadtbild“ als typisches Game-Setting mit unterschiedlichen Sonneneinstrahlungen und Schattendimensionen sowie ein kugelförmiges „Gitterobjekt“ mit diffizilen Schattenelementen.

Die Beispielanwendung basiert auf dem neuen Shadow Explorer. In der ersten Version bietet der Shadow Explorer vier Algorithmen, die sich hinsichtlich der Komplexität unterscheiden:
- Simple shadow maps
- Percentage closer shadow maps
- Variance shadow maps
- Exponential variance shadow maps
Ganz gleich, für welche Methode sich der Entwickler entscheidet, er hat über den Shadow Explorer Zugriff auf unterschiedliche Variablen und Filter, die ihm die Möglichkeit geben, die Schatteneffekte zu variieren und die jeweilige Technik in Echtzeit auszuprobieren, zu verfeinern und später auf den eigenen Quellcode zu übertragen. Kurzum: Der Shadow Explorer hilft, viel Zeit beim Experimentieren mit 3D-Effekten zu sparen.
Wie üblich hat Intel dazu auch ein schickes Video veröffentlicht
Parallelisierungsgrad von .NET- und Java-Anwendungen testen
Zugegeben, ganz neu ist der Intel Concurrency Checker nicht . Mit diesem Tool lässt sich ziemlich einfach der Parallelisierungsgrad einer Anwendung messen – und zwar ganz egal, ob es sich dabei um ein C++-, .NET- oder Java-Programm handelt. Denn das Intel-Tool untersucht – wie so viele andere Software-Werkzeuge – nicht den Sourcecode des zu testenden Programms, sondern erstellt mithilfe der laufenden Anwendung und des daraus resultierenden Datenaufkommens eine Testdatei, in der bestimmte Parameter abgelegt werden. Anhand dieser Werte lässt sich dann der Parallelisierungsgrad der Anwendung ermitteln.
Das kann man einerseits selbst erledigen, indem man zunächst bestimmte Konstrukte parallelsiert, um den Multicore-Koeffizienten zu verbessern. Hierzu eignen sich ja beispielsweise Schleifenkonstrukte, die eine große Zahl an Daten in kurzer Zeit manipulieren. Sobald man testweise eine for-Schleife mit dem richtigen Befehl und dem dazu passenden Programmiermodell (wie zum Beispiel OpenMP) parallelisiert hat, kompiliert man die Anwendung erneut, startet den Concurrency Checker und betrachtet die so ermittelten Testergebnisse.
Das ist natürlich aufwändig und erfordert ein gewisses Maß an Paralleliserungs-Know-now. Einfacher geht es da mit dem zugehörigen Service, den Intel Software-Entwicklern kostenlos anbietet. Das einzige, was Sie hierfür benötigen, ist ein gültiger Account des Intel Software Partner Program. Sobald Sie Besitzer der notwendigen Login-Daten sind, können Sie den Testbericht, den der Concurrency Checker automatisch ausspuckt, auf den Intel-Server laden. Dieser wertet die Daten aus und stellt diese in grafischer Art und Weise am Bildschirm dar.
Falls die hierfür eingesetzten Tools Parallelisierungspotenzial innerhalb Ihrer Anwendung finden, bekommen Sie das mitgeteilt und Sie müssen sich selbst um das Aufspüren der möglichen Sourcecode-Stellen nicht kümmern. Was Sie allerdings schon wissen sollten, wie Sie die identifizierten Stellen mit entsprechenden Parallel-Konstrukten versehen. Und das wiederum erfordert ein wenig mehr als nur den Concurrency Checker. Aber wozu gibt es dieses Blog, oder?!
Falls Sie sich zu dem Thema ein Video angucken wollen, hilft ein Mausklick auf diesen Link. Oder Sie besuchen die Concurrency-Checker-Seite, die Intel speziell zu diesem Thema zusammen gezimmert hat.
Ein Compiler für (fast) alles: Intel Composer XE 2011
Für alle, die auf den dritten Teil meiner Parallel-Studio-XE-Reihe gewartet haben: Heute ist nach Inspector XE 2011 und VTune Amplifier XE 2011 der Intel Composer XE 2011 an der Reihe. Dieses Triumvirat bildet insgesamt die Entwicklersuite Intel Parallel Studio XE 2011 ab.
Mit Intel Composer XE verhält es sich wie mit einem Schweizer Taschenmesser: Man bekommt für jeden Job das richtige Tool an die Hand. Will man beispielsweise C++-Projekte unter Windows oder Linux oder Mac OS X kompilieren, ist die neue Intel-Entwicklersuite das richtige Tool für Sie. Oder sind Sie eher Fortran-Entwickler und sind auf der Suche nach dem passenden Compiler, egal ob für Windows, Linux oder Mac OS X? Dann ist der Composer XE 2011 ebenfalls eine gute Entscheidung.
Doch nicht nur die plattform-übergreifende Kompilierung macht aus dem Intel Composer XE ein mächtiges Tool. Denn neben der Optimierung für AVX- und SIMD-Befehle zeichnet sich das Entwicklerwerkzeug durch weitere Bausteine aus:
- Intel Parallel Building Blocks (Intel PBB): Eine Toolsammlung, die Intel Threading Building Blocks, Intel Array Building Blocks und Intel Cilk Plus umfasst.
- hoch-optimierte Software-Bibliotheken: Dies sind Intel Math Kernel Library und Intel Integrated Performance Primitives.
- High-Performance Parallel Optimizer: Damit lassen sich vor allem verschachtelte Schleifenkonstrukte besser untersuchen.
- Interprocedural Optimization: hiermit lassen sich vor allem kleinere und mittlere Funktionen parallelisieren, die oft zum Einsatz kommen und in denen Funktionsaufrufe innerhalb von Schleifen vorkommen.
- Profile-Guided Optimization: verbessert die gesamte Laufzeit-Performance, indem unter anderem der Sourcecode neu arrangiert wird, die Code-Größe reduziert wird und fehlerhafte Sprungvorhersagen entfernt werden.
Weitere Infos zu Intel Composer XE 2011 gibt es entweder als PDF, auf der englischsprachigen Webseite oder in Videoform im Intel Learning Lab.
Dem Speicherfehler auf der Spur: Intel Inspector XE 2011
Heute wird es mal wieder Zeit, ein neues Kapitel in Sachen Intel Parallel Studio XE aufzuschlagen. Nach dem VTune Amplifier XE 2011 ist das Speicherfehlerfinde-Tool Intel Inspector XE 2011 an der Reihe. Hinter diesem Tool verbirgt sich – ähnlich wie beim VTune Amplifier – ein erfahrenen Entwicklern bereits bekanntes Werkzeug, nämlich der Intel Thread Checker, über den ich auf diesem Blog schon berichtet haben.
Mit dem Inspector XE 2011 lassen sich in C/C++-Anwendungen, aber auch in C#- und Fortran-Programmen eine Reihe von Fehlern aufspüren, und das, bevor der Fehler überhaupt erst auftaucht. Zudem benötigt man keine aufwändigen Testumgebungen, da das Tool anhand des Sourcecodes mögliche Schwachstellen aufspürt und diese grafisch anschaulich darstellt. Zu den typischen Fehlern gehören:
- nicht-deterministische Fehler wie das Speichern mehrerer Daten auf dieselbe Speicherzelle
- Memorylecks und korrupte Speicherbereiche
- inkonsistente Speicherreservierung und die dazugehörige Freigabe
- falsche Benutzung der Speicherschnittstellen
- Date Races
- Deadlocks
- gemeinsamer Speicherzugriff von Threads
Sämtliche Punkte beziehen sich auf mögliche Speicherprobleme, die immer wieder bei der Parallelprogrammierung auftauchen, da hier fehlende Locks oder der unsachgemäße Einsatz globaler Variablen (zum Beispiel innerhalb einer parallel_for-Loop) zum Crash der Anwendung führen können, sobald Daten auf dieselbe Speicherzelle zugreifen. Damit sorgt der Inspector XE 2011 für zuverlässigere Anwendungen.
Praktisch am Inspector ist aber auch dessen Flexibilität: So lässt sich dieses Tool (wie die gesamte Parallel-Studio-XE-Suite) sowohl als eigenständige Entwicklerumgebung einsetzen als auch innerhalb der gewohnten Visual-Studio-IDE als Plug-in nutzen. Zudem unterstützt die Standalone-Variante sowohl Windows als auch Linux. Das macht das Entwicklertool für eine Reihe von Programmierern interessant, für die Parallel Studio nicht infrage kommt.
Und für all diejenigen, die lieber gucken als lesen, haben wir ein knapp 9-minütiges Video aufgespürt, das Intel Inspector XE 2011 recht anschaulich erklärt – wenn auch in englischer Sprache.

Mit dem Intel Inspector XE 2011 lassen sich vor allem Speicherprobleme aufspüren und beheben
Intel Parallel Advisor: Code-Optimierung für Templates in C++
Während der OOP (ja,ja, das Thema lassen wir bald ruhen, schließlich steht schon die CeBIT vor der Tür) hatte ich die Gelegenheit, interessante Gespräche mit (angehenden) Multicore-Programmierern zu führen. Dabei tauchte mehrfach die Frage auf, ob der Advisor in Intel Parallel Studio auch mit vorhandenen Templates umgehen könne. Berechtige Frage, aber nicht schwer zu beantworten, wie die amerikanischen Kollegen vom Intel Software Network festgestellt haben .
Das Ausgangsproblem: Mit den für C++ vorhandenen Templates lässt sich schnell zuverlässiger Code generieren. Die Fertigprodukte sind zuverlässig, lassen sich aber kaum optimieren, etwa hinsichtlich Performance. Der Advisor setzt genau dort an und leistet gute Dienste, indem er auch bei älteren Templates die passenden Threads in die Apps integriert.
Gerade wenn der Durchblick bei seriellem Code fehlt, was bei fremden Templates häufig der Fall ist, sind Analyse-Instrumente obligat, um zu entscheiden, an welchen Stellen Parallelisierung möglich ist und in der Folge zu deutlichen Leistungsgewinnen führt. Der Advisor beantwortet die offenen Fragen über die Funktion Survey Report. Auf diesem Weg werden Bottlenecks grafisch sichtbar.

Die Funktion Survey Report ermittelt Bottlenecks
Und natürlich hilft das Tolol auch bei der Codebereinigung. Über die Funktion Correctness Report lassen sich die Fehler vorhandener Funktionen im Detail darstellen.

Die Funktion Correctness Report bewertet den Code
Und für das Fixing ist der Correctness Source zuständig. Die Funktion zeigt exakt, an welchen Stellen Parallelisieren hilft.
Den kompletten Beitrag mit weiteren Screenshots und konkreten Code-Beispielen können Sie übrigens hier abrufen. Und wer es noch genauer wissen will: Hier gibt es eine kostenlose und sehr detaillierte Einführung in den Advisor zum Download.
Im Detail: Intel VTune Amplifier XE 2011 fka VTune Performance Analyzer/Thread Profiler
Wer diesen Blog regelmäßig anklickt, hat sicher mitbekommen, dass ich in der vergangegen Woche auf der OOP in München war, um mir dort die eine oder andere Session zum Thema Parallelprogrammierung anzuhören – und um mit den Vortragenden das eine oder andere Interview zu führen.
Dabei ging es auch um die noch recht neue Entwicklersuite Intel Parallel Studio XE, über die ich ja hier schon am Montag ein wenig ausführlicher gebloggt habe. Für einige von Ihnen war das sicherlich noch nicht ausführlich genug, und so bekommen Sie hier weitere Details zu den einzelnen Komponenten, die im Entwicklertool von Intel stecken.
Den Anfang macht VTune Amplifier XE 2011, formerly known as VTune Performance Analyzer samt Thread Profiler. Mit VTune Amplifier XE hat Intel also zwei Tools zu einem einzigen verschmolzen, und das aus gutem Grund: denn mit dem ehemaligen Tool VTune Analyzer konnte man als Entwickler zwar recht schnell die vorhandenen Hotspots innerhalb einer Anwendungen finden, nur war die optische Aufmachung des Tools ein wenig gewöhnungsbedürftig, so dass eine Menge an Einarbeitungszeit vonnöten war, um dieses Profiwerkzeug richtig einzusetzen.
Der Thread Profiler hingegen lieferte grafisch aufbereitete Fehleranalysen Ihres Quellcodes, um unter anderem folgende Fragen zu beantworten: “Welche CPU-Ressourcen nutzt meine App kaum oder nur ungenügend?”, “Wie sieht der Verlauf meiner App aus?” und “Wo finde ich die Synchronisationsprobleme laufender Threads?” Tja, und mit dem VTune Amplifier XE 2011 bekommt man als Software-Entwickler für C, C++ und Fortran ein Tool an die Hand, mit dem sich all diese Aufgaben erledigen lassen, und das unter einer optisch ansprechenden und verständlichen Bedieneroberfläche.
Was also leistet der VTune Amplifier im Detail? Nun, hierzu gehören folgende Aufgaben:
- Mit der Hotspot-Analyse lassen sich diejenigen Codeabschnitte aufspüren, die die meiste Rechenzeit verschlingen. Und per Doppelklick auf die jeweilige Funktion landet man direkt im zugehörigen Quellcode.
- Locks und Waits lassen sich grafisch identifizieren. “Grau” bedeutet vertane CPU-Zeit, “Rot” heißt schwache Auslastung der Prozessoren, “Orange” signalisert “Alles gut”, und “Grün” sagt: “Hier sind die Wartezeiten optimal!”
- Mit der Maus lassen sich kurze Zeitabschitte definieren, die gesondert analyisert und betrachtet werden sollen. Damit können Sie beispielsweise testen, wie lange Ihre App für den Start und das Beenden braucht.
- Das Verhalten von Threads zueinander lässt sich mit dem Analysetool ebenfalls messen. Sie sehen sofort, wie gut es um die Parallelität der Threads bestellt ist.
- Mit dem prozessoreigenen Tool Performance Monitoring Unit (PMU) lassen sich in Verbindung mit VTune Amplifier hardwarenahe Infos wie Cache Misses, Clock Ticks und andere Daten auslesen und darstellen. Dabei erhalten Sie sogar Tipps, an welchen Schrauben Sie drehen können, um die Performance Ihrer Anwendungen weiter zu steigern.
Sie sehen also: Mit VTune Amplifier XE 2011 können Sie Anwendungen unter Windows und Linux auf ihre Parallelfähigkeiten hin untersuchen – und das grafisch und mit vielen nützlichen Zusatzinformationen. Und wer das Ganze in Videoform präsentiert haben möchte, dem empfehle ich einen Ausflug in das Intel Learning Lab, das regelmäßig neue Lernvideos veröffentlicht – auch zu Intel Parallel Studio XE 2011.



