Informatik (Fach) / Multir-core (Lektion)

In dieser Lektion befinden sich 49 Karteikarten

j

Diese Lektion wurde von bibabu erstellt.

Lektion lernen

Diese Lektion ist leider nicht zum lernen freigegeben.

  • Klassifikation paralleler Rechnerarchitkektur nach ...         Instruktion       Single               MultipleData       Single              SISD                  MISD     multiple             ...
  • Nebenläufigkeit Mehrere Threads greifen gleichzeitig auf einen gemeinsamen Adressraum zukeine explizite kommunikation zwischen den threads über kanäle oder ähnliches sondern implizierte kommunikation über gemeinsame ...
  • Mutex Variable eine Mutex variable ist eine ausschluss variable, ( lock (m), unlock (m) )
  • barrier synchronisation alle threads warten bis alle threads bei der barrier funktion sind ( barrier(); )
  • bedingte synchronisation busy waiting bis sich ne condition geändert hat:threads 1                                              thread 2lock(m)                                               ...
  • Signal Mechanismus wait (s, m)                                 signal (s)wait wartet bis das signal gegeben wird und gibt solange mutex m frei, wenn signal gegeben wird, wird m wieder gelocket ...
  • taskparallelität vs datenparallelität task: mehrere voneinander unabhängige tasks eines programms werden parallel ausgeführtdaten: eine operation wird auf unterschiedliche elemente einer datenstruktur parallel ausgeführt
  • Shader funktionen die auf gpus ausgeführt werden werden zunehmend benutzt um nicht grafische anwendungen auszuführen
  • shader programmierung muss in spezieller programmiersprache geschrieben werden begrenzte länge eingabedaten müssen als texturen bereitgestellt werden grafikpipeline muss vorkonfiguriert werden ausgabe ist nur ein farbwert ...
  • gpgpu oder gpu computing vorteile gegenüber shader programmierung:c als grund programmierspracheprogrammieren der gpu unabhängig von grafikpipelinedaten müssen nicht als textur abgelegt werdennachteile:verschiedene ansätze ...
  • opencl open computing language kann zur programmierung unterschiedlicher hardware genutzt werden ( heterogen) drei abstrakte modelle werden eingeführt:das plattform modelldas ausführungsmodelldas speichermodell ...
  • OpenCL Plattform-Modell eine opencl anwendung läuft auf dem host und sendet befehle an die devices um die berechnungen durchzuführen(bsp prozessor + hauptspeicher = host, GPU oder CPU = devices )
  • openCL ausführungsmodell es wird zwischen 2 teilen der Anwendung unterschieden:       - host programm      - kernel ( dessen instanzen auf opencl devices parallel ausgeführt werden ) host programm verwaltet und steuer ...
  • openCL work item imprinzip thread beim starten des kernels wird festgelegt wieviele instanzen gestartet werden ein work item wird immer sequentiell ausgeführt jedes work item hat eine globalID ( fortlaufend ) alle work ...
  • openCL workgroup eine workgroup besteht aus mehreren work items (natürlich alle gleiche größe und es gibt ne workgroup id ) jedes workitem erhält in jeder workgroup ne localid( nur innerhalb von der gruppe eindeutig) ...
  • Wovon wird Work Item / group ausgeführt ein work item wird von einem processing element ( pe ) eines opencl devices ausgeführt für work group groups: alle work-items einer work-group werden von einer compute unit (CU) gemeinsam ausgeführt ...
  • ausführungsmodell laufzeitverhalten kernelinstanzen werden in eine warteschlange für das device eingereiht (command queue) mögliche befehle: kernel-ausführungen, speicher-operationen, synchro-operationen befehle werden asynchron an die ...
  • ausführungsmodell kompilieren opencl da für jedes device selbst kompiliert werden muss, wird das erst zur laufzeit der opencl anwendung gemacht zum kompilieren stellt opencl spezielle funktionen bereit
  • openCL speichermodell speicher von host und device ist logisch getrennt also daten die benötigt werden müssen kopiert werden speicherbereiche innerhalb eines devices:globaler speicehrkosntanter speicherlokaler speicherprivater ...
  • opencl globaler speicher ist der größter speicher und vergleichbar mit arbeitsspeicher, alle work items der group haben lese und schreibezugriff
  • opencl konstanter speicher teil des globalen speichers, kann nur glesen werden
  • open cl lokaler speicher ist lokal für eine work group, alle items der workgroup können darauf zugreifen
  • opencl privater speicher ist nur für ein einzelnes work item sichtbar
  • typischer aufbau einer opencl anwendung initialisierung von openclkernel quellcode kompilierenglobalen speicher auf dem device reservieren und daten zum device kopierenkernel instanzen ausführendaten auf den host zurück kopieren
  • unterschied opencl - c es fehlen viele standartfunktionen wie printf oder malloc arrays variabler länge nicht möglich rekursion nicht erlaubt es gibt keine funktionszeiger
  • anzahl threads cpu vs gpu bei cpus an logischen kernen orientieren, weil umschalten zwischen threads aufwendig ist ( kontextwechsel) gpus haben viel größere register, kann also leichter umschalten
  • wie werden opencl speicherbereiche auf hardware realisiert? ... private skalare variablen -> register der gpu private array variablen -> grafikspeicher lokale variablen -> lokaler speicher globale und konstante variablen -> grafikspeicher
  • Erhöhung der Performance durch speicherzugriffe Daten werden in Tiles(kacheln) sortiert, auf welchen die Berechnungen unabhängig voneinander funktionieren muss alle work items berechnen mit den daten und schreiben die ergebnisse in den grafikspeicher ...
  • work item divergenz in einem warp werden immer die gleichen instruktionen ausgeführt, führen work items verschiedene anweisungen aus ( if verzweigung ), müssen die verschiedenen work items solange warten, während andere ...
  • globaler speicher gpu in modernen drams ( globaler grafik speicher ) werden benachbarte werte parallel gelesen jeder wert der in dram zellen liegt, ist durch eindeutige adresse erreichbar (speicherstelle) speicherstellen haben ...
  • speicherzugriffe vermindern anwendung sollte zugriffe auf globalen speicher so anordnen dass benachbarte speicherstellen zusammen gelesen werden -> idealerweise mehrere speicherzugriffe auf einen einzigen zugriff aufs gesamte segment ...
  • Loop unrolling schleifen etc. manuell im quellcode ausrollen, damit fallen meist viele instruktionen weg
  • Granularität erhöhen man kann mehrere workgroups zusammenfassen um die zugriffe auf den globalen speicher zu reduzieren, jedoch werden mehr ressourcen belegt ( insbesondere mehr lokaler speicher ) und es werden insg. weniger ...
  • prefetching idee: daten die zeitnah gebraucht werden schonmal vorher in den register laden instruktionen unabhängig vom speicherzugriff machen bei großen kacheln lohnt es sich mehr aber bei einer granularität ...
  • gleitkommazahlen (-1)s*M*2e m ist zwischen 1 und 2 dadurch eindeutig exponent wird als ganzzahl ohne vorzeichen gespeichert => es können nicht alle zahlen dargestellt werden
  • denormalisierte zahlen gleitkommazahlen, die auch die 0 abbilden können. wenn der exponent 0 ist, wird die mantisse nicht mehr als 1.xx sondern als 0.xx angenommen damit kann die zahl 0 dargestellt werden und die werte zwischen ...
  • multi device in openCL zur verwaltung von devices werden warteschlangen verwendet jede warteschlange für genau ein deviceder host erzeugt für jedes device eine eigene warteschlangebefehle werden in die warteschlangen einzelner ...
  • verteilter speicher in multi device systemen jedes device hat einen eigenen getrennten speicher also ist datentransfer nötig, falls daten von device zu device gelangen sollen
  • synchronisationen zwischen devices clfinish (command_queue) wartet auf die beendigung aller befehle in einer command queue jeder befehl in der queue erzeugt ein event objekt von welchem der status abgefragt werden kann man kann befehlen ...
  • host programm aufgaben in multi device systemen teilberechnung auf devices verteilen eingabedaten aufteilen und auf die devices verteilen berechnungen zwischen unterschiedlichen devices synchronisieren datenaustausch zwischen mehreren devices durchführen ...
  • Parallelitätsebenen innerhalb eines Prozessors (4) ... 1 Parallelität auf Bitebene                • Alle Bits der Wortbreite können parallel verarbeitet werden                • Entwicklung der Wortbreite: 8 → 16 → 32 → 642 Parallelität ...
  • Superskalarer Prozessor besitzt dynamisches scheduling ( die befehle werden zur laufzeit verteilt ) dafür wird zusätzliche hardware benötigt
  • VLIW Prozessor Very Long instruction word statisches scheduling beim compilen wird Maschinencode erzeugt, der die Verteilung auf die Funktionseinheiten angibt wird benötigt: keine zusätzliche hardware, starker compiler ...
  • skalarer Prozessor benutzt nur eine Funktionseinheit gleichzeitig
  • Pipelining Idee: instruktion in viele verschiedene gleich große schritte unterteilen und die verzahnt ausführen • Pipelining ist effizient, wenn verschiedene Pipelinestufenetwa gleich lange dauern• Die Anzahl ...
  • Parallelität auf Prozess- bzw. Threadebene Es gibt verschiedene Möglichkeiten für Unterstützung von mehreren Threads (Threadparallelität) im Prozessor, man spricht dabei auch manchmal von Chip Multi-Processing (CMP), das Unterschiedlich organisiert ...
  • Simultanes Multithreading Simultanes Multithreading ist als Hyperthreading-Technik in aktuellen CPUsverbaut• Ein physikalischer Prozessor wird in mehrere logische Prozessoren unterteilt• Jeder logische Prozessor verfügt über ...
  • Speicherhierarchie CPU 1 Register2 Caches3 Hauptspeicher4 Festplatte
  • Speicherhierarchie GPU Register lokaler speicher grafikspeicher