Jeder hat diesen riesigen, massiv parallelisierten Supercomputer in Form einer Grafikkarten-GPU auf seinem Desktop.
- Was ist das "Hallo Welt" -Äquivalent der GPU-Community?
- Was mache ich, wohin gehe ich, um mit der Programmierung der GPU für die wichtigsten GPU-Anbieter zu beginnen?
-Adam
Antworten:
Schauen Sie sich CUDA von NVidia an. IMO ist die einfachste Plattform für die GPU-Programmierung. Es gibt jede Menge cooler Materialien zu lesen. http://www.nvidia.com/object/cuda_home.html
Hallo Welt wäre es, jede Art von Berechnung mit GPU durchzuführen.
Hoffentlich hilft das.
quelle
quelle
Ich denke, die anderen haben Ihre zweite Frage beantwortet. Was die erste, die "Hallo Welt" von CUDA, betrifft, glaube ich nicht, dass es einen festgelegten Standard gibt, aber ich persönlich würde einen parallelen Addierer empfehlen (dh ein Programm, das N ganze Zahlen summiert).
Wenn Sie sich das Beispiel "Reduzierung" im NVIDIA SDK ansehen, kann die oberflächlich einfache Aufgabe erweitert werden, um zahlreiche CUDA-Überlegungen wie zusammengeführte Lesevorgänge, Speicherbankkonflikte und das Abrollen von Schleifen zu demonstrieren.
Weitere Informationen finden Sie in dieser Präsentation:
http://www.gpgpu.org/sc2007/SC07_CUDA_5_Optimization_Harris.pdf
quelle
Schauen Sie sich das ATI Stream Computing SDK an . Es basiert auf der in Stanford entwickelten BrookGPU .
In Zukunft werden alle GPU-Arbeiten mit OpenCL standardisiert . Es handelt sich um eine von Apple gesponserte Initiative, die herstellerneutral für Grafikkarten ist.
quelle
OpenCL ist ein Versuch, eine plattformübergreifende Bibliothek so zu gestalten, dass Code programmiert werden kann, der unter anderem für GPUs geeignet ist. Es ermöglicht das Schreiben des Codes, ohne zu wissen, auf welcher GPU er ausgeführt wird, wodurch es einfacher wird, einen Teil der Leistung der GPU zu nutzen, ohne gezielt auf mehrere GPU-Typen abzuzielen. Ich vermute, es ist nicht so leistungsfähig wie nativer GPU-Code (oder so nativ, wie es die GPU-Hersteller zulassen), aber der Kompromiss kann sich für einige Anwendungen lohnen.
Es befindet sich noch in einem relativ frühen Stadium (1.1 ab dieser Antwort), hat jedoch in der Branche an Bedeutung gewonnen - beispielsweise wird es von OS X 10.5 und höher nativ unterstützt.
quelle
CUDA ist zunächst ein hervorragender Rahmen. Sie können damit GPGPU-Kernel in C schreiben. Der Compiler erstellt aus Ihrem Code einen GPU-Mikrocode und sendet alles, was auf der CPU ausgeführt wird, an Ihren regulären Compiler. Es ist jedoch nur NVIDIA und funktioniert nur auf Karten der Serie 8 oder besser. Sie können die CUDA-Zone überprüfen, um zu sehen, was damit getan werden kann. Das CUDA SDK enthält einige großartige Demos . Die mit dem SDK gelieferte Dokumentation ist ein ziemlich guter Ausgangspunkt für das eigentliche Schreiben von Code. Es wird Sie durch das Schreiben eines Matrix-Multiplikationskerns führen, der ein guter Anfang ist.
quelle
Eine andere einfache Möglichkeit, in die GPU-Programmierung einzusteigen, ohne in CUDA oder OpenCL einzusteigen, besteht darin, dies über OpenACC zu tun .
OpenACC funktioniert wie OpenMP, mit Compiler-Anweisungen (wie
#pragma acc kernels
) zum Senden von Arbeit an die GPU. Zum Beispiel, wenn Sie eine große Schleife haben (nur größere profitieren wirklich):Bearbeiten: Leider unterstützt derzeit nur der PGI-Compiler OpenACC für NVIDIA-GPU-Karten.
quelle
Versuchen Sie GPU ++ und libSh
Der LibSh-Link enthält eine gute Beschreibung, wie die Programmiersprache an die Grafikprimitive (und natürlich an die Primitive selbst) gebunden wurde, und GPU ++ beschreibt anhand von Codebeispielen, worum es geht.
quelle
Wenn Sie MATLAB verwenden, wird es ziemlich einfach, GPUs für das technische Rechnen zu verwenden (Matrixberechnungen und starkes Rechnen mit Mathematik / Zahlen). Ich finde es nützlich für die Verwendung von GPU-Karten außerhalb von Spielen. Überprüfen Sie den Link unten:
http://www.mathworks.com/discovery/matlab-gpu.html
quelle