Software Dev Blog

Mobile, Multicore, Multithreading & Visual Computing

GDC09: Paralleles Speichern, Laden und mehr mit Larrabee

| 0 comments

“Wer A sagt, muss auch B sagen!” Dieser Spruch lässt sich auf meinen heutigen Blogbeitrag anlässlich der GDC09-Vorberichterstattung prima anwenden. Denn erst gestern habe ich über eine der geplanten Techsessions zum Thema Larrabee-Programmierung berichtet. Und schon heute geht quasi der zweite Teil online.

Dieser trägt offiziell den Titel SIMD programming with Larrabee: Second Glance at the New Instructions in Action und beschäftigt sich sehr detailliert mit der SIMD-, also registernahen Programmierung von Larrabee-basierter Software. Hierzu werden Steve Hughes und Steve McCalla von Intel sehr tief in die Materie einsteigen und darüber referieren, dass …

… zu jedem Larrabee-CPU-Kern 32 Vektor-Register gehören, die jeweils 16 Bit breit sind und sich für parallel ausführbare Operationen nutzen lassen. Das ergibt in Summe 512 breite SIMD-Register pro Core.

… die Larrabee-nahe Programmierung zwei Methoden bereithält, um Vektoroperationen durchzuführen: SOA (Structure of Arrays) und AOS (Array of Structure). Beide haben ihre Berechtigung und Steve & Steve werden ausführlich darlegen, in welchem Fall welche der beiden Methoden die bessere ist. Und das anhand einfacher mathematischer Beispiele wie der Matrizenberechnung.

Predication acht 16-Bit-breite Register nutzt, um vektorbasierte Vergleichsoperation parallel durchzuführen. Damit sind auch klassische x86-Schleifenkonstrukte realisierbar.

Gather und Scatter ebenfalls ganz wichtig sind, wenn man über Larrabee-Programmierung redet. Gather entspricht einem auf 16 Floatingpoint-Registern parallel ausführbaren Ladebefehl pro Kern. Und Scatter bezeichnet den umgekehrten Weg, also das simultane Speichern dieser 512 Bit breiten Vektoren. Dabei werden wir auch lernen, dass Gather und Scatter wesentlich von der Cache-Taktung abhängig sind.

… es bereits eine C++ Larrabee Protoype-Bibliothek gibt, in der es nur noch einen Header und keine .lib- oder .dll-Dateien mehr gibt. Zudem wird wohl das Debuggen um einiges einfacher sein und es sollen möglichst sämtliche bestehenden Plattformen unterstützt werden.

Es gibt also viele gute Gründe, sich den Dienstagmorgen (10:10 bis 11:00 Uhr MESZ) zu reservieren, um entweder direkt auf der GDC’09 zu Köln die Larrabee-Session live mitzuerleben oder hier auf diesem Blog vorbeizuschauen. Denn wir werden in Bild und Ton darüber berichten, was Steve & Steve zu erzählen haben – und warum man als 3D-Programmierer in Zukunft wohl kaum noch an Larrabee vorbeikommen wird.

Leave a Reply