CPU-Tuning Was Sie über Gleitkomma-Berechnungen wissen sollten

Autor / Redakteur: Michael Parker * / Margit Kuther

DSPs, GPUs und FPGAs dienen als Beschleuniger für viele CPUs und bieten Vorteile bei Performance und Energie-Effizienz. Doch wie lässt sich die Performance von DSP-, GPU- und FPGA-Architekturen auf Basis ihrer FLOPS-Werte vergleichen? Altera gibt Auskunft.

Firma zum Thema

Der IEEE-Standard 754 unterscheidet vier Darstellungen: einfach genaue (single), erweiterte einfach genaue (single extended), doppelt genaue (double) und erweiterte doppelt genaue (double extended) Zahlenformate. Bei den erweiterten Formaten ist nur jeweils eine Mindestbitzahl vorgeschrieben. Die genaue Bitzahl und der Biaswert bleiben dem Implementierer überlassen.
Der IEEE-Standard 754 unterscheidet vier Darstellungen: einfach genaue (single), erweiterte einfach genaue (single extended), doppelt genaue (double) und erweiterte doppelt genaue (double extended) Zahlenformate. Bei den erweiterten Formaten ist nur jeweils eine Mindestbitzahl vorgeschrieben. Die genaue Bitzahl und der Biaswert bleiben dem Implementierer überlassen.
(Quelle: IEEE/Wikipedia)

Bei der Vielzahl vorhandener Rechenarchitekturen benötigen Entwickler eine einheitliche Methode zum Vergleich dieser beiden Werte. Üblich ist die Messung der Gleitkomma-Operationen pro Sekunde (FLOPs; Floating-Point Operations per Second), wobei ein FLOP als Addition oder Multiplikation einer Zahl mit einfacher (Single 32-Bit) oder doppelter (Double 64-Bit) Genauigkeit entsprechend des Standards IEEE 754 definiert ist.

Alle höhergeordneten Funktionen wie Division, Quadratwurzel und Trigonometrie lassen sich aus Addierern und Multiplizierern erstellen. Da diese Operatoren und andere gängige Funktionen wie die Fast-Fourier-Transformation (FFT) und Matrix-Operatoren sowohl Addierer als auch Multiplizierer erfordern, besteht in allen diesen Architekturen häufig ein Verhältnis von 1:1 zwischen beiden.

Wie lässt sich nun die Performance von DSP-, GPU- und FPGA-Architekturen auf Basis ihrer FLOPS-Werte vergleichen? Der FLOPS-Spitzenwert wird durch Multiplikation der Summe von Addierern und Mulitplizierern mit der maximalen Betriebsfrequenz berechnet. Damit ergibt sich der theoretische Grenzwert für Berechnungen.

Bildergalerie
Bildergalerie mit 9 Bildern

Dieser wird in der Praxis nie erreicht, da es generell nicht möglich ist, Algorithmen so zu implementieren, dass sie alle Recheneinheiten gleichzeitig beschäftigen. Die Zahl bietet jedoch einen guten Anhaltspunkt für Vergleiche.

DSP TMS320C667x und Tesla K20

Betrachten wir zuerst die DSP-GFLOPS-Performance. Dazu wurde ein DSP von Texas Instruments gewählt: der „TMS320C667x“. Er enthält acht DSP Cores, wobei jeder Core über zwei Verarbeitungs-Subsysteme verfügt.

Jedes Subsystem enthält vier Single-Precision Gleitkomma-Addierer und vier Single-Precision Gleitkomma-Multiplizierer. Dies entspricht insgesamt 64 Addierern und 64 Multiplizierern. Die schnellste Version läuft mit 1,25 GHz und bietet somit maximal 160 GFLOPs (siehe: Abbildung 1).

GPUs sind äußerst beliebte Bausteine – vor allem für die Bildverarbeitung. Einer der leistungsfähigsten ist „Nvidia Tesla K20“. Der Baustein basiert auf „CUDA“ Cores, die jeweils aus einer Single-Gleitkomma Multiplizier-/Addier-Einheit bestehen. Sie führt pro Taktzyklus in Single-Precision Gleitkomma-Konfiguration aus. In jeder Streaming Multiprocessor (SMX) Processing Engine finden sich 192 CUDA Cores.

Der K20 enthält derzeit 15 SMX, obwohl nur 13 zur Verfügung stehen (aufgrund der Prozessausbeute). Damit stehen insgesamt 2496 CUDA Cores zur Verfügung (mit 2 FLOPs pro Taktzyklus), die mit maximal 706 MHz betrieben werden. Die Single-Precision Gleitkomma-Performance beträgt damit insgesamt 3520 GFLOPs (siehe: Abbildung 2).

Die Gleitkomma-Engine

FPGA-Anbieter wie Altera bieten in ihren Bausteinen nun Gleitkomma-Engines in Hardware. Ein Single-Precision Gleitkomma-Multiplizierer und -Addierer wurde in die Hard-DSP-Blöcke der programmierbaren Logikstruktur integriert. Ein mittelgroßer FPGA der Altera FPGA-Serie Midrange Arria 10 ist der 10AX066. Er bietet 1678 DSP-Blöcke, von denen jeder 2 FLOPs pro Taktzyklus bereitstellt, was insgesamt 3376 FLOPs pro Taktzyklus ergibt.

Bei einer Taktfrequenz von 450 MHz (für Gleitkomma; die Festkomma-Modi sind höher) stehen somit 1520 GFLOPs bereit. Über eine ähnliche Berechnung kommt Altera auf 10.000 GFLOPs oder 10 TeraFLOPs Single-Precision-Performance bei den „FPGAs Highend Stratix 10“. Dies wird durch eine Kombination aus höherer Taktrate und größeren Bausteinen mit wesentlich mehr DSP-Rechenressourcen erzielt (siehe: Abbildung 3).

Verschiedene Gleitkomma-Präzisionsgrade

Gleitkomma-Routinen stehen in FPGAs schon immer über die programmierbare Logik dieser Bausteine zur Verfügung. Damit lässt sich ein beliebiger Präzisionsgrad implementieren, der nicht auf Single und Double Precision begrenzt ist.

Bildergalerie
Bildergalerie mit 9 Bildern

Altera bietet sieben verschiedene Gleitkomma-Präzisionsgrade. Die Bestimmung der Gleitkomma-Spitzenperformance eines FPGA mit programmierbarer Logik ist jedoch nicht immer ganz einfach.

Für jedes Altera-FPGA bezieht sich dieser Wert nur auf die Fähigkeit der Hard-Gleitkomma-Engines. Dabei wird angenommen, dass die programmierbare Logik nicht für Gleitkomma-Funktionen sondern für andere Teile des Designs verwendet wird, zum Beispiel für die Datensteuerungs- und Scheduling-Schaltkreise, I/O-Schnittstellen, interne und externe Speicherschnittstellen und andere Funktionen.

Mehrere Faktoren erschweren die Berechnung der Gleitkomma-Performance, wenn programmierbare Logik verwendet wird. Die Menge an Logik, die für einen Single-Precision Gleitkomma-Multiplizierer/-Addierer erforderlich ist, lässt sich über die Gleitkomma-IP-Anleitung (Intellectual Property) des FPGA-Herstellers ermitteln. Darin ist jedoch eine wichtige Information nicht aufgeführt: die erforderlichen Routing-Ressourcen.

Die Rolle von Barrel-Shifter

Um Gleitkomma-Funktionen umzusetzen, sind große Barrel Shifter erforderlich, die hohe Mengen programmierbarer Routing-Ressourcen benötigen (Verbindungen zwischen den programmierbaren Logikelementen). Alle FPGAs verfügen über eine bestimmte Anzahl dieser Verbindungen, um die Logik zu unterstützen.

Sie basiert auf dem Bedarf eines typischen Festkomma-FPGA-Designs. Leider benötigen Gleitkomma-Funktionen wesentlich mehr Verbindungen als Festkomma-Designs.

Wird eine einzelne Gleitkomma-Funktion erstellt, kann sie auf die Routing-Ressourcen im allgemeinen Bereich der Logikelemente zugreifen. Sind jedoch viele Gleitkomma-Operatoren zusammen gebündelt, tritt eine Routing-Überlastung ein.

Dabei verringern sich die erzielbaren Taktraten erheblich und die Logiknutzung ist wesentlich höher als bei einem vergleichbaren Festkomma-FPGA-Design. Altera bietet seine eigene Synthese-Technik, genannt „Fused Datapath“, die diese Belastung verringert und die Umsetzung großer Gleitkomma-Designs in der Logik-Fabric ermöglicht.

Fini: Timing Closure bei programmierbarer Logik

Dabei werden Festkomma-27x27-Multiplizierer für Single Precision oder 54x54 für Double Precision verwendet. Hinzu kommt, dass die FPGA-Logik nicht vollständig genutzt werden kann. Da das Design einen großen Teil der verfügbaren Logik-Ressourcen einnimmt, verringert sich die Taktrate oder fMAX, bei der die Timing Closure erreicht wird – bis schließlich die Timing Closure überhaupt nicht mehr erzielt werden kann.

In der Regel können 70 bis 90 Prozent der Logik genutzt werden. Bei kompakten Gleitkomma-Designs liegt dieser Wert eher am unteren Ende dieses Bereiches.

Aus diesem Grund ist es nahezu unmöglich, die Gleitkomma-Kapazität eines FPGAs zu berechnen, wenn dessen programmierbare Logik dafür verwendet wird. Am besten werden Benchmark-Gleitkomma-Designs erstellt, die den Timing-Closure-Prozess beinhalten. Alternativ kann der FPGA-Hersteller solche Designs anbieten, was die Abschätzung der FPGA-Performance und Möglichkeiten vereinfacht.

Altera bietet Benchmark-Designs für 28-nm-FPGAs, die grundlegende und komplexe Gleitkomma-Designs abdecken. Die veröffentlichten Ergebnisse zeigen, dass sich mit 28-nm-FPGAs mehrere Hundert GFLOPs für einfache Algorithmen wie FFTs und etwa 100 GFLOPs für komplexe Algorithmen wie QR und Cholesky-Zerlegung erzielen lassen.

Fazit:

FPGAs mit Gleitkomma-DSP-Blöcken in Hardware bieten heute eine Single-Precision Performance von 160 bis 1.500 GFLOPs in Midrange-Bausteinen und bis zu 10.000 GFLOPs in Highend-Bausteinen wie Altera Stratix.

Diese GFLOPs-Spitzenwerte werden mit der gleichen transparenten Methode berechnet, wie sie bei CPUs, GPUs und DSPs angewendet wird. Diese Methode bietet Entwicklern eine zuverlässige Technik für einen Vergleich der maximalen Gleitkomma-Rechenleistung verschiedener Architekturen.

Die nächste Vergleichsstufe sollte auf einem repräsentativen Benchmark-Design basieren, das auf der Plattform umgesetzt ist. Für FPGAs ohne Gleitkomma-Schaltkreise in Hardware ist die vom Anbieter berechnete theoretische GFLOP-Leistung eher unzuverlässig.

Jeder FPGA-Gleitkomma-Bedarf über 500 GFLOPs, der mit Logik-Ressourcen bedient werden soll, muss dringend hinterfragt werden. In diesem Fall ist ein repräsentatives Benchmark-Design erforderlich, um einen Vergleich durchführen zu können. Der FPGA-Kompilierungsbericht mit Logik-, Speicher- und Ressourcennutzung sowie die erzielte Taktrate sollten ebenfalls bereitgestellt werden.

Lesetipp: Wer in die Welt der FPGAs einsteigen möchte, findet auf der Site von Altera einen Link zum kostenlosen Download des Buches: „FPGA for Dummies“(Registrierung erforderlich).

* * Michael Parker... ist Principal DSP Product Planning Manager bei Altera.

(ID:43625310)