GPU -Programmierung Einführung

GPU -Programmierung Einführung

Allgemeine Computing auf einer GPU (Grafikverarbeitungseinheit), besser bekannt als GPU-Programmierung, ist die Verwendung einer GPU zusammen mit einer CPU (Central Processing Unit) zur Beschleunigung der Berechnung in Anwendungen, die traditionell nur von der CPU behandelt wurden.Obwohl die GPU -Programmierung in den letzten zwei Jahrzehnten praktisch praktisch lebensfähig ist, umfassen die Anwendungen nun praktisch jede Branche. Zum Beispiel wurde die GPU -Programmierung verwendet, um Video-, digitale Bild- und Audiosignalverarbeitung, statistische Physik, wissenschaftliches Computer, medizinische Bildgebung, Computer Vision, neuronale Netzwerke und Deep -Lernen, Kryptographie und sogar Intrusionserkennung unter vielen anderen Bereichen zu beschleunigen.

Dieser Artikel dient als theoretische Einführung für diejenigen, die lernen möchten, wie man GPU-Beschleunigungsprogramme schreibt, sowie für diejenigen, die nur ein allgemeines Interesse an diesem faszinierenden Thema haben.

Der Unterschied zwischen einer GPU und einer CPU

Lange Zeit vor hochauflösender 3D-Grafik wurde zur Norm, die meisten Computer hatten keine GPU. Stattdessen führte die CPU alle Anweisungen von Computerprogrammen durch, indem die grundlegenden arithmetischen, logischen, steuer- und Eingabe-/Ausgangsvorgänge (E/A) durchgeführt wurden, die durch die Anweisungen angegeben wurden. Aus diesem Grund wird die CPU oft als Gehirn des Computers beschrieben.

In den letzten Jahren hat die GPU, die die Erstellung von Bildern für die Ausgabe auf ein Display -Gerät beschleunigen soll.

Der Grafikkartenhersteller NVIDIA bietet eine einfache Möglichkeit, wie man den grundlegenden Unterschied zwischen einer GPU und einer CPU verstehen kann Kerne, die für den gleichzeitigen Umgang mit mehreren Aufgaben ausgelegt sind.”

Die Fähigkeit, mehrere Aufgaben gleichzeitig zu erledigen, macht GPUs für einige Aufgaben sehr geeignet, z.

Unter den Aufgaben, die von der parallele Verarbeitung erheblich profitieren. Deep Learning Algorithmen ahmen die Aktivität in Neuronenschichten im Neocortex nach, sodass Maschinen lernen können, wie sie Sprache verstehen, Muster erkennen oder Musik komponieren können.

Aufgrund der wachsenden Bedeutung künstlicher Intelligenz ist die Nachfrage nach Entwicklern, die das allgemeine Computer in einer GPU verstehen, gestiegen.

CUDA gegen OpenCL gegen OpenACC

Da GPUs Rechenprobleme in Bezug auf Grafik-Primitive verstehen, mussten frühzeitige Bemühungen zur Verwendung von GPU.

Glücklicherweise ist es jetzt viel einfacher, dank paralleler Computing-Plattformen wie NVIDIAs CUDA, OpenCL oder OpenACC viel einfacher zu werden. Diese Plattformen ermöglichen es Entwicklern, die Sprachbarriere zwischen der CPU und der GPU zu ignorieren und sich stattdessen auf höhere Computerkonzepte zu konzentrieren.

CUDA

CUDA (Compute Unified Device Architecture) ist zunächst von Nvidia veröffentlicht und ist heute der dominierende proprietäre Rahmen heute. „Mit CUDA können Entwickler die Computeranwendungen drastisch beschleunigen, indem sie die Leistung von GPUs nutzen“, beschreibt das Framework NVIDIA.

Entwickler können CUDA aus Programmiersprachen wie C, C ++, FORTRAN oder Python ohne Fähigkeiten in der Grafikprogrammierung anrufen. Darüber hinaus enthält das CUDA-Toolkit von Nvidia alles, was Entwickler für die Erstellung von GPU-Beschleunigungsanwendungen benötigen, die ihre CPU-gebundenen Gegenstücke erheblich übertreffen.

Das CUDA SDK ist für Microsoft Windows, Linux und MacOS verfügbar. Die CUDA -Plattform unterstützt auch andere rechnerische Schnittstellen, einschließlich OpenCL, Microsoft DirectCompute, OpenGL -Computer -Shader und C ++ - Amp.

Opencl

OpenCL ist zunächst von der Khronos Group veröffentlicht und ist der beliebteste offene, lizenzfreie Standard für plattformübergreifende parallele Programmierung. Laut der Khronos Group verbessert OpenCL die Geschwindigkeit und Reaktionsfähigkeit eines breiten Spektrums von Anwendungen in zahlreichen Marktkategorien, darunter Gaming- und Unterhaltungstitel, wissenschaftliche und medizinische Software, professionelle kreative Tools, Vision -Verarbeitung und neuronale Netzwerktraining und Inferenzung.”

OpenCL wurde bisher von Altera, AMD, Apple, Arm, Creative, IBM, Imagination, Intel, Nvidia, Qualcomm, Samsung, Vivante, Xilinx und Ziilabs implementiert. Sie unterstützt alle beliebten Betriebssysteme für alle Major -Plattformen, die es machen, Make It Make It Make It Make It extrem vielseitig. OpenCL definiert eine C-ähnliche Sprache für das Schreiben von Programmen, aber für andere Programmiersprachen und Plattformen wie Python oder Java existieren APIs von Drittanbietern.

OpenACC

OpenACC ist der jüngste Programmierstandard für Parallel Computing, der in diesem Artikel beschrieben wird. Es wurde zunächst 2015 von einer Gruppe von Unternehmen veröffentlicht, die Cray, Caps, Nvidia und PGI (die Portland Group) umfassen, um die parallele Programmierung heterogener CPU/GPU -Systeme zu vereinfachen.

„OpenACC ist ein benutzerorientiertes, leistungsbasiertes, leistungsanschließbares paralleles Programmiermodell, das für Wissenschaftler und Ingenieure entwickelt wurde, Modell.,Staaten OpenACC auf seiner offiziellen Website.

Entwickler, die an OpenACC interessiert sind. Ziel ist es, ein Modell für die Beschleunigerprogrammierung bereitzustellen, das über Betriebssysteme und verschiedene Arten von Host -CPUs und Beschleunigern tragbar ist.

Welches soll ich verwenden?

Die Wahl zwischen diesen drei parallelen Computerplattformen hängt von Ihren Zielen und der Umgebung ab, in der Sie arbeiten. Zum Beispiel wird CUDA in der Wissenschaft häufig verwendet und es wird auch als am einfachsten gelernt angesehen. OpenCL ist bei weitem die tragbarste parallele Computing -Plattform, obwohl Programme, die in OpenCL geschrieben wurden.

Lernen Sie die GPU -Codierung auf LinuxHint lernen.com

https: // linuxHint.com/gpu-programming-python/

https: // linuxHint.com/gpu-programming-cpp/

Weitere Lesen

Um mit CUDA vertraut zu werden, empfehlen wir Ihnen, die Anweisungen im CUDA Quick Start Guide zu befolgen, in dem erklärt wird. Der OpenCL-Programmierhandbuch von AMD bietet einen fantastischen, eingehenden Überblick über OpenCL, aber es wird davon ausgegangen, dass der Leser mit den ersten drei Kapiteln der OpenCL-Spezifikation vertraut ist. OpenACC bietet ein dreistufiges Einführungs-Tutorial an, mit dem nachweisen soll, wie die GPU-Programmierung nutzen kann, und weitere Informationen finden Sie in der OpenACC-Spezifikation.