Bibliothek / SDK
uxlfoundation/oneDNN avatar
uxlfoundation/oneDNN

oneDNN: Die Baustein-Bibliothek für Deep Learning auf CPU und GPU

oneAPI Deep Neural Network Library (oneDNN). [ ][UXL Foundation] oneAPI Deep Neural Network Library (oneDNN) oneAPI Deep Neural Network Library (oneDNN) ist eine plattformübergreifende Open-Source-Leistungsbibliothek mit Grundbausteinen für Deep-Learning-Anwendungen.

4.045 Sterne1.198 ForksC++Apache-2.0

Auf einen Blick

Was ist das?
oneDNN liefert die primitiven Operationen, auf denen PyTorch, TensorFlow und llama.cpp aufbauen. Der Artikel zeigt, wie die Bibliothek funktioniert, wo ihre Grenzen liegen und für wen sie sich lohnt.
Für wen ist es gedacht?
oneDNN ist die richtige Wahl für Framework-Entwickler und alle, die eigene Inferenz- oder Trainingspfade auf Intel-CPUs oder Intel-GPUs beschleunigen wollen. Wer nur ein fertiges Modell ausführen möchte, sollte lieber auf PyTorch oder ONNX Runtime setzen.
Darf ich es kommerziell nutzen?
Ja. Apache-2.0 ist eine freizügige Lizenz: Sie dürfen darauf aufbauende Software nutzen, verändern und verkaufen, solange Sie die Urheberrechts- und Lizenzhinweise beibehalten.
Wird es noch gepflegt?
Ja. Das Repository hat innerhalb des letzten Tages neue Commits erhalten.
In welcher Sprache ist es geschrieben?
Hauptsächlich C++, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Was oneDNN löst und wer es braucht

oneDNN ist keine Anwendung, sondern eine Sammlung von Bausteinen für Deep-Learning-Frameworks. Die Bibliothek stellt primitive Operationen wie Faltung, Pooling, Normalisierung und Matrizenmultiplikation bereit. Diese Operationen sind das Fundament, auf dem Frameworks wie PyTorch, TensorFlow und ONNX Runtime ihre Modelle aufbauen. Die README nennt ausdrücklich llama.cpp und OpenVINO als weitere Nutzer. Für Anwender, die nur ein Modell trainieren oder ausführen wollen, ist oneDNN nicht gedacht. Sie sollen laut README eines der aufgeführten Frameworks verwenden. Die Zielgruppe sind also Entwickler, die ein Framework anpassen oder eine eigene Laufzeit bauen. oneDNN verspricht dabei eines: Leistung auf Intel- und AMD-x86-Prozessoren sowie auf Intel-Grafik.

Der Mechanismus: JIT-Codegenerierung und CPU-Dispatcher

Der zentrale Trick von oneDNN ist die Laufzeit-Erkennung der CPU-Architektur. Auf x86-Systemen prüft die Bibliothek beim Start, welche Befehlssatzerweiterungen verfügbar sind. Dazu gehört AVX2, AVX-512 und in Zukunft AVX10.2. Anschließend erzeugt ein Just-in-Time-Compiler passenden Maschinencode. Das ist kein statischer Code, der für die niedrigste gemeinsame ISA kompiliert wird. Stattdessen entsteht zur Laufzeit eine optimierte Variante für die konkrete Hardware. Der README zufolge kann die Unterstützung für neue ISAs zunächst deaktiviert sein und muss über Laufzeit-Kontrollen aktiviert werden. Der CPU-Dispatcher ist dafür zuständig. Auf AArch64-Systemen läuft das ähnlich, dort sind die Neoverse-Kerne von Arm die Zielplattform. Für GPUs gibt es einen separaten Pfad, der auf die Intel-Architekturen Alchemist, Battlemage und Ponte Vecchio abgestimmt ist.

Installation und erste Schritte aus dem Quellcode

Wer oneDNN selbst bauen will, braucht einen C++11-Compiler und CMake in Version 3.13 oder neuer. Das ist ein bewusst niedrig gesetzter Einstieg. Die Dokumentation verlangt für die Erzeugung der Doku zusätzlich Doxygen, Doxyrest, Sphinx und graphviz. Der Build selbst erfolgt mit den üblichen CMake-Befehlen. Ein typischer Ablauf ist: cmake -B build -DCMAKE_BUILD_TYPE=Release, gefolgt von cmake --build build. Danach installiert man die Bibliothek mit cmake --install build. Wichtig ist der Hinweis in der README: Auf macOS kann die Verwendung von oneDNN spezielle Berechtigungen erfordern, wenn das Programm mit dem gehärteten Laufzeitmodus läuft. Das ist eine Hürde, die man vor der Integration einkalkulieren muss. Die API selbst ist in C++ gehalten und über die Header-Dateien zugänglich.

Unterstützte Hardware und ihre Abgrenzung

Die README listet die optimierten Plattformen sehr präzise auf. Auf der CPU-Seite sind das Intel Xeon Scalable der Generationen Skylake bis Emerald Rapids, Intel Core Ultra und Intel Xeon 6. Dazu kommen AMD64-Prozessoren, die dieselben ISAs unterstützen. Auf der Arm-Seite sind Neoverse N- und V-Serien genannt. Intel-Grafik wird ebenfalls unterstützt, von Arc A-Series bis zu den aktuellen Battlemage-Karten. Daneben gibt es experimentelle Unterstützung für NVIDIA-GPU, AMD-GPU, Power ISA, s390x und RISC-V. Diese Architekturen sind laut README nur eingeschränkt getestet. Das bedeutet: Wer auf einer dieser Plattformen arbeitet, sollte nicht auf die gleiche Stabilität hoffen wie auf x86. Die Warnung ist explizit. Außerdem sind Optimierungen für alte Intel-Prozessoren mit SSE4.1 und AVX als veraltet markiert und werden in künftigen Versionen entfernt. Das ist ein klarer Hinweis, dass man für ältere Hardware nicht auf oneDNN setzen sollte.

Grenzen und falsche Einsatzszenarien

oneDNN ist keine Lösung für alle Deep-Learning-Probleme. Wer ein eigenes neuronales Netz mit ungewöhnlichen Operatoren entwickelt, wird in oneDNN nicht für jede Operation eine primitive Funktion finden. Die Bibliothek deckt die Standard-Bausteine ab, aber für spezielle Layer muss man auf andere Bibliotheken oder eigene Implementierungen zurückgreifen. Ein weiterer Schwachpunkt ist die Abhängigkeit von Intel-Hardware. Auf AMD-GPUs ist die Unterstützung experimentell, und für NVIDIA-GPUs gibt es ebenfalls nur experimentellen Status. Das heißt, wer auf diesen GPUs produktiv arbeiten will, sollte lieber auf CUDA oder ROCm setzen. Auch die macOS-Problematik mit den Berechtigungen kann ein Ausschlusskriterium sein. Schließlich ist oneDNN eine Low-Level-Bibliothek. Die API ist komplex und erfordert Einarbeitung. Für ein schnelles Experiment ist das der falsche Weg.

Alternativen im Vergleich

Die naheliegende Alternative ist die Eigenoptimierung in den Frameworks selbst. PyTorch und TensorFlow haben eigene Kernel-Implementierungen, die auf CUDA und ROCm zugeschnitten sind. oneDNN konkurriert also nicht direkt mit diesen Frameworks, sondern liefert ihnen die CPU-Primitive. Eine echte Alternative ist die Bibliothek Eigen, die für Matrixoperationen genutzt wird, aber keine JIT-Codegenerierung für Deep-Learning-spezifische Faltungen bietet. Ein anderer Ansatz ist die Verwendung von OpenBLAS oder BLAS-Implementierungen für die zugrunde liegenden Matrizenoperationen. Diese sind jedoch nicht auf Faltungen und Pooling spezialisiert. Wer auf Intel-Hardware maximale Leistung sucht, kommt an oneDNN kaum vorbei. Wer auf NVIDIA-GPU setzt, sollte cuDNN in Betracht ziehen, das eine ähnliche Rolle für CUDA erfüllt. Der entscheidende Unterschied ist die Zielplattform: oneDNN ist auf Intel zentriert, cuDNN auf NVIDIA.

Wartung, Lizenz und Governance

oneDNN wird von der UXL Foundation verwaltet, einer Organisation, die mehrere Open-Source-Projekte im oneAPI-Umfeld koordiniert. Die Lizenz ist Apache-2.0, was für kommerzielle Nutzung wenig Einschränkungen bedeutet. Das Projekt ist aktiv, die letzten Releases v3.13.1 und v3.13.2 stammen aus dem August 2026. Die Versionsnummern steigen regelmäßig, was auf kontinuierliche Pflege hindeutet. Ein Upgrade auf eine neue Version ist in der Regel unkompliziert, da die API stabil bleibt. Dennoch sollte man die Release-Notes prüfen, denn die Entfernung veralteter ISA-Optimierungen kann Einfluss auf die Leistung älterer Systeme haben. Der README verweist auf einen Governance-Abschnitt, der die Entscheidungsprozesse beschreibt. Für ein Unternehmen, das eine langfristige Abhängigkeit eingehen will, ist das ein beruhigendes Zeichen. Die Dokumentation ist umfangreich und wird mit Doxygen und Sphinx gepflegt.

Redaktionelles Fazit

oneDNN ist die richtige Wahl für Framework-Entwickler und alle, die eigene Inferenz- oder Trainingspfade auf Intel-CPUs oder Intel-GPUs beschleunigen wollen. Wer nur ein fertiges Modell ausführen möchte, sollte lieber auf PyTorch oder ONNX Runtime setzen. Vor der Übernahme sollte man prüfen, ob die eigene Ziel-Hardware in der Liste der optimierten CPUs und GPUs steht. Für experimentelle Architekturen wie RISC-V oder s390x ist die Unterstützung laut README nur eingeschränkt getestet. Wer diese Plattformen anvisiert, muss mit Bugs rechnen und sollte die Release-Notizen genau lesen.

Offizielle Quellen

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community-Notizen

Community-Notizen