Fadenbausteine

Fadenbausteine
Entwickler (en) Intel
Stabile Version
2021.5 / 22. Dezember 2021; vor 7 Monaten[1]
Repository
Geschrieben in C ++
Betriebssystem FreeBSD, Linux, Solaris, MacOS, Windows, Android
Typ Bibliothek oder Rahmen
Lizenz Dual: kommerziell / open Source (Apache 2.0) plus Freeware[2]
Webseite Github.com/Oneapi-Src/Onetbb
Intel.com/Onetbb

Oneapi Fadenbausteine (Onetbb; ehemals Fadenbausteine ​​oder TBB) ist a C ++ Schablone Bibliothek entwickelt von Intel zum Parallele Programmierung an Multi-Core-Prozessoren. Unter Verwendung von TBB wird eine Berechnung in Untertasten Aufgaben Das kann parallel laufen. Die Bibliothek verwaltet und Zeitpläne Themen diese Aufgaben ausführen.

Überblick

Ein OnetBB -Programm erstellt, synchronisiert und zerstört Diagramme abhängige Aufgaben nach Algorithmen, d.h. hochrangige parallele Programmierparadigmen (a.k.a. Algorithmische Skelette). Aufgaben werden dann ausgeführt, um Diagrammabhängigkeiten zu respektieren. Dieser Ansatz gruppiert TBB in einer Familie von Techniken zur parallele Programmierung, die darauf abzielen, die Programmierung aus den Einzelheiten der zugrunde liegenden Maschine zu entkoppeln.

ONETBB implementiert Arbeit stehlen Um eine parallele Arbeitsbelastung über verfügbare Verarbeitungskerne auszugleichen, um die Kernnutzung und damit die Skalierung zu erhöhen. Zunächst ist die Arbeitsbelastung gleichmäßig auf die verfügbaren Prozessorkerne aufgeteilt. Wenn ein Kern seine Arbeit erledigt, während andere Kerne noch eine erhebliche Menge an Arbeit in seiner Warteschlange haben, gibt ONETBB einige der Arbeiten von einer der geschäftigen Kerne bis zum Leerlaufkern zu. Diese dynamische Fähigkeit entkoppelt den Programmierer vom Computer und ermöglicht die Verwendung der mit der Bibliothek geschriebenen Anwendungen, um die verfügbaren Verarbeitungskerne ohne Änderungen am Quellcode oder in der ausführbaren Programmdatei zu verwenden. In einer Bewertung der Arbeit, die die Umsetzung in TBB stiehlt, Forscher von 2008 Princeton Universität fanden heraus, dass es für eine große Anzahl von Prozessorenkernen suboptimal war und bis zu 47% der Rechenzeit für die Planung von Overheads bei der Ausführung bestimmter Benchmarks auf einem 32-Kern-System verursachte.[3]

ONETBB, wie das Stl (Und der Teil der C ++ - Standardbibliothek basierend darauf) verwendet Vorlagen ausgiebig. Dies hat den Vorteil von niedrigem Überkopf PolymorphismusDa Vorlagen ein Kompilierungszeitkonstrukt sind, welches moderne C ++ Compiler kann weitgehend optimieren.

ONETBB ist im Handel als binäre Verteilung mit Unterstützung erhältlich.[4] und wie Quelloffene Software Sowohl in Quelle als auch in binären Formen.

Onetbb liefert keine Garantien von Determinismus oder Freiheit von Datenrennen.[5]

Bibliotheksinhalt

Onetbb ist eine Sammlung von Komponenten für die parallele Programmierung:

  • Basisalgorithmen: parallel_for, parallel_reduce, parallel_scan
  • Erweiterte Algorithmen: parallel_pipeline, parallel_sort
  • Behälter: Concurrent_queue, Concurrent_Priority_queue, Concurrent_Vector, concurrent_hash_map
  • Speicherzuweisung: scalable_malloc, scalable_free, scalable_realloc, scalable_calloc, scalable_allocator, cache_aligned_allocator
  • Gegenseitiger Ausschluss: Mutex, spin_mutex, queuing_mutex, spin_rw_mutex, queuing_rw_mutex, rekursiv_mutex
  • Timing: tragbarer feinkörniger globaler Zeitstempel
  • Aufgabenplaner: Direkter Zugriff auf die Erstellung und Aktivierung von Aufgaben

Systeme unterstützt

Die Voraussetzungen für Hardware, Betriebssystem und Software für ONETBB.

Unterstützte Hardware

  • Intel Celeron -Prozessorfamilie
  • Intel Core -Prozessorfamilie
  • Intel Xeon -Prozessorfamilie
  • Intel Xeon Phi -Prozessorfamilie
  • Intel Atom -Prozessorfamilie
  • Nicht-Intel-Prozessoren, die mit den obigen Prozessoren kompatibel sind

Unterstützte Betriebssysteme

Systeme mit Microsoft Windows -Betriebssystemen:

  • Microsoft Windows 10
  • Microsoft Windows Server 2016
  • Microsoft Windows Server 2019

Systeme mit Linux* Betriebssystemen:

  • Klar Linux
  • Amazon Linux 2
  • Centos 8
  • Debian 10
  • Fedora 34
  • Red Hat Enterprise Linux 7, 8
  • SUSE Linux Enterprise Server 15
  • Ubuntu 18.04 LTS, 20.04, 21.04

Systeme mit MacOS -Betriebssystemen:

  • macOS 10.15, 11.x

Systeme mit Android -Betriebssystemen:

  • Android 9

Unterstützte Compiler

  • Intel Oneapi DPC ++/C ++ - Compiler
  • Intel C ++ Compiler 19.0 und 19.1 Version
  • Microsoft Visual C ++ 14.2 (Microsoft Visual Studio 2019, nur Windows OS)
  • GNU -Compiler (GCC) 4.8.5 - 11.1.1
  • GNU C Library (GLIBC) Version 2.17 - 2.33
  • Clang 6.0.0-12.0.0


Siehe auch

Anmerkungen

  1. ^ "Oneapi -Gewinde Bausteine ​​Github Releases". GitHub.
  2. ^ "Keine Kostenoptionen für Intel unterstützen selbst, lizenzfrei".
  3. ^ Contreras, Gilberto; Martonosi, Margaret (2008). Charakterisierung und Verbesserung der Leistung von Intel -Threading -Bausteinen (PDF). IEEE INT'L Symp. zur Arbeitsbelastungscharakterisierung.
  4. ^ https://software.intel.com/en-us/intel-tbb Intel Threading -Bausteine ​​kommerzielle Version Homepage
  5. ^ Bocchino Jr., Robert L.; Adve, Vikram S.; Adve, Sarita V.; Snir, Marc (2009). Die parallele Programmierung muss standardmäßig deterministisch sein. Usenix Workshop zu heißen Themen in Parallelität.

Verweise

Externe Links