© Liashko/Shutterstock.com
Offload-Programmierung für den Intel Xeon Phi Coprocessor

Berechnung abladen erlaubt


Mit dem Intel Xeon Phi Coprocessor setzt Intel auf Beschleunigung von Applikationscode durch eine große Anzahl an einfachen Rechenkernen mit sehr breiten Vektorregistern. Die Rechenkerne entstammen der Intel-Architektur und sind wie ihre großen Brüder der Xeon-Familie vollprogrammierbar. Somit können Programmierer auf die üblichen Programmiersprachen (C/C++, Fortran, Python usw.) und -werkzeuge (Intel Composer XE, GCC, GDB usw.) zurückgreifen. Obwohl Anpassungen des Codes für optimale Performance wie bei jeder Portierung auf eine neue Plattform nötig sind, können diese inkrementell und ohne Nutzung von speziellen Sprachen umgesetzt werden.

In der größten Ausbaustufe (Modellnummer 7120A/P) bietet eine PCIe-Karte 61 Rechenkerne mit je 32 Vektorregistern zu 512 Bit. Das entspricht acht doppelgenauen Fließkommazahlen; bei einfacher Genauigkeit verdoppelt sich die Anzahl entsprechend. Jeder Rechenkern kann vier Hardwarethreads im Wechsel verarbeiten. Somit stehen einer Applikation sage und schreibe 244 logische Rechenkerne zur Verfügung, die sinnvoll genutzt werden wollen. Für weitere Informationen zur Architektur des Coprozessors sei an dieser Stelle auf [1] verwiesen.

Aus Sicht des Programmierers kann eine Coprozes­sorkarte entweder als eigenständiger Rechner betrieben werden („native“) oder mittels Offload als Coprozessor des Hostsystems dienen. Für die native Ausführung stellt die Karte alle nötigen Funktionen, ausgehend von einem vollständigen Linux-Kern und dessen typischen Schnittstellen bis hin zu einer kompletten Integration in ein TCP/IP- oder Infiniband-Netzwerk zur Verfügung. Somit können Anwendungen direkt auf dem Coprozessor gestartet werden und mit der Außenwelt und/oder anderen Coprozessoren in Kontakt treten.

Beim Offload-Modell verbleibt die Kontrolle über die Ausführung weitestgehend bei dem Teil der Anwendung, der auf dem Host ausgeführt wird. Von Zeit zu Zeit überträgt sie Daten und Kontrolle vom Hostsystem auf den Coprozessor, um die Ausführung zu beschleunigen. Massive parallele Algorithmen mit großem Potenzial für Vektorisierung sind geeignete Kandidaten für Offloading. Coderegionen mit überwiegend sequenziellem Anteil oder schlechter Vektorisierbarkeit können auf dem Host verbleiben.

Hallo Offload-Welt!

Es ist praktisch schon fast Tradition, mit einem „Hallo Welt!“-Programm zu starten. Listing 1 und 2 zeigen die zwei unterschiedlichen Ansätze, die von Intel Corporation für C/C++-Programme unterstützt werden. Der ­wC-Code in Listing 1 ...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang