Dazu zählen z.B. OpenMP und die MPI-Bibliothek im Großrechnerbereich. Viele Entwickler suchen allerdings nach weniger anspruchsvollen Erweiterungen, mit denen sich in C/C++ geschriebene Desktop- und Embedded-Anwendungen prallelisieren lassen. Eine solche Erweiterung pflegt Intel seit 1996: die Threading Building Blocks, kurz TBB. Sie erschienen jünst in Version 3.0 und sind inzwischen Open Source. C und C++ wurden – wie alle populären Programmiersprachen – nicht für Parallelprogrammierung entwickelt. TBB rüsten diese Fähigkeit nach, indem sie eine zusätzliche Abstraktionsebene für die Parallelverarbeitung einführen. Auch .net von Microsoft wurde z.B. durch TPL (Task Parallel Library) ergänzt. TBB unterstützen die Parallelverarbeitung, indem sie Befehle, Algorithmen und Funktionen für die Speicherverwaltung anbieten.
Schon heute hat Parallel-Verarbeitung auf den noch relativ einheitlichen x86-Multicore-Prozessoren viele Erscheinungsformen:
Eine Software so flexibel zu schreiben, dass sie auf jeder denkbaren Variante und beliegiben Kombinationen aus diesen Möglichkeiten optimal abläuft, wäre mit einem ungeheuren Overhead verbunden. Mit der Zunahme des Verwaltungsaufwandes steigen auch die Gefahren von Deadlocks und Data Races. Damit Entwickler ihre Software so schreiben können, dass sie auf der vorgefundenen Hardware mit optimaler Performance läuft, gleichzeitig aber die Komplexität vor dem Programmierer verborgen wird, hat Intel das Forschungsprojekt »Ct« (C for Throughput) initiiert.
Ct parallelisiert die Verarbeitung der Daten ohne dass es zu Sicherheitsrisiken (Deadlocks/Data Races) kommt. Es ist – ähnlich TBB – eine C++-Spracherweiterung, die mit der Zeit auf möglichst vielen Compiler- und Tool-Plattformen verfügbar sein soll. Eine erste Betaversion für den Intel-Compiler soll im Herbst 2010 fertig sein, das offizielle Produkt wird 2011 unter einem neuen Produktnamen folgen. Ct nutzt Techniken von Intel und der im August 2009 gekauften Firma RapidMind. Es parallelisiert die Verarbeitung großer Datenmengen in Arrays, ist thread-sicher und hardwareunabhängig bezüglich der Zahl der Cores. D.h., die Verarbeitung der Daten kann z.B. auf einem Single-Core mit Hyperthreading genauso erfolgen wie auf einem Multicore-Prozessor mit 2, 4 oder 8 Kernen, ohne dass der Code geändert werden muss. Doch nicht nur das: Ct nutzt selbständig die SIMD- und AVX-Befehle der Intel-CPUs, wird Manycore- oder Hybrid-Architekturen unterstützen und auch Nvidia-Grafikprozessoren. Eine öffentliche Beta-Version soll im 3. Quartal 2010 erscheinen, das offizielle Produkt in 2011.
Daten- und Task-Parallelität
Neben der Datenparallelität, die durch Ct abgedeckt wird, arbeitet Intel noch an einem weiteren Forschungsprojekt, Cilk, für die Parallelisierung von Befehlsabläufen.
Cilk unterstützt ebenfalls Multicore-Prozessoren, mehrere Prozessoren, heterogene Prozessoren, Hyperthreading, NUMA-Architekturen – und das alles ohne Quellcodeänderungen. Anfangs wird Cilk nur mit dem Intel-Compiler laufen, aber Intel hofft, dass weitere Firmen folgen.
Die drei Initiativen zeigen, dass Intel es nicht alleine dem Zufall und der Softwareindustrie überlassen will, wie schnell und wie bequem Entwicklungsunterstützung für Multicore-Prozessoren verfügbar ist. Intels Strategie ist es, den Entwicklern Hilfestellung in drei Dimensionen zu geben:
Ähnlich wie die Programmierung von Grafik-Anwendungen, bei denen Anfangs jede Linie und jedes Rechteck fest codiert wurden und die sich heute an jede Bildschirmgröße und jedes Seitenverhältnis anpassen, sollen auch Parallelanwendungen mit den Intel-Tools sich in Zukunft auf jeden Hardware-Unterbau einstellen. Damit erweitert Intel seine »Plattform« um bestimmte Software-Entwicklungswerkzeuge – ein Phänomen, das bei Mikrocontrollerherstellern schon lange üblich ist und auch bei Intel schon immer existierte, wenn auch in geringerem Umfang. Die Entwicklung kompletter Betriebssysteme wie im Rahmen von Mobin oder in Zusammenarbeit mit Nokia jetzt als Meego weitergeführt, dürfte aber die Ausnahme bleiben.