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.
