Sonntag, 2. November 2008

Rohfassung(aktualisiert)

rohfassung (pdf, 438 KB)

Sonntag, 5. Oktober 2008

Gliederung

1)Einleitung

2)Cuda-Architektur
2.1)Einleitung
2.2)Tesla-Grafikkarten
2.3)Thread-Hierarchie
2.4)Speicher-Arten
2.5)Abstraktion und Skalierbarkeit

3)Cuda-Programmiermodell
3.1)Einleitung
3.2)Grundstruktur
3.3)Einschränkungen
3.4)OpenGL Anbindung
3.4)Hilfsmittel der Entwicklung

4)Implementierungen der manchen Bildverarbeitungsaufgaben
4.1)Einleitung
4.2)Bildfilter
4.3)Histogramm
4.4)effiziente Maximum-Suche

5)Zusammenfassung und Fazit

Argumentationsprinzip

Ich habe für die Argumentationsprinzip Rhombus entschieden, da ich 3 Unterschiedliche Perspektiven behandle, die am Ende im Fazit zusammengeführt werden.
Ich habe 5 -Schritte-Muster gewählt.
1)Einleitung
2)Cuda-Architektur
3)Cuda-Programmiermodell
4)Implementierungen der manchen Bildverarbeitungsaufgaben
5)Zusammenfassung und Fazit

Mindmap gekürzt

gekürzt

Zusammenfassung

In dieser Arbeit wurden die CUDA-Architektur und -Programmiermodell beschrieben
und an Hand von paar
Bildverarbeitungsaufgaben erläutert.
Anhand der Messungen wurde bei manchen Aufgaben eine 30-fache Beschleunigung im
Vergleich mit einer Standard-Implementation erreicht.
Des weiteren wurde gezeigt, dass nicht alle Aufgaben die Leistung der
CUDA-Hardware in vollem Umfang nutzen können.
Die Einfachheit der Handhabung und Geschwindigkeitsvorteile raten dazu, den Einsatz von CUDA für ein oder anderes Bildverarbeitungsproblem zu überlegen.

Einleitung

Die Grafikkarten habe sich als 3d-Beschleuniger für OpenGL-Anwendungen und Spiele
etabliert.
Heutzutage fast in jedem gängigen Personal Computer findet sich eine solche Grafikkarte
von Nvidia oder ATI.
Es stellt sich die Frage, ob sich die Leistungsfähigkeit der Grafikkarten
für andere Zwecke einsetzen lässt?
Das wurde möglich, als 2007 NVIDIA das CUDA SDK veröffentlichte.
Damit ist es jetzt möglich die Grafikkarten für die allgemeine EDV-Aufgaben zu
verwenden.
In dieser Arbeit wird auf das Programmiermodell der CUDA SDK eingegangen.
Es wird untersucht, wie die CUDA-fähige Grafikkarten aufgebaut sind und was sie
leistungsstark macht. Zum Schluss
werden ein paar Aufgaben aus der Bildverarbeitung mit Hilfe der CUDA SDK
implementiert und es wird untersucht, welche Vorteile man davon bekommt.

Donnerstag, 18. September 2008

3. Exzerpt

Titel: Efficient Histogram Algorithms for NVIDIA CUDA
Compatible Devices

Quelle: Exzerpt3 (pdf, 207 KB)

Preview:
Die Publikation hat eine klare Gliederung und Diagramme. Es gibt Code-Beispiele.

Fragen:
  1. Welche Probleme verhindern eine effiziente Implementierung der Berechnung einer Histogramm?
  2. Welche Techniken haben effiziente Berechnung ermöglicht ?
Read:
    zu
  1. Kleine Größe des Shared-Speichers, fehlen der nativen Mechanismen zur globalen und lokalen Synchronisierung, fehlen der nativen atomaren Updates verhindern eine effiziente Implementierung
  2. Es werden zwei Methoden vorgestellt zur Lösung des Problems. Die erste Methode simuliert atomare Updates. Der Performance von der ersten Methode ist aber schlecht, wenn die Daten eine degradierte Verteilung besitzen. Aus diesem Grund gibt es eine zweite Variante, die diesen Umstand besser löst, in dem Ergebnisse im globalen Speicher abgelegt werden.
Reflect:
Die neuste Generation der NVIDIA-Grafikkarten bietet die Möglichkeit des Warp-Votings.
Interessant ist zu untersuchen, ob dieser Mechanismus das Problem einfacher löst.
Des weiteren hat die neueste Generation der Hardware atomare Operationen, die das Problem lösen.

Recite:
CUDA-Architektur bietet keine globale Synchronisationsmechanismen für die parallel laufende Prozesse, des weiteren fehlt die Unterstützung der atomaren nicht unterbrechbaren Operationen. Dies verhindert die effektive Realisierung der Berechnung einer Histogramm aus den gegebenen Daten.
Der Autor schlägt zwei Lösungsansätze vor. Der erste implementierte eine Implementierung der globalen atomaren Operationen in Software. Leider wird diese Methoden sehr langsam, wenn die Daten eine schwache Varianz aufweisen. Für diesen speziellen Fall gibt es eine zweite Methode. Sie lagert alles ins globale Speicher aus. Und zwar, jeder Thread-Block hat einen eigenen Speicherbereich. Aus diesem Grund braucht man am Ende eine parallele Reduktion, die alle Ergebnisse zusammenfasst.
Der Autor glaubt, dass die vorgeschlagenen Methoden das Problem lösen, aber hofft, dass zukünftige Versionen von CUDA alle fehlenden Mechanismen unterstützen, damit das Programmieren dafür leichter wird.

Review:
Diese Publikation beschreibt Umsetzung eines der grundlegenden Algorithmen der Bildverarbeitung. Sie spricht die Probleme der CUDA-Architektur und bietet interessante Lösungsansätze. Die präsentierten Ergebnisse und gute und kompakte Beschreibung der CUDA-Architektur können sich gut in die Ausarbeitung integrieren.

Mittwoch, 17. September 2008

2. Exzerpt

Titel: Optimization Principles and Application Performance Evaluation
of a Multithreaded GPU Using CUDA

Quelle: Exzerpt2 (pdf, 314 KB)
Preview:
Es hat eine klare Gliederung und viele Quell-Verweise.
Tabellen und Diagramme begleiten und ergänzen den Text.

Fragen:
  1. Tiefe Einblicke in die CUDA-Architektur
  2. Was sind die Programm-Optimierungsstrategien?
  3. Welche Resultate können dank den Optimierungen erzielt werden?
Read:
    zu
  1. Artikel bietet die nötigen Einblicke und liefert Verweise auf die weitreichende Literatur. Die Eigenschaften werden deutlicher durch Vergleiche mit vorherigen und gegenwärtigen parallelen Architekturen
  2. zu
  3. Es werden die 4 grundlegende Strategien genannt und anhand vieler Beispiele erläutert.
  4. zu
  5. Durch die massive Parallelisierung könnten alle getestete Programme beschleunigt werden, Auch dann, wenn diese nicht für die CUDA-Architektur geeignet sind.
Reflect:
Der Autor ist sehr detailliert in der Beschreibung der Architektur und Optimierungsverfahren, was ermöglicht selbstständig selbige durchzuführen, bzw. ein Programms zu analysieren, um zu erwägen, ob die Optimierungen nötig sind.

Recite:
Es gibt keine universelle Optimierungsstrategie. Es hängt von dem Programm ab, was gemacht werden muss und im Grunde genommen geht es immer um einen Kompromiss.
Man soll versuchen möglichst viele Threads zu starten, damit die Hardware ausgelastet wird.
Anzahl der Threads, die gleichzeitig laufen können, hängt von der Anzahl der Register, die von den Threads benutzt werden. Wenn man aber zu wenig Register verwendet oder auf Shared-Speicher verzichtet, wo es notwendig wäre, dann würde dass Programm zu langsam, wegen zu hohen Zugriffe auf den globalen Speicher. Deswegen muss immer ein Kompromiss getroffen werden.

Review:
Das ist eine sehr gute wissenschaftliche Publikation, die mir bei der Erstellung der Ausarbeitung viel nützt. Es bietet gute Beschreibung des Themas und bietet zahlreiche verweise (25 Quellen) auf weitere Dokumente, die meisten davon sind für mich relevant.
Der Autor beleuchtet nicht nur Vorteile, sondern auch Nachteile der Thema.
Artikel ist sehr gut strukturiert. Es ist erstaunlich wie viel Informationsgehalt man in jeden Wort und Satz stecken kann.

Dienstag, 16. September 2008

1. Exzerpt

Titel: Scalable Parallel
PROGRAMMING

Quelle: Exzerpt1 (pdf, 762 KB)

Preview:
Die Publikation sieht wie ein Artikel aus einer Computer-Zeitung.
Es hat viele bunte Diagramme. Gliederung spricht für sich.

Fragen:
  1. Was sind die Eigenschaften von der CUDA-Architektur?
  2. Wie sieht die CUDA-Programmiermodell aus?
  3. Was sind die Besonderheiten der Programmierung für CUDA
  4. welche Beispiele werden gemacht?
  5. wie bewerten die Autoren CUDA?
  6. In wie weit ist CUDA ein Supercomputer?
  7. Tesla-Architektur
Read:
    zu
  1. Im Artikel werden die wesentlichen Aspekte der CUDA-Architektur vorgestellt und erklärt
  2. zu
  3. Es wird gesagt, dass CUDA-Programmiermodell der SPMD-Programmiermodells sehr ähnelt und es wird ein Vergleich mit weiteren Implementierungen des Modells gemacht
  4. zu
  5. Die Autoren zeigen die Restriktionen, die für die Cuda-Architektur gelten.
  6. zu
  7. Es werden drei Code-Beispiele vorgestellt, die Lösung der Standart-Probleme zeigen
  8. zu
  9. Autoren versuchen zu belegen, dass CUDA das parallele Programmierung entscheidend erleichtert und es ermöglicht Programme zu schreiben, die Hardware unabhängig arbeiten können.
  10. Diese Frage wird durch den fachlichen Teil des Artikels beschrieben.
  11. Tesla-Architketur wird im fachlichen Teil des Artikels beschrieben
Reflect:
Leider werden die Probleme nicht angesprochen. z.B dass es schwer ist, den CUDA-Code zu debuggen oder zu profilen, da es direkt auf der Grafikkarte läuft.
Oder dass nicht alle Algorithmen sich effizient auf die Tesla-Architektur abbilden lassen und sind deswegen unter Umständen deutlich langsamer, als die CPU-Implementation.
Des weiteren wird außer Acht gelassen, dass es sehr viel Zeit kostet ein Programm für die CUDA-Architektur zu optimieren, bzw. wie schwierig es ist.

Recite:
CUDA bietet die Möglichkeit skalierbare parallele Programme ganz einfach zu erstellen. Dem Programmierer wird die aufwändige Verwaltung der Parallelisierung abgenommen. Er braucht nur den seriellen Part auszuprogrammieren und Laufzeitparameter festlegen.

Review:
Der Artikel ist gut strukturiert.
Er liefert kompakt eine Einführung über Cuda-Programierung und -Architektur. Es werden wie Laien so auch Fachleute angesprochen. Technische und nicht-technische Teile sind klar voneinander getrennt.
Es werden verwandte Projekte genannt.
Dieser Artikel ist vertrauenswürdig, da es in einem wissenschaftlich renommierten Zeitschrift erschienen. Leider geht es nicht genug in die Tiefe.
Bestimmte Problembereiche der CUDA wurden nicht beleuchtet.
Im Grossen und Ganzen wird dieser Artikel eine sehr große Hilfe, bei der Erstellung der Ausarbeitung, sein, da es einen guten Überblick verschafft.

Montag, 15. September 2008

Zeitplan

Zeitplan

Sonntag, 14. September 2008

Analyse des Themas

Mindmap:
Mindmap

Mindmap Version 2:
Mindmap2

Ziergliederung des Themas:
parallele Bildverarbeitung auf Grafikkarten von Nvidia mit CUDA am Beispiel einiger Aufgaben

Befehlswörter: keine
Hauptwörter: Bildverarbeitung
Zusatzwörter: auf Grafikkarten von Nvidia mit CUDA, parallele, am Beispiel einiger Aufgaben

Samstag, 13. September 2008

Wahl der Arbeitshypothese

Die Arbeitshypothese lautet:
Mit CUDA und Nvidia Grafikkarten kann man bestimmte Aufgaben der Bildverarbeitung effizient lösen.

parallele Bildverarbeitung auf Grafikkarten von Nvidia mit CUDA am Beispiel einiger Aufgaben

Dank CUDA sind die Grafikkarten von NVIDIA für bestimmte Aufgaben der Bildverarbeitung gut geeignet, und meistern diese deutlich schneller im Vergleich mit herkömmliche modernen Prozessoren.

User Status

Du bist nicht angemeldet.

Aktuelle Beiträge

Rohfassung(aktualisiert)
rohfassung (pdf, 438 KB)
sleon - 3. Nov, 00:01
vorfreude
endlich eine Aufarbeitung von CUDA in Deutsch.... freu...
Masterkey - 26. Okt, 15:23
Argumentationsprinzip
Ich habe für die Argumentationsprinzip Rhombus entschieden,...
sleon - 6. Okt, 13:49
Gliederung
1)Einleitung 2)Cuda-Archi tektur 2.1)Einleitung 2.2) Tesla-Grafikkarten 2.3)Thr ead-Hierarchie 2.4)Speiche r-Arten 2.5)Abstraktion...
sleon - 5. Okt, 23:53
Mindmap gekürzt
sleon - 5. Okt, 23:35

Links

Suche

 

Status

Online seit 5712 Tagen
Zuletzt aktualisiert: 12. Nov, 20:34

Credits


aufgabe1
aufgabe2
aufgabe3
Profil
Abmelden
Weblog abonnieren