Frage

Jeder hat diese riesigen massiv parallelisierten Supercomputer auf ihrem Desktop in Form einer Grafikkarte GPU.

  • Was ist die "Hallo Welt" Äquivalent der GPU-Community?
  • Was kann ich tun, wo ich gehe, um loszulegen Programmierung der GPU für die großen GPU-Anbieter?

-Adam

War es hilfreich?

Lösung

Überprüfen Sie heraus CUDA von NVidia, IMO ist es die einfachste Plattform GPU-Programmierung zu tun. Es gibt Unmengen an kühlen Materialien zu lesen. http://www.nvidia.com/object/cuda_home.html

Hallo Welt wäre jede Art von Berechnung zu tun GPU verwendet wird.

Ich hoffe, das hilft.

Andere Tipps

  1. Sie erhalten programmierbar Vertex- und Pixel-Shader, die Ausführung ermöglichen, Code direkt auf der GPU manipulieren die Puffer, die zu gemalt werden. Diese Sprachen (d OpenGL GL Shader Lang und Hoch Level Shader Lang und DirectX die Äquivalente ), Sind C-Stil-Syntax, und wirklich Einfach zu verwenden. Einige Beispiele für HLSL können hier für XNA Spiel finden Studio und Direct X. Ich habe keine Jede anständige GLSL Referenzen, aber ich bin sicher, dass es um viel. Diese Shader-Sprachen geben eine immense Leistungsmenge manipulieren, was bei einem pro-Vertex gezogen wird oder per-Pixel-Ebene, direkt auf der Grafikkarte, die Dinge wie Schatten, Beleuchtung und Blüte wirklich einfach zu implementieren.
  2. Die zweite Sache, die den Sinn kommt, wird mit OpenCL Code für die neue Linien, universell verwendbar GPU. Ich bin nicht sicher, wie diese zu verwenden, aber mein Verständnis ist, dass OpenCL gibt Sie die Anfänge in der Lage, Access-Prozessoren sowohl auf die Grafikkarte und die normalen CPU. Dies ist nicht Mainstream-Technologie noch, und scheint von Apple angetrieben zu werden.
  3. CUDA scheint ein heißes Thema zu sein. CUDA ist der Weg der nVidia die GPU-Leistung zuzugreifen. Hier sind einige Intros

Ich denke, die anderen haben Ihre zweite Frage beantwortet. Wie bei dem ersten, der „Hallo Welt“ von CUDA, ich glaube nicht, gibt es eine Reihe Standard, aber persönlich würde ich einen parallelen Addierer (das heißt ein Programm, das summiert N ganze Zahlen).

empfehlen

Wenn Sie die „Reduktion“ Beispiel in der NVIDIA SDK aussehen kann die vordergründig einfache Aufgabe erweitert werden zahlreiche CUDA Überlegungen zu zeigen, wie verschmolzenen liest, Speicherbank Konflikte und Schleifenentrollen.

Sehen Sie diese Präsentation für weitere Informationen:

http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf

Werfen Sie einen Blick auf die ATI Stream Computing SDK . Es basiert auf BrookGPU an der Stanford entwickelt wurde.

In der Zukunft alle GPU Arbeit mit standardisiert OpenCL . Es ist eine Apple-gesponserte Initiative, die Grafikkartenhersteller neutral sein wird.

CUDA ist ein ausgezeichneter Rahmen zu beginnen. Es lässt Sie GPGPU-Kernel in C. Der Compiler schreibt GPU Mikro aus dem Code erzeugen und alles zu senden, die auf der CPU zu Ihrem regulären Compiler läuft. Es ist NVIDIA nur wenn und funktioniert nur auf 8-Karten der Serie oder besser. Sie können aus CUDA Zone , um zu sehen, was damit getan werden kann. Es gibt einige große Demos in der CUDA SDK . Die Dokumentation, die mit dem SDK kommt, ist ein ziemlich guter Ausgangspunkt für die tatsächlich das Schreiben von Code. Es wird Sie durch eine Matrixmultiplikation Kernel zu schreiben, das ist ein großartiger Ort zu beginnen.

OpenCL ist ein Versuch, eine plattformübergreifende Bibliothek der Lage, Programmcode geeignet zu machen, unter andere Dinge, GPUs. Es erlaubt man den Code zu schreiben, ohne GPU zu wissen, was es auf ausgeführt wird, wodurch es einfacher machen einige der Macht der GPU zu nutzen, ohne speziell verschiedene Arten von GPU-Targeting. Ich vermute, es ist nicht so performant als native GPU-Code (oder als native wie der GPU-Hersteller erlaubt), aber der Kompromiss kann es für einige Anwendungen wert sein.

Es ist immer noch in seinen relativ frühen Stadien (1.1 als diese Antwort), aber einige Traktion in der Industrie gewonnen hat -. Zum Beispiel nativ unter OS X 10.5 unterstützt wird und über

Eine weitere einfache Möglichkeit in GPU-Programmierung zu bekommen, ohne in CUDA oder OpenCL zu bekommen, ist, es zu tun über OpenACC .

OpenACC funktioniert wie OpenMP, mit Compiler-Direktiven (wie #pragma acc kernels) Arbeit an die GPU zu senden. Zum Beispiel, wenn Sie eine große Schleife haben (nur größere wirklich zugute kommen):

int i;
float a = 2.0;
float b[10000];
#pragma acc kernels
for (i = 0; i < 10000; ++i) b[i] = 1.0f;
#pragma acc kernels
for (i = 0; i < 10000; ++i) {
  b[i] = b[i] * a;
}

Edit:. Leider nur die PGI Compiler wirklich OpenACC unterstützt gerade jetzt, für NVIDIA-GPU-Karten

Versuchen Sie GPU ++ und libSh

LibSh Link hat eine gute Beschreibung, wie sie die Programmiersprache auf die Grafik-Primitiven gebunden (und natürlich die Primitiven selbst) und GPU ++, was beschreibt sein ganz ungefähr, beide mit Codebeispielen.

Wenn Sie MATLAB verwenden, wird es ziemlich einfach GPUs für technische Berechnungen (Matrixberechnungen und schwere Mathe / Zahlknirschens) zu verwenden. Ich finde es nützlich für die Verwendung von GPU-Karten außerhalb von Gaming. Schauen Sie sich den unten stehenden Link:

http://www.mathworks.com/discovery/matlab-gpu.html

Ich interessiere mich auch für dieses Thema und Parallelprogrammierung. Und ich fand die folgenden Link , haben bitte einen Blick auf Udacity.com!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top