Intel Cilk Plus nun als Open Source-Version verfügbar
Intel gibt den Cilk Plus Compiler und die Runtime (Linux) als Open Source zur allgemeinen, kostenlosen Nutzung frei. Sämtliche Cilk-Plus Source-Files und Libraries können Sie ab sofort von dieser Seite downloaden.
Sollten Sie Fragen zu Cilk Plus haben, auf Fehler oder Probleme bei der Bedienung stoßen, wenden Sie sich bitt an das Intel Cilk Plus Forum. Dort finden Sie auch Hinweise zu aktuellen Patches wie dem aktuellen Cilk Plus Patch for gcc 4.7 vom 31.8.2011.
Damit festigt Intel das Ziel, allen Programmierern auf Basis von C/C++ eine gleichermaßen einfache und effektive Programmiersprache beziehungsweise Extensions an die Hand zu geben, die dabei hilft, parallelen Code zu entwickeln. Seit 2009 hat Intel die Cilk-Technologie in eigene Produkte integriert und zu Cilk Plus weiterentwickelt, um sein Portfolio mit OpenMP und den Threading Building Blocks abzurunden.
Ähnlich wie bei OpenMP kennt Cilk Plus so genannte Keywords (spawn, sync, inlet, abort), mit deren Hilfe sich ein seriell programmierter Quellcodeabschnitt in ein parallel ablaufendes Konstrukt verwandelt. Ein beliebtes und oft verwendetes Beispiel ist die rekursive Berechnung von Fibonacci-Zahlen. Hier ein Code-Sample:
01 cilk int fib (int n)
02 {
03 if (n < 2) return n;
04 else
05 {
06 int x, y;
07
08 x = spawn fib (n-1);
09 y = spawn fib (n-2);
10
11 sync;
12
13 return (x+y);
14 }
15 }
Die entscheidenden Schlüsselwörter lauten spawn (Zeile 8 und 9) und sync (Zeile 11). Diese Keywords sorgen dafür, dass die Funktion parallel auf zwei oder mehreren Prozessorkernen ausgeführt wird. Den Rest übernimmt die Runtime von Cilk Plus, die sich um das Erstellen von Threads kümmert, um das Synchronisieren derselben und um das richtige Beenden der parallel laufenden Threads. Dies ist auch der große Unterschied zu OpenMP.
Einen sehr guten Grundlagenartikel zu den Unterschieden zwischen OpenMP und Cilk liefert Michaels Beitrag vom Juli 2010: Infos aus erster Hand zu Cilk.
Zudem empfehle ich James Reinders’ Blog-Beitrag Parallelism as a First Class Citizen in C and C++, the time has come, in dem er die Bedeutung von Task-Parallelisierung und Daten-Parallelisierung verdeutlicht und zeigt, wie sich beide Programmieraufgaben mit Cilk Plus realisieren lassen.
Software-Projekte mit Intel-Tools optimieren
Es ist wie mit einem gut getunten Motor: Wenn die Einspritzdüsen mehr Benzin in den Motor pumpen, erhöht sich die Motorleistung und der Wagen fährt schneller. Ganz ähnlich ist es bei der Software-Entwicklung für Multiprozessor-Systeme: Nur wenn alle Prozessoren optimal auslastet werden, läuft die Anwendung in dem Tempo, das man erwartet und das notwendig ist.
Um eine bestmögliche Software-Leistung zu erzielen, bietet Intel eine Reihe von nützlichen Werkzeugen, die unabhängigen Software-Entwicklern dabei helfen sollen, ihre Anwendungen für Intel-Plattformen zu optimieren. Hierzu gehören unter anderem folgende Tools:
Compiler: Intel hat Compiler für C++, Fortran und Visual Fortran im Programm, und zwar für Mac OS, Linux und Windows. Im Preis enthalten ist eine 12-monatige Unterstützung seitens Intel, die auch Updates umfasst sowie einen direkten Kontakt zu Intel-Spezialisten. Intel-Compiler sind sowohl für 32- als auch 64-Bit-Anwendungen einsetzbar. Es spielt natürlich keine Rolle, ob die eigene Software für einen Server, ein Notebook oder gar ein Handy geschrieben wird. Und natürlich sind sämtliche Intel-Compiler für Multicore-Plattformen ausgelegt.
Test-Tools: Neben der optimalen Kompilierarbeit ist das Aufspüren ungenutzter Kapazitäten in bestehendem Programmcode von großer Wichtigkeit. Hierfür hat Intel ebenfalls spezielle Werkzeuge entwickelt, die Programmierern Schwachstellen ihrer Software aufzeigen und bestehendes Multicore-Potenzial voll ausschöpfen sollen.


