HSA für Entwickler: Heterogenes Computing für die Massen
Veröffentlicht: 2022-03-11Was haben Chiphersteller wie AMD, ARM, Samsung, MediaTek, Qualcomm und Texas Instruments gemeinsam? Nun, abgesehen von den offensichtlichen Ähnlichkeiten zwischen diesen Giganten der Chipherstellung sind sie zufällig auch Gründer der HSA Foundation. Was ist HSA und warum braucht es eine Grundlage, die von Schwergewichten der Branche unterstützt wird?
In diesem Beitrag werde ich versuchen zu erklären, warum HSA in naher Zukunft eine große Rolle spielen könnte, also beginne ich mit den Grundlagen: Was ist HSA und warum sollte es Sie interessieren ?
HSA steht für Heterogeneous System Architecture, was etwas langweilig klingt, aber glauben Sie mir, es könnte in der Tat sehr spannend werden. HSA ist im Wesentlichen eine Reihe von Standards und Spezifikationen, die entwickelt wurden, um eine weitere Integration von CPUs und GPUs auf demselben Bus zu ermöglichen. Dies ist kein völlig neues Konzept; Desktop-CPUs und mobile SoCs verwenden seit Jahren integrierte Grafiken und einen einzigen Bus, aber HSA bringt dies auf die nächste Stufe.
Anstatt einfach denselben Bus und gemeinsamen Speicher für CPU und GPU zu verwenden, ermöglicht HSA diesen beiden sehr unterschiedlichen Architekturen auch, zusammenzuarbeiten und Aufgaben zu teilen . Es mag nicht nach einer großen Sache klingen, aber wenn Sie genauer hinsehen und die potenziellen langfristigen Auswirkungen dieses Ansatzes untersuchen, sieht es im technischen Sinne sehr „süß“ aus.
Ach nein! Hier ist ein weiterer dummer Standard, den Entwickler implementieren müssen
Ja und nein.
Die Idee, denselben Bus gemeinsam zu nutzen, ist nicht neu, ebenso wenig wie die Idee, hochgradig parallelisierte GPUs für bestimmte Rechenaufgaben einzusetzen (bei denen es nicht um das Rendern von Headshots geht). Es wurde schon einmal gemacht, und ich denke, die meisten unserer Leser sind bereits mit GPGPU-Standards wie CUDA und OpenCL vertraut.
Im Gegensatz zum CUDA- oder OpenCL-Ansatz würde HSA den Entwickler jedoch effektiv aus der Gleichung herausnehmen, zumindest wenn es darum geht, verschiedenen Rechenkernen unterschiedliche Lasten zuzuweisen. Die Hardware würde entscheiden, wann Berechnungen von der CPU auf die GPU ausgelagert werden und umgekehrt. HSA soll etablierte GPGPU-Programmiersprachen wie OpenCL nicht ersetzen, da sie auch auf HSA-Hardware implementiert werden können.
Das ist der springende Punkt bei HSA: Es soll den gesamten Prozess einfach, ja sogar nahtlos machen. Entwickler müssen nicht unbedingt daran denken, Berechnungen auf die GPU auszulagern. Die Hardware erledigt dies automatisch.
Um dies zu erreichen, muss HSA von mehreren Chipherstellern und Hardwareanbietern unterstützt werden. Während die Liste der HSA-Unterstützer beeindruckend ist, ist Intel in diesem wahren Who is Who der Chipindustrie auffallend abwesend. Angesichts des Marktanteils von Intel sowohl auf dem Markt für Desktop- als auch für Serverprozessoren ist dies eine große Sache. Ein weiterer Name, den Sie nicht auf der Liste finden werden, ist Nvidia, das sich auf CUDA konzentriert und derzeit Marktführer für GPU-Computing ist.
HSA ist jedoch nicht nur für Hochleistungssysteme und -anwendungen auf Hardware konzipiert, die normalerweise mit einem Intel Inside -Aufkleber versehen ist. HSA kann auch in energieeffizienten Mobilgeräten verwendet werden, wo Intel einen vernachlässigbaren Marktanteil hat.
HSA soll also das Leben erleichtern, aber ist es schon relevant? Wird es ankommen? Das ist keine technologische Frage, sondern eine wirtschaftliche. Es wird von der unsichtbaren Hand des Marktes abhängen. Bevor wir also fortfahren, lasst uns damit beginnen, einen genaueren Blick darauf zu werfen, wo die Dinge im Moment stehen und wie wir hierher gekommen sind.
HSA-Entwicklung, Kinderkrankheiten und Adoptionsbedenken
Wie ich in der Einleitung sagte, ist HSA nicht gerade ein neues Konzept. Es wurde ursprünglich von Advanced Micro Devices (AMD) ins Auge gefasst, die ein begründetes Interesse daran hatten, es auf den Weg zu bringen. Vor einem Jahrzehnt kaufte AMD den Grafikspezialisten ATI, und seitdem versucht das Unternehmen, seinen Zugang zu modernster GPU-Technologie zu nutzen, um den Gesamtumsatz zu steigern.
Auf den ersten Blick war die Idee einfach genug: AMD würde nicht nur die Entwicklung und Herstellung hochmoderner diskreter GPUs fortsetzen, sondern auch die GPU-Technologie von ATI in seine Prozessoren integrieren. Die Marketingabteilung von AMD nannte die Idee „Fusion“, und HSA wurde als Fusion System Architecture (FSA) bezeichnet. Klingt toll, oder? Einen anständigen x86-Prozessor mit guter integrierter Grafik zu bekommen, klang nach einer guten Idee, und das war sie auch.
Leider stieß AMD dabei auf eine Reihe von Problemen; Ich greife einige davon heraus:
- Jede gute Idee in der Technik wird zwangsläufig von Konkurrenten aufgegriffen, in diesem Fall von Intel.
- AMD verlor den technologischen Vorsprung an Intel und fand es aufgrund von Intels Foundry-Technologievorsprung zunehmend schwieriger, auf dem CPU-Markt zu konkurrieren.
- Die Ausführung von AMD war problematisch und viele der neuen Prozessoren kamen erst spät auf den Markt. Andere wurden komplett verschrottet.
- Die wirtschaftliche Kernschmelze von 2008 und die anschließende mobile Revolution halfen nicht.
Diese und eine Reihe anderer Faktoren trugen dazu bei, den Vorsprung von AMD abzuschwächen und die Marktakzeptanz seiner Produkte und Technologien zu verhindern. AMD begann Mitte 2011 mit der Einführung von Prozessoren mit der neuen Generation integrierter Radeon-Grafiken und nannte sie Accelerated Processing Units (APUs) anstelle von CPUs.
Abgesehen vom Marketing war AMDs erste APU-Generation (Codename Llano) ein Flop. Die Chips kamen zu spät und konnten mit Intels Angeboten nicht mithalten. Ernsthafte HSA-Funktionen waren ebenfalls nicht enthalten, aber AMD begann, sie in seine Plattform von 2012 aufzunehmen (Trinity, was im Wesentlichen Llano richtig gemacht war). Der nächste Schritt kam 2014 mit der Einführung von Kaveri-APUs, die eine heterogene Speicherverwaltung unterstützten (GPU-IOMMU und CPU-MMU teilten sich denselben Adressraum). Kaveri sorgte auch für mehr architektonische Integration und ermöglichte kohärenten Speicher zwischen CPU und GPU (AMD nennt es hUMA, was für Heterogeneous Unified Memory Access steht). Die anschließende Carizzo-Aktualisierung fügte noch mehr HSA-Funktionen hinzu, sodass der Prozessor Rechenaufgaben auf der GPU kontextumschalten und ein paar weitere Tricks ausführen konnte.
Die kommende Zen-CPU-Architektur und die darauf aufbauenden APUs versprechen noch mehr zu liefern, falls und sobald sie auf dem Markt erscheinen.
Also, was ist das Problem?
AMD war nicht der einzige Chiphersteller, der das Potenzial von On-Die-GPUs erkannt hat. Intel hat ebenso wie ARM-Chiphersteller damit begonnen, sie seinen Core-CPUs hinzuzufügen, sodass integrierte GPUs derzeit in praktisch jedem Smartphone-SoC sowie in der überwiegenden Mehrheit der PCs/Macs verwendet werden. In der Zwischenzeit war die Position von AMD auf dem CPU-Markt erodiert. Der Einbruch des Marktanteils machte die Plattformen von AMD für Entwickler, Unternehmen und sogar Verbraucher weniger attraktiv. Es gibt einfach nicht so viele AMD-basierte PCs auf dem Markt, und Apple verwendet überhaupt keine AMD-Prozessoren (obwohl es AMD-Grafiken verwendet hat, hauptsächlich aufgrund der OpenCL-Kompatibilität).
AMD konkurriert nicht länger mit Intel auf dem High-End-CPU-Markt, aber selbst wenn es so wäre, würde es in dieser Hinsicht keinen großen Unterschied machen. Die Leute kaufen keine 2.000-Dollar-Workstations oder Gaming-PCs, um integrierte Grafik zu verwenden. Sie verwenden teure, diskrete Grafiken und kümmern sich nicht viel um Energieeffizienz.
Wie wäre es mit etwas HSA für Smartphones und Tablets?
Aber warte. Was ist mit mobilen Plattformen? Könnte AMD nicht einfach ähnliche Lösungen für Smartphone- und Tablet-Chips einführen? Nun, nein, nicht wirklich.
Einige Jahre nach der ATI-Akquisition befand sich AMD in einer schwierigen finanziellen Situation, die durch die Wirtschaftskrise noch verstärkt wurde, und beschloss daher, seine mobile GPU-Sparte Imageon an Qualcomm zu verkaufen. Qualcomm benannte die Produkte in Adreno (Anagramm von Radeon) um und wurde zum dominierenden Akteur auf dem Markt für Smartphone-Prozessoren, indem es frisch lackierte hauseigene GPUs verwendete.
Wie einige von Ihnen vielleicht bemerkt haben, sieht der Verkauf eines Smartphone-Grafik-Outfits, kurz bevor die Smartphone-Revolution losging, nicht nach einem brillanten Geschäftszug aus, aber ich denke, im Nachhinein ist es immer 20/20.
HSA wurde früher nur mit AMD und seinen x86-Prozessoren in Verbindung gebracht, aber das ist nicht mehr der Fall. Tatsächlich würden alle Mitglieder der HSA Foundation, wenn sie mit der Auslieferung von HSA-fähigen ARM-Smartphone-Prozessoren beginnen würden, die x86-Prozessoren von AMD um ein Vielfaches übertreffen, sowohl in Bezug auf den Umsatz als auch auf die ausgelieferten Einheiten. Was passiert also, wenn sie es tun? Was würde das für die Industrie und Entwickler bedeuten?
Nun, für den Anfang verlassen sich Smartphone-Prozessoren bereits auf eine Art heterogenes Computing. Heterogenes Computing bezieht sich normalerweise auf das Konzept der Verwendung verschiedener Architekturen in einem einzigen Chip, und angesichts aller Komponenten, die auf den heutigen hochintegrierten SoCs zu finden sind, könnte dies eine sehr weit gefasste Definition sein. Infolgedessen kann fast jeder SoC je nach eigenen Standards als heterogene Computerplattform betrachtet werden. Manchmal werden verschiedene Prozessoren, die auf demselben Befehlssatz basieren, sogar als heterogene Plattform bezeichnet (z. B. mobile Chips mit ARM Cortex-A57- und A53-Kernen, die beide auf dem 64-Bit-ARMv8-Befehlssatz basieren).
Viele Beobachter sind sich einig, dass die meisten ARM-basierten Prozessoren heute als heterogene Plattformen betrachtet werden können, darunter Chips der Apple A-Serie, Samsung Exynos SoCs und ähnliche Prozessoren von anderen Anbietern, nämlich großen Playern wie Qualcomm und MediaTek.
Aber warum sollte irgendjemand HSA auf Smartphone-Prozessoren brauchen ? Ist es nicht der springende Punkt, GPUs für allgemeines Computing zu verwenden, um mit professionellen Workloads fertig zu werden, und nicht Angry Birds und Uber?
Ja, aber das bedeutet nicht, dass ein nahezu identischer Ansatz nicht verwendet werden kann, um die Effizienz zu steigern, was eine Priorität beim Design mobiler Prozessoren ist. Anstatt unzählige parallelisierte Aufgaben auf einer High-End-Workstation zu erledigen, könnte HSA auch verwendet werden, um mobile Prozessoren effizienter und vielseitiger zu machen.
Nur wenige Leute schauen sich diese Prozessoren genau an, sie überprüfen normalerweise das Datenblatt, wenn sie ein neues Telefon kaufen, und das war's: Sie schauen sich die Nummern und Marken an. Sie schauen normalerweise nicht auf den SoC -Die selbst, was uns viel sagt, und hier ist der Grund: GPUs auf High-End-Smartphone-Prozessoren nehmen mehr Siliziumfläche ein als CPUs. Wenn man bedenkt, dass sie bereits da sind, wäre es schön, sie in anderen Anwendungen als Spielen einzusetzen, nicht wahr?
Ein hypothetischer, vollständig HSA-konformer Smartphone-Prozessor könnte es Entwicklern ermöglichen, dieses Potenzial auszuschöpfen, ohne die Gesamtproduktionskosten wesentlich zu erhöhen, mehr Funktionen zu implementieren und die Effizienz zu steigern.
Hier ist, was HSA zumindest theoretisch für Smartphone-Prozessoren tun könnte:
- Verbessern Sie die Effizienz, indem Sie geeignete Aufgaben auf die GPU übertragen.
- Steigern Sie die Leistung, indem Sie die CPU in einigen Situationen entlasten.
- Nutzen Sie den Speicherbus effektiver.
- Reduzieren Sie potenziell die Herstellungskosten von Chips, indem Sie mehr Silizium auf einmal erschließen.
- Führen Sie neue Funktionen ein, die von den CPU-Kernen nicht effizient gehandhabt werden konnten.
- Optimieren Sie die Entwicklung durch Standardisierung.
Klingt gut, besonders wenn man bedenkt, dass Entwickler wahrscheinlich nicht viel Zeit mit der Implementierung verschwenden. Das ist die Theorie, aber wir müssen warten, um sie in Aktion zu sehen, und das kann eine Weile dauern.
Wie funktioniert HSA überhaupt?
Ich habe die Grundlagen bereits in der Einleitung skizziert, und ich zögere aus mehreren Gründen, zu sehr ins Detail zu gehen: Niemand mag Novellen, die in einem Tech-Blog veröffentlicht werden, und HSA-Implementierungen können unterschiedlich sein.
Daher werde ich versuchen, das Konzept in ein paar hundert Worten zu umreißen.
Auf einem Standardsystem entlastet eine Anwendung die Berechnungs-GPU, indem sie die Puffer an die GPU überträgt, was einen CPU-Aufruf vor dem Einreihen in die Warteschlange beinhalten würde. Die CPU plant dann den Job und übergibt ihn an die GPU, die ihn nach Abschluss an die CPU zurückgibt. Dann würde die Anwendung den Puffer bekommen, der wiederum von der CPU gemappt werden müsste, bevor er bereit ist. Wie Sie sehen können, beinhaltet dieser Ansatz viel Hin und Her.
Auf einem HSA-System würde die Anwendung den Job in eine Warteschlange stellen, die HSA-CPU würde übernehmen, ihn an die GPU übergeben, ihn zurückholen und ihn an die Anwendung weiterleiten. Getan.
Möglich wird dies durch die direkte gemeinsame Nutzung des Systemspeichers zwischen CPU und GPU, obwohl auch andere Recheneinheiten beteiligt sein könnten (z. B. DSPs). Um dieses Maß an Speicherintegration zu erreichen, verwendet HSA einen virtuellen Adressraum für Rechengeräte. Dies bedeutet, dass CPU- und GPU-Kerne zu gleichen Bedingungen auf den Speicher zugreifen können , solange sie Seitentabellen gemeinsam nutzen, sodass verschiedene Geräte Daten über Zeiger austauschen können.
Dies ist offensichtlich großartig für die Effizienz, da es nicht mehr erforderlich ist, der GPU und der CPU Speicher zuzuweisen, indem jeweils virtueller Speicher verwendet wird. Dank einheitlichem virtuellem Speicher können beide je nach Bedarf auf den Systemspeicher zugreifen, was eine bessere Ressourcennutzung und mehr Flexibilität gewährleistet.
Stellen Sie sich ein Low-Power-System mit 4 GB RAM vor, von denen 512 MB für die integrierte GPU reserviert sind. Dieses Modell ist normalerweise nicht flexibel, und Sie können die Größe des GPU-Speichers nicht im laufenden Betrieb ändern. Sie bleiben bei 256 MB oder 512 MB hängen, und das war's. Mit HSA können Sie tun, was Sie wollen: Wenn Sie viel Zeug auf die GPU auslagern und mehr RAM für die GPU benötigen, kann das System es zuweisen. In grafikgebundenen Anwendungen mit vielen Hi-Res-Assets könnte das System der GPU am Ende nahtlos 1 GB oder mehr RAM zuweisen.

Wenn alle Dinge gleich sind, teilen sich HSA- und Nicht-HSA-Systeme die gleiche Speicherbandbreite , haben Zugriff auf die gleiche Menge an Speicher , aber das HSA-System könnte sie am Ende viel effizienter nutzen, wodurch die Leistung verbessert und der Stromverbrauch gesenkt wird. Es geht darum, mehr für weniger zu bekommen.
Wofür wäre heterogenes Computing gut?
Die einfache Antwort? Heterogenes Computing oder HSA als eine seiner Implementierungen sollte eine gute Wahl für alle Rechenaufgaben sein, die besser für GPUs als für CPUs geeignet sind. Aber was heißt das genau, wozu sind GPUs überhaupt gut?
Moderne, integrierte GPUs sind im Vergleich zu diskreten Grafikkarten (insbesondere High-End-Gaming-Grafikkarten und Workstation-Lösungen) nicht sehr leistungsfähig, aber sie sind weitaus leistungsstärker als ihre Vorgänger.
Wenn Sie nicht mitverfolgt haben, könnten Sie annehmen, dass diese integrierten GPUs ein Witz sind, und jahrelang waren sie genau das: Grafik für billige Heim- und Büroboxen. Dies änderte sich jedoch um die Wende des Jahrzehnts, als integrierte GPUs vom Chipsatz in das CPU-Paket wechselten und starben, wodurch sie wirklich integriert wurden.
Obwohl sie im Vergleich zu Flaggschiff-GPUs immer noch erbärmlich unterfordert sind, bieten selbst integrierte GPUs viel Potenzial. Wie alle GPUs zeichnen sie sich durch Single Instruction, Multiple Data (SIMD) und Single Instruction, Multiple Threads (SIMT) Loads aus. Wenn Sie viele Zahlen in sich wiederholenden, parallelisierten Lasten verarbeiten müssen, sollten GPUs helfen. CPUs hingegen sind bei schweren, verzweigten Workloads immer noch besser.
Aus diesem Grund haben CPUs weniger Kerne, normalerweise zwischen zwei und acht, und die Kerne sind für die sequentielle serielle Verarbeitung optimiert. GPUs haben in der Regel Dutzende, Hunderte und in diskreten Flaggschiff-Grafikkarten Tausende kleinerer, effizienterer Kerne. GPU-Kerne sind darauf ausgelegt, mehrere Aufgaben gleichzeitig zu erledigen, aber diese einzelnen Aufgaben sind viel einfacher als die, die von der CPU erledigt werden. Warum die CPU mit solchen Lasten belasten, wenn die GPU sie mit überlegener Effizienz und/oder Leistung bewältigen kann?
Aber wenn GPUs so verdammt gut darin sind, warum haben wir sie dann nicht schon vor Jahren als allgemeine Computergeräte eingesetzt? Nun, die Branche hat es versucht, aber der Fortschritt war langsam und auf bestimmte Nischen beschränkt. Das Konzept hieß ursprünglich General Purpose Computing on Graphics Processing Units (GPGPU). Früher war das Potenzial begrenzt, aber das GPGPU-Konzept war solide und wurde in der Folge in Form von Nvidias CUDA und Apples/Khronos Groups OpenCL aufgegriffen und standardisiert.
CUDA und OpenCL machten einen großen Unterschied, da sie es Programmierern ermöglichten, GPUs auf eine andere und viel effektivere Weise zu verwenden. Sie waren jedoch herstellerspezifisch. Sie konnten CUDA auf Nvidia-Hardware verwenden, während OpenCL für ATI-Hardware reserviert war (und von Apple angenommen wurde). Die DirectCompute-API von Microsoft wurde mit DirectX 11 veröffentlicht und ermöglichte einen begrenzten, herstellerunabhängigen Ansatz (war jedoch auf Windows beschränkt).
Fassen wir zusammen, indem wir einige Anwendungen für GPU-Computing auflisten:
Traditionelles Hochleistungsrechnen (HPC) in Form von HPC-Clustern, Supercomputern, GPU-Clustern für Rechenlasten, GRID-Computing, Lastenausgleich.
Lasten, die Physik erfordern , die Spiele oder Grafiken im Allgemeinen beinhalten können, aber nicht müssen. Sie können auch verwendet werden, um Fluiddynamikberechnungen, statistische Physik und einige exotische Gleichungen und Algorithmen zu handhaben.
Geometrie , fast alles, was mit Geometrie zu tun hat, einschließlich Transparenzberechnungen, Schatten, Kollisionserkennung und so weiter.
Audioverarbeitung , Verwendung einer GPU anstelle von DSPs, Sprachverarbeitung, analoge Signalverarbeitung und mehr.
GPUs sind (offensichtlich) für die digitale Bildverarbeitung konzipiert, sodass sie zur Beschleunigung der Bild- und Videonachbearbeitung und -decodierung verwendet werden können. Wenn Sie einen Videostream decodieren und einen Filter anwenden müssen, wird sogar eine Einsteiger-GPU den Boden mit einer CPU wischen.
Wissenschaftliches Rechnen , einschließlich Klimaforschung, Astrophysik, Quantenmechanik, Molekularmodellierung und so weiter.
Andere rechenintensive Aufgaben , nämlich Verschlüsselung/Entschlüsselung. Ganz gleich, ob Sie Kryptowährungen „schürfen“, Ihre vertraulichen Daten verschlüsseln oder entschlüsseln, Passwörter knacken oder Viren erkennen müssen, die GPU kann Ihnen helfen.
Dies ist keine vollständige Liste potenzieller GPU-Computing-Anwendungen, aber Leser, die mit dem Konzept nicht vertraut sind, sollten sich einen allgemeinen Überblick darüber verschaffen, was GPU-Computing anders macht. Ich habe auch offensichtliche Anwendungen wie Gaming und professionelle Grafik weggelassen.
Eine umfassende Liste gibt es sowieso nicht, da GPU-Computing für alle möglichen Dinge verwendet werden kann, von Finanzen und medizinischer Bildgebung bis hin zum Laden von Datenbanken und Statistiken. Sie sind durch Ihre eigene Vorstellungskraft begrenzt. Eine weitere aufstrebende Anwendung ist das sogenannte Computer Vision. Eine leistungsfähige GPU ist eine gute Sache, wenn Sie einer Drohne oder einem fahrerlosen Auto „beibringen“ müssen, Bäumen, Fußgängern und anderen Fahrzeugen auszuweichen.
Fühlen Sie sich frei, Ihren Lieblingswitz von Lindsay Lohan hier einzufügen.
Entwicklung für HSA: Zeit für einige schlechte Nachrichten
Dies mag eher meine persönliche Meinung als eine Tatsache sein, aber ich bin ein HSA-Anhänger. Ich denke, das Konzept hat viel Potenzial, vorausgesetzt, es wird richtig umgesetzt und findet genügend Unterstützung bei Chipherstellern und Entwicklern. Der Fortschritt war jedoch quälend langsam, oder vielleicht ist das nur mein Gefühl, mit einer Prise Wunschdenken. Ich mag es einfach, neue Technologien in Aktion zu sehen, und ich bin alles andere als ein geduldiger Mensch.
Das Problem mit HSA ist, dass es noch nicht da ist. Das bedeutet nicht, dass es nicht abhebt, aber es kann eine Weile dauern. Schließlich sprechen wir nicht nur über neue Software-Stacks; HSA benötigt neue Hardware, um seine Wirkung zu entfalten. Das Problem dabei ist, dass sich ein Großteil dieser Hardware noch auf dem Reißbrett befindet, aber wir kommen dorthin. Langsam.
Das bedeutet nicht, dass Entwickler nicht an HSA-bezogenen Projekten arbeiten, aber es gibt nicht viel Interesse oder Fortschritte in dieser Hinsicht. Hier sind ein paar Ressourcen, die Sie sich ansehen sollten, wenn Sie HSA ausprobieren möchten:
HSA Foundation @ GitHub ist natürlich der richtige Ort für HSA-bezogene Ressourcen. Die HSA Foundation veröffentlicht und verwaltet eine Reihe von Projekten auf GitHub, darunter Debugger, Compiler, wichtige HSAIL-Tools und vieles mehr. Die meisten Ressourcen sind für AMD-Hardware ausgelegt.
HSAIL-Ressourcen, die von AMD bereitgestellt werden, ermöglichen es Ihnen, sich ein besseres Bild von der HSAIL-Spezifikation zu machen. HSAIL steht für HSA Intermediate Language und ist im Grunde das Schlüsselwerkzeug für Back-End-Compiler-Autoren und Bibliotheksautoren, die auf HSA-Geräte abzielen möchten.
Das Referenzhandbuch für HSA-Programmierer (PDF) enthält die vollständige HSAIL-Spezifikation sowie eine umfassende Erläuterung der Zwischensprache.
Die Ressourcen der HSA Foundation sind derzeit begrenzt und das Developers Program der Foundation „kommt bald“, aber es gibt eine Reihe offizieller Entwickler-Tools, die Sie sich ansehen sollten. Noch wichtiger ist, dass sie Ihnen eine gute Vorstellung von dem Stack geben, den Sie für den Anfang benötigen.
Der offizielle AMD-Blog bietet auch einige nützliche HSA-Inhalte.
Dies sollte ausreichen, um Ihnen den Einstieg zu erleichtern, vorausgesetzt, Sie sind der neugierige Typ. Die eigentliche Frage ist, ob Sie sich von Anfang an die Mühe machen sollten oder nicht.
Die Zukunft von HSA und GPU-Computing
Wann immer wir über eine neue Technologie berichten, stehen wir vor dem gleichen Dilemma: Sollen wir den Lesern sagen, dass sie Zeit und Ressourcen dafür aufwenden sollen, oder lieber abwarten und abwarten?
Ich habe bereits klargestellt, dass ich etwas voreingenommen bin, weil ich das allgemeine Konzept des GPU-Computing mag, aber die meisten Entwickler können vorerst darauf verzichten. Selbst wenn es abhebt, wird HSA nur begrenzt attraktiv sein und die meisten Entwickler nicht betreffen. Es könnte jedoch auf der Straße wichtig sein. Unglücklicherweise für AMD ist es unwahrscheinlich, dass es auf dem Markt für x86-Prozessoren das Spiel verändert, aber es könnte sich in ARM-basierten Mobilprozessoren als wichtiger erweisen. Es mag AMDs Idee gewesen sein, aber Unternehmen wie Qualcomm und MediaTek sind besser positioniert, um HSA-fähige Hardware Hunderten von Millionen Benutzern zur Verfügung zu stellen.
Es muss eine perfekte Symbiose aus Soft- und Hardware sein. Wenn Hersteller mobiler Chips verrückt nach HSA werden, wäre das eine große Sache. Eine neue Generation von HSA-Chips würde die Grenze zwischen CPU- und GPU-Kernen verwischen. Sie würden sich denselben Speicherbus zu gleichen Bedingungen teilen, und ich denke, Unternehmen werden anfangen, sie unterschiedlich zu vermarkten. Beispielsweise vermarktet AMD seine APUs bereits als „Rechengeräte“, die aus verschiedenen „Rechenkernen“ (CPUs und GPUs) bestehen.
Mobile Chips könnten einen ähnlichen Ansatz verfolgen. Anstatt einen Chip mit acht oder zehn CPU-Kernen und so und so GPU zu vermarkten, könnten Chiphersteller anfangen, von Clustern, Modulen und Einheiten zu sprechen. Ein Prozessor mit vier kleinen und vier großen CPU-Kernen wäre also ein „Dual-Cluster“- oder „Dual-Modul“-Prozessor oder ein „Tri-Cluster“- oder „Quad-Cluster“-Design, wenn sie GPU-Kerne berücksichtigen . Viele technische Spezifikationen werden mit der Zeit bedeutungslos, zum Beispiel die DPI Ihres Bürodruckers oder die Megapixelzahl Ihrer billigen Smartphone-Kamera.
Es ist jedoch nicht nur Marketing. Wenn GPUs so flexibel wie CPU-Kerne werden und zu gleichen Bedingungen wie die CPU auf Systemressourcen zugreifen können, warum sollten wir uns dann überhaupt die Mühe machen, sie bei ihrem richtigen Namen zu nennen? Vor zwei Jahrzehnten hörte die Industrie auf, dedizierte mathematische Coprozessoren (FPUs) zu verwenden, als sie zu einer unverzichtbaren Komponente jeder CPU wurden. Nur ein paar Produktzyklen später vergaßen wir, dass sie jemals existierten.
Denken Sie daran, dass HSA nicht die einzige Möglichkeit ist, GPUs für Berechnungen anzuzapfen.
Intel und Nvidia sind nicht an Bord, und ihr Ansatz ist unterschiedlich. Intel hat in den letzten Jahren die Investitionen in die Forschung und Entwicklung von GPUs leise erhöht, und seine neuesten integrierten Grafiklösungen sind ziemlich gut. Da On-Die-GPUs leistungsstärker werden und mehr Platz auf Silizium beanspruchen, muss Intel ausgeklügeltere Wege finden, sie für die allgemeine Datenverarbeitung zu verwenden.
Nvidia hingegen hat sich vor Jahren aus dem Markt für integrierte Grafiken zurückgezogen (als es die Produktion von PC-Chipsätzen eingestellt hat), aber es hat sein Glück auf dem Markt für ARM-Prozessoren mit seinen Prozessoren der Tegra-Serie versucht. Sie waren kein großer Erfolg, aber sie werden immer noch in einiger Hardware verwendet, und Nvidia konzentriert seine Bemühungen auf eingebettete Systeme, insbesondere in der Automobilindustrie. In dieser Einstellung zieht die integrierte GPU ihr eigenes Gewicht, da sie für Kollisionserkennung, Indoor-Navigation, 3D-Mapping usw. verwendet werden kann. Erinnern Sie sich an Googles Project Tango ? Ein Teil der Hardware basierte auf Tegra-Chips, die Tiefenmessung und ein paar andere nette Tricks ermöglichten. Auf der anderen Seite des Spektrums deckt die Tesla-Produktlinie von Nvidia den Markt für High-End-GPU-Computing ab und sichert Nvidias Dominanz in dieser Nische für die kommenden Jahre.
Endeffekt? Auf dem Papier ist GPU-Computing ein großartiges Konzept mit viel Potenzial, aber der aktuelle Stand der Technik lässt zu wünschen übrig. HSA sollte einen großen Beitrag zur Lösung der meisten dieser Probleme leisten. Darüber hinaus wird es nicht von allen Branchenakteuren unterstützt, was die Akzeptanz weiter verlangsamen wird.
Es kann ein paar Jahre dauern, aber ich bin zuversichtlich, dass GPUs irgendwann ihren rechtmäßigen Platz in der allgemeinen Computerarena einnehmen werden, sogar in mobilen Chips. Die Technologie ist fast fertig, und die Wirtschaft wird den Rest erledigen. Wie? Nun, hier ist ein einfaches Beispiel. Intels Atom-Prozessoren der aktuellen Generation verfügen über 12 bis 16 GPU Execution Units (EUs), während ihre Vorgänger nur vier EUs hatten, basierend auf einer älteren Architektur. Da integrierte GPUs immer größer und leistungsfähiger werden und ihre Die-Fläche zunimmt, werden Chiphersteller keine andere Wahl haben, als sie zur Verbesserung der Gesamtleistung und -effizienz einzusetzen. Andernfalls wäre es schlecht für Margen und Aktionäre.
Machen Sie sich keine Sorgen, Sie werden immer noch in der Lage sein, das gelegentliche Spiel auf dieser neuen GPU-Generation zu genießen. Aber auch wenn Sie nicht spielen, erledigt die GPU eine Menge Dinge im Hintergrund und entlastet die CPU, um die Leistung und Effizienz zu steigern.
Ich denke, wir sind uns alle einig, dass dies ein riesiger Deal wäre, insbesondere auf preiswerten Mobilgeräten.