Compute Unified Device Architecture

Compute Unified Device Architecture
Compute Unified Device Architecture
Entwickler Nvidia
Aktuelle Version 4.0
(Mai 2011)
Betriebssystem Windows, Linux, MacOS X
Kategorie GPGPU
developer.nvidia.com

Die Compute Unified Device Architecture (englisch, kurz CUDA genannt) ist eine von Nvidia entwickelte Technik, die es Programmierern erlaubt, Programmteile zu entwickeln, die durch den Grafikprozessor (GPU) auf der Grafikkarte abgearbeitet werden. In Form der GPU wird zusätzliche Rechenkapazität bereitgestellt, wobei die GPU im Allgemeinen bei nicht sequentiellen Programmabläufen signifikant schneller arbeitet als die CPU. CUDA findet bei wissenschaftlichen und technischen Berechnungen ihren Einsatz.

Inhaltsverzeichnis

Technische Details

Der nur für Grafik-Berechnungen genutzte Grafikprozessor kommt mittels der CUDA-API auch als Co-Prozessor zum Einsatz. Als Anwendungsbeispiele seien die Lösung seismologischer oder geologischer Probleme oder die Simulation elektromagnetischer Felder genannt. Anwendung findet CUDA unter anderem bei dem Projekt SETI@home im Rahmen der Berkeley Open Infrastructure for Network Computing (BOINC). Allgemein lässt es sich dort effizient anwenden, wo Algorithmen hoch parallelisiert werden können.

Eingesetzt werden kann die CUDA-Technologie mit einer Grafikkarte ab der „GeForce 8“-Serie und auf den Quadro-Karten ab der Quadro FX 5600. Die Tesla-Karten von Nvidia wurden ausschließlich zum Einsatz der CUDA-Technologie entworfen. Ihnen fehlt es an Anschlüssen für Monitore.

Seit dem Zukauf der PhysX-Technologie von Ageia entwickelt Nvidia diese Technologie weiter und hat sie auf CUDA umgeschrieben. PhysX wird in zahlreichen neuen Spielen eingesetzt.

Im Mai 2011 wurde von Nvidia die CUDA-Version 4.0 veröffentlicht.

Programmieren

Programmierer verwenden zurzeit C for CUDA (C mit Nvidia-Erweiterungen). Es existieren auch Wrapper für die Programmiersprachen Perl, Python, Java, Fortran und .NET bzw. Anbindungen an Matlab. Nvidia erstellte CUDA mit dem optimierenden C-Compiler Open64.[1] Seit der Fermi-Architektur kann auch C++ verwendet werden.

Alternativen

Beispiele für andere GPGPU-Lösungen:

  • FireStream kommt von AMD/ATI und läuft auch nur auf solchen Karten.
  • OpenCL ist ein von der Khronos Group initiierter offener Standard, der für alle Grafikkarten funktioniert und für die meisten Betriebssysteme verfügbar ist.
  • DirectCompute eine in die DirectX-API integrierte Schnittstelle für GPGPUs.

Software

Eines der ersten Programme, welches CUDA unterstützt, ist der Client von folding@home, der die Geschwindigkeit medizinischer Berechnungen vervielfacht. Am 17. Dezember 2008 folgte der Client von SETI@home, der die Suche nach außerirdischem Leben um den Faktor 10 beschleunigt. Nvidia brachte die Software „Badaboom“ heraus, ein Videokonverter, der bis zu 20-mal schneller Videos konvertieren kann, als durch eine Berechnung mit der CPU. Andere Programme, welche CUDA verwenden, sind „TMPGEnc“, Sorenson Squeeze 7, Adobe Photoshop ab CS4 – hierbei wird der Einsatz von Filtern beschleunigt – und Mathematica 8+.

Kritik, Nachteile

Grafikprozessoren (GPU) sind Prozessoren mit einem anwendungsspezifischen Design, daher kennen GPUs eher exotische Datentypen wie 9 Bit oder 12 Bit mit Festkommastelle, verzichten hingegen aber häufig auf die für Allzweck-CPUs und NPUs üblichen Registerbreiten von 32, 48, 64 oder 80 Bit (usw.). Somit sind Berechnungen, beispielsweise mit den Genauigkeiten nach IEEE 754 (64 Bit für double precision), häufig nicht im Befehlssatz der GPU vorgesehen und müssen relativ aufwändig per Software emuliert werden. Daher eignen sich GPUs vor allem zur Berechnung von Datentypen die mit vergleichsweise geringen Bit-Breiten arbeiten.

Zum aktuellen Stand (2010) fertigen erste Hersteller bereits erweiterte GPUs, die neben den von der GPU benötigten Datentypen auch universelle Datentypen und Operationen z. B. zur direkten Berechnung IEEE 754 konformer Ergebnisse beinhalten. Als einer der aktuell führenden Hersteller stellt Nvidia mit der Fermi-Generation GPUs bereit, die sowohl 32-Bit-Integer, als auch einfach- und doppelt-genaue Gleitkomma-Datenformate nativ bereitstellen (float/double).[2]

Ein anderer Nachteil ist die Anbindung an die Rechnerarchitektur, sie erfolgt bei aktuellen GPUs meist über PCIe und bringt, im Vergleich zur direkten Anbindung von Prozessoren, schlechtere (höhere) Latenzzeiten und geringere I/O-Durchsatzraten mit sich. Daher lohnt die Auslagerung nur bei Funktionen mit einigem Rechenaufwand – besonders dann, wenn eine GPU für diese Aufgaben vom Befehlssatz her (z. B. für große Matrizen) besser geeignet ist.

Weiter wird die feste Bindung an einen Hersteller kritisiert. Nutzt man CUDA, im Unterschied zu Bibliotheken für CPUs mit MMX- oder SSE-Erweiterungen (die praktisch auf allen CPUs der verschiedenen Hersteller von X86-Prozessoren laufen), so bindet man ein Programm an den GPU-Hersteller Nvidia und somit an das Vorhandensein von Nvidia-Hardware. OpenCL ist universeller und bietet eine Implementierung für GPUs von Nvidia,[3] AMD (vormals ATI)[4], VIA[5], S3[6] und Anderen. Dazu ist eine CPU-Unterstützung für X86-Prozessoren über die SSE3-Erweiterungen implementiert, weiter bietet IBM eine OpenCL-Implementierung für die Power-Architektur und die Cell Broadband Engine an.[7] Aus dem breiteren Ansatz von OpenCL ergibt sich im Vergleich von CUDA mit OpenCL (auf identischer Nvidia-Hardware) allerdings ein merklicher Performance-Nachteil – je nach Problemstellung sind Einbußen zwischen 5 und 50 % zu beobachten.[8][9]

Literatur

Siehe auch

Weblinks

Einzelnachweise

  1. Mike Murphy: Nvidia’s Experience with Open64. Abgerufen am 6. August 2009.
  2. Fermi Compute Architecture Whitepaper, Nvidia über Fermi abgerufen am 21. September 2010
  3. Nvidia zu OpenCL (28. September 2009)
  4. AMD zu ATI Stream und OpenCL (1. Oktober 2009)
  5. VIA Brings Enhanced VN1000 Graphics Processor (10 Dezember 2009)
  6. S3 Graphics launched the Chrome 5400E embedded graphics processor (27. Oktober 2009)
  7. OpenCL Development Kit for Linux on Power (30. Oktober 2009)
  8. A Performance Comparison of CUDA and OpenCL(12. August 2010)
  9. OpenCL GPGPU Performance OpenCL vs. CUDA/STREAM (1. November 2009)

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Compute Unified Device Architecture — Schéma de principe de l architecture CUDA CUDA (Compute Unified Device Architecture) est une technologie de GPGPU (General Purpose Computing on Graphics Processing Units), c est à dire qu on utilise un processeur graphique (GPU) pour exécuter des …   Wikipédia en Français

  • Fermi (architecture de carte graphique) — Pour les articles homonymes, voir Fermi. Fermi est le nom de code d une nouvelle architecture de carte graphique de la société NVidia[1]. Les premières cartes, gravées en 40nm, sont sorties début 2010[2] et comportent 3 milliards de transistors …   Wikipédia en Français

  • CUDA — Compute Unified Device Architecture CUDA (Compute Unified Device Architecture) est une technologie de GPGPU (General Purpose Computing on Graphics Processing Units), c est à dire qu on utilise un processeur graphique (GPU) pour exécuter des… …   Wikipédia en Français

  • Technologie NVIDIA® CUDA™ — Compute Unified Device Architecture CUDA (Compute Unified Device Architecture) est une technologie de GPGPU (General Purpose Computing on Graphics Processing Units), c est à dire qu on utilise un processeur graphique (GPU) pour exécuter des… …   Wikipédia en Français

  • Abkürzungen/Computer — Dies ist eine Liste technischer Abkürzungen, die im IT Bereich verwendet werden. A [nach oben] AA Antialiasing AAA authentication, authorization and accounting, siehe Triple A System AAC Advanced Audio Coding AACS …   Deutsch Wikipedia

  • Liste der Abkürzungen (Computer) — Dies ist eine Liste technischer Abkürzungen, die im IT Bereich verwendet werden. A [nach oben] AA Antialiasing AAA authentication, authorization and accounting, siehe Triple A System AAC Advanced Audio Coding AACS …   Deutsch Wikipedia

  • Liste von Abkürzungen (Computer) — Dies ist eine Liste technischer Abkürzungen, die im IT Bereich verwendet werden. Inhaltsverzeichnis A B C D E F G H I J K L M N O P Q R S T U V W X Y Z siehe auch: Liste von Dateiendu …   Deutsch Wikipedia

  • CUDA — Developer(s) Nvidia Corporation Stable release 4.0 / May 17 2011; 6 months ago (May 17 2011) Operating system Windows XP and later Mac OS X Linux …   Wikipedia

  • AMD FireStream — The AMD FireStream (previously branded as both ATI FireStream and AMD Stream Processor [ [http://www.amd.com/us en/Corporate/VirtualPressRoom/0,,51 104 543 13744 114146,00.html AMD Press Release] ] ) is a stream processor developed by ATI… …   Wikipedia

  • CUDA — Тип GPGPU Разработчик NVIDIA Corporation Операционная система Windows XP и выше, Mac OS X, Linux Аппаратная платформа …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”