Suchen

Definition Was ist cuBLAS?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

cuBLAS ist eine Bibliothek von Nvidia, die BLAS (Basic Linear Algebra Subprograms) in die CUDA-Umgebung integriert. Mithilfe der Bibliothek lässt sich die Rechenleistung von Nvidia-Grafikprozessoren für Deep-Learning-Anwendungen nutzen. cuBLAS ist Teil des NVIDIA Deep Learning SDKs.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Die cuBLAS-Library implementiert die Basic Linear Algebra Subprograms (BLAS) in das CUDA-Modell und die CUDA-Plattform von Nvidia. Mithilfe der Bibliothek lassen sich die Rechenressourcen von Nvidia-Grafikprozessoren (GPUs) für Anwendungen des Deep-Learning-Umfelds nutzen. cuBLAS stellt APIs und Funktionen für rechenintensive Aufgaben zur Verfügung, die sich mithilfe der Bibliothek an einzelne oder mehrere GPUs übertragen lassen.

Die Library wird von Wissenschaftlern und Programmierern genutzt, um GPU-beschleunigte Algorithmen zu entwickeln. Sie kommen beispielsweise für die Bildanalyse, maschinelles Lernen oder Anwendungen der Künstlichen Intelligenz (KI) zum Einsatz. cuBLAS erzielt zusammen mit Nvidia-GPUs eine hohe Performance und beschleunigt die Rechenvorgänge. Die Bibliothek ist frei verfügbar und für Betriebssysteme wie Windows, Linux oder macOS einsetzbar. Sie ist ein Bestandteil des Nvidia-Deep-Learning-SDKs und des CUDA Toolkits.

Grundsätzliches zu CUDA

Die Computing-Plattform CUDA wurde von Nvidia entwickelt. Die Abkürzung CUDA stand ursprünglich für „Compute Unified Device Architecture“. CUDA stellt ein API-Modell zur Verfügung, mit dem Software-Entwickler CUDA-fähige GPUs für Berechnungen verwenden können. Hierfür agiert CUDA als Software-Schicht, die direkten Zugriff auf die Ressourcen und Befehlssätze der GPUs gewährt. Sie arbeitet mit verschiedenen Programmiersprachen wie Fortran, C oder C++ zusammen. Im Gegensatz zu anderen APIs wie OpenGL oder Direct3D benötigen Entwickler keine speziellen Kenntnisse in der Grafikprogrammierung.

Grundsätzliches zu BLAS

BLAS (Basic Linear Algebra Subprograms) ist eine Bibliothek, die grundlegende Operationen und Routinen der linearen Algebra zur Verfügung stellt. Diese lassen sich beispielsweise für Matrix- oder Vektormultiplikationen verwenden. BLAS-Libraries existieren für verschiedenen Programmiersprachen, Plattformen und Hardware-Architekturen. Die Operationen und Routinen der Libraries sind jeweils für die verschiedenen Plattformen optimiert und arbeiten effizient mit der Hardware zusammen. Die für NVIDIA und die CUDA-Plattform optimierte BLAS-Bibliothek ist cuBLAS. BLAS hat sich im Supercomputing-Umfeld zu einer Art Standard entwickelt.

Die wichtigsten Merkmale und Eigenschaften der Bibliothek cuBLAS

Die cuBLAS Bibliothek besitzt unter anderem folgende Eigenschaften und Merkmale:

  • Unterstützung aller 152 Standard-BLAS-Routinen
  • optimierte Performance des General-Matrix-Multiply-Algorithmus (GEMM) für verschiedenen Deep-Learning-Modelle
  • Unterstützung unterschiedlicher Datentypen wie Single, Double oder Complex
  • Unterstützung von Multi-GPU-Umgebungen
  • Unterstützung von CUDA-Streams
  • APIs für das Batch-Prozessing von GEMM-Operationen
  • Error-Logging-, Debug- und Trace-Funktionen
  • schnelle Implementierung des Triangular Solve (TRSV)

cuBLAS als Bestandteil des Nvidia Deep Learning SDKs

cuBLAS ist eine von vielen Komponenten des Deep Learning Software Development Kits (SDK) von Nvidia. Das SDK stellt zahlreiche Tools und Libraries zur Verfügung, mit denen sich GPU-beschleunigte Anwendungen im Umfeld des Deep Learnings entwickeln, programmieren und implementieren lassen. Entwickler können das Software Development Kit zusammen mit gängigen Deep Learning Frameworks wie Caffe2, MXNet, TensorFlow, Cognitive Toolkit oder PyTorch verwenden. Das Deep Learning SDK basiert auf dem CUDA-Toolkit. cuBLAS ist für die Implementierung der BLAS-Bibliothek in die CUDA-Plattform verantwortlich.

Zentrale Bestandteile und Bibliotheken des NVIDIA Deep Learning SDKs sind unter anderem:

  • NCCL für die Multi-GPU-Kommunikation
  • die cuDNN-Bibliothek für das Deep Learning mit neuronalen Netzwerken
  • die cuBLAS-Bibliothek für Operationen der linearen Algebra auf der CUDA-Plattform
  • TensorRT – die Deep Learning Inference Engine
  • das DeepStream SDK für die Deep-Learning-Videoanalyse
  • cuSPARSE Matrix-Operationen
  • DIGITS – das Deep Learning GPU Trainings-System
  • das Optical Flow SDK

(ID:45785790)

Über den Autor