Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
6. Superskalar und VLIW
6. Superskalar und VLIW
Das Video untersucht, wie Prozessoren die superskalare Ausführung verwenden, um Parallelität zwischen binären Anweisungen zu erkennen und zu extrahieren, um die Leistung zu verbessern. Es erörtert die Bedeutung der Steuerlogik beim Identifizieren von Fällen, in denen Anweisungen gleichzeitig ausgeführt werden können, beispielsweise wenn keine Abhängigkeiten zwischen ihnen bestehen. Das Video stellt auch zwei Beispiele für Prozessordesign vor, Superskalar und VLIW, wobei letzteres die Verantwortung für die Erkennung von Abhängigkeiten auf Compiler verlagert und lange Befehlswörter generiert, die parallel ausgeführt werden. Während VLIW die Laufzeitprüfung reduziert, können ungenutzte Stellen im langen Befehlswort immer noch Verschwendung in der Ausführungseinheit verursachen.
7. SIMD und Hardware-Multithreading
7. SIMD und Hardware-Multithreading
Das Video erklärt zwei Möglichkeiten, Herausforderungen der Parallelität anzugehen: Single Instruction, Multiple Data (SIMD) und Hardware-Multithreading (SMT). SIMD ermöglicht die parallele Ausführung von Hardwarebefehlen auf mehreren Datenelementen, wodurch die Planungs- und Dekodierungslogik vereinfacht wird. SMT nutzt die Parallelität auf Thread-Ebene, indem es unabhängige Befehlsströme gleichzeitig ausführt, zusätzliche Registerdateien erfordert und eine sorgfältige gemeinsame Nutzung des Caches erfordert. Das Video diskutiert auch die Implementierung von Time-Sliced-Thread-Scheduling, bei dem Threads abwechselnd den Datenpfad des Prozessors in Round-Robin-Manier belegen, die Latenz reduzieren und mehreren Threads den gleichzeitigen Zugriff auf Recheneinheiten und Speichersysteme ermöglichen. Letztendlich kann der Prozessor so viele Threads wie erforderlich aufnehmen, obwohl der Leistungsgewinn bei einem Single-Thread-Prozessor möglicherweise nicht so signifikant ist.
8. Multicore-Prozessorarchitektur
8. Multicore-Prozessorarchitektur
Dieses Video erklärt die Architektur von Multicore-Prozessoren und ihre Vorteile, wie z. B. mehrere Kerne, die unabhängig voneinander arbeiten und einige Komponenten gemeinsam nutzen, während jeder Kern über seine eigene Pipeline und seinen eigenen Datencache verfügt. Die Bedeutung der Cache-Hierarchie beim Überbrücken der Geschwindigkeitslücke zwischen Mikroprozessor- und Speicherzugriff wird unter Verwendung mehrerer Cache-Ebenen hervorgehoben, die die zeitliche und räumliche Lokalität ausnutzen. Das Video geht auch auf das System-on-Chip-Design ein, das verschiedene Funktionseinheiten und Schnittstellen in einem einzigen Chip kombiniert, um Kosten und Formfaktor zu reduzieren. Insgesamt bietet das Video eine nützliche Einführung in die Komplexität und die Kompromisse, die beim Design von Multicore-Prozessoren auftreten.
9. GPU-Architektur
9. GPU-Architektur
Die Accelerated Processing Unit (APU) ist ein heterogener Prozessor mit stromsparenden Kernen und GPU-Einheiten, die sich alle auf demselben Chip befinden. GPUs verfügen über eine große Anzahl von Shaderkernen, die mit Anweisungen geplant werden können, und ihre Caches sind im Allgemeinen nicht kohärent, was ihr Design vereinfacht und eine viel höhere Leistung ermöglicht, wenn viele Kerne gleichzeitig arbeiten. AMD und Nvidia verwenden kleine Recheneinheiten, um den Betrieb mehrerer Datenelemente gleichzeitig zu unterstützen, und verfügen über große Registerdateien, um einen schnellen Kontextwechsel zu unterstützen. Der Redner erklärt auch, wie der Kontrollfluss in der GPU-Architektur verwaltet wird, insbesondere im Umgang mit Verzweigungsbefehlen, die möglicherweise ungültige Ergebnisse liefern, aber Programmierer müssen sich nicht viel um diese Probleme kümmern, da die Prozessoranbieter bereits Kontrolllogik in der Hardware bereitgestellt haben. Insgesamt sind GPUs beliebte Prozessoren für komplexe Workloads auf dem modernen Markt, insbesondere im Bereich KI und maschinelles Lernen.
10. FPGA-Internals
10. FPGA-Internals
In diesem Video werden die Architektur und Funktionen von feldprogrammierbaren Gate-Arrays (FPGAs) erläutert. FPGAs verfügen über eine programmierbare Logik, mit der sie neu programmiert werden können, um neue Funktionalitäten aufzunehmen, und haben direkten Zugriff auf Daten durch riesige Mengen an Ein- und Ausgängen (I/Os). Die Lookup-Tabellenstruktur in FPGAs besteht aus mehreren Ebenen von Multiplexern, die zur Definition von Logikfunktionen programmiert werden können. FPGAs verwenden programmierbare Register, die für Zähler, Schieberegister, Zustandsmaschinen und DSP-Funktionen verwendet werden können. Jeder rechteckige Block auf dem Chip stellt einen Logic Array Block (LAB) dar, wobei jeder LAB zehn Adaptive Logic Modules (ALMs) enthält. FPGAs werden in Branchen wie Verbrauchergeräten, Automobilindustrie, medizinischer Instrumentierung sowie Kommunikation und Rundfunk eingesetzt.
und Übertragsbits und wie die Eingabe in Register von vorherigen Logikelementen kommen kann.
11. OpenCL-Speicher auf einem GPU-System
11. OpenCL-Speicher auf einem GPU-System
Der Kursleiter erklärt die Zuordnung von OpenCL-Speicher zu AMD-GPU und die verschiedenen Speicherebenen in einem GPU-System. Das Rechengerät hat einen Befehlsprozessor, der Anweisungen an die Recheneinheiten verwaltet, die als Kerne mit mehreren SIMD-Spuren, privaten Registerdateien und privatem Speicher fungieren. Das Kernel-Programm soll autonome Jobs bereitstellen, die es ermöglichen, alle verfügbaren Kerne zu nutzen und die Speicherzugriffslatenz zu verringern. Der Referent erwähnt auch das Konzept der arithmetischen Intensität, das sich auf das Verhältnis zwischen Berechnung und Bewegung der Speicherachse bezieht, und wie hoch es sein sollte, um zu vermeiden, dass die Speicherbandbreite der GPU der limitierende Faktor ist.
12. OpenCL-Beispiel: Matrixmultiplikation
12. OpenCL-Beispiel: Matrixmultiplikation
Dieses Video stellt die Matrixmultiplikation als Beispiel für die OpenCL-Programmierung vor. Der Referent demonstriert, wie C-Code geschrieben wird, um unabhängige Schleifen zu erstellen, die Matrixzeilen und -spalten durchlaufen können. Arbeitselemente werden diskutiert und wie sie Matrixelementen in OpenCL zugeordnet werden können. Es wird eine Kernel-Implementierung erklärt, die die Kernel-Funktionsargumente, ihren Aufruf und ihren Rumpf behandelt. Der Sprecher zeigt, wie die Eingabematrix in einem eindimensionalen Array gespeichert wird, wobei Zeilen- und Indexnummern verwendet werden, um Indizes zu berechnen. Letztendlich berechnet die Kernel-Funktion das Skalarprodukt, um das Element in der Ausgabematrix zu erzeugen. Der lineare Ansatz zum Speichern von Matrizen im physikalischen Speicher wird betont.
13. Struktur eines OpenCL-Programms (Teil1)
13. Struktur eines OpenCL-Programms (Teil1)
Im Video „Aufbau eines OpenCL-Programms (Teil1)“ wird der Prozess zum Erstellen einer OpenCL-Anwendung erklärt. Das Programm muss zuerst die OpenCL-Plattform abfragen, um ihre Ressourcen zu verstehen und einen OpenCL-Kontext und eine Befehlswarteschlange zu erstellen. Anschließend werden Puffer für den Datenaustausch zwischen dem Host und dem Gerätespeicher erstellt, und das Kernelprogramm wird zur Ausführung auf dem Gerät in eine Binärdatei kompiliert. Das Video erklärt weiter, wie man schreibgeschützte und schreibgeschützte Puffer erstellt, Speicherplatz für Ausgabematrizen zuweist und Ergebnisse zurück auf den Host kopiert. Es wird betont, wie wichtig es ist, API-Aufrufe auf erfolgreiche Ausführung zu überprüfen.
14. Struktur eines OpenCL-Programms (Teil2)
14. Struktur eines OpenCL-Programms (Teil2)
Der dritte Schritt bei der OpenCL-Programmierung umfasst die Kernel-Kompilierung, die bei FPGA-Geräten anders ist, da sie offline erfolgt. Das CL-Erstellungsprogramm mit Quelle und C TX wird verwendet, um ein Programm zu erstellen, gefolgt von einem CL-Erstellungsprogramm, um das Programm in Binärdateien zu erstellen. Die richtige Kernelfunktion wird unter Verwendung des geeigneten Einstiegspunkts ausgewählt, und Kernelargumente müssen initialisiert werden, indem das CL-Kernelargument mit dem richtigen Zeiger festgelegt wird. Der Referent geht detailliert auf den richtigen Aufbau der Argumente bei der Matrizenmultiplikation ein. Anschließend besprechen sie das Einrichten lokaler und globaler Arbeitsgruppengrößen, das Ausführen des Kernels und das Abrufen der Ergebnisse mithilfe der CL in der Warteschlangenpuffer-API. Abschließend erwähnt der Referent kurz Ereignisse in der OpenCL-Programmierung.
15. Demo zur OpenCL-Matrixmultiplikation
15. Demo zur OpenCL-Matrixmultiplikation
Das Video „OpenCL Matrix Multiplication Demo“ erklärt den Vorgang zum Ausführen eines Matrixmultiplikationsbeispiels mit dem OpenCL-Framework. Es enthält mehrere Quellcodedateien wie ein C-Hauptprogramm für die Hostseite, ein Kernelprogramm und ein Makefile. Das Video behandelt verschiedene Aspekte des OpenCL-Frameworks, das Abrufen von Plattform- und Geräte-IDs, das Erstellen eines OpenCL-Kontexts, Programm- und Kernel-Objekte, die Pufferverwaltung für den Host sowie das Erstellen und Initialisieren von Puffern auf dem Gerät. Der Moderator zeigt auch einen Beispiel-Kernel, der Punktproduktoperationen ausführt, und eine Demo des Endergebnisses auf einer AMD Radeon Pro 575-Rechen-Engine.