PoCL 1.6, eine eigenständige Implementierung des OpenCL-Standards

Die neue Version 1.6 des PoCL- Projekts (Portable Computing Language OpenCL) wurde soeben veröffentlicht . Zu den Highlights von Version 1.6 gehören die Kompatibilität mit Clang/LLVM 11.0 sowie Verbesserungen der CUDA-Leistung und -Funktionen, eine verbesserte Kompatibilität mit PowerPC und optimierte OpenCL-Debugging-Funktionen.

Für alle, die PoCL noch nicht kennen: Es handelt sich um eine portable Open-Source -Implementierung (MIT-Lizenz) des OpenCL-Standards (1.2 mit einigen 2.0-kompatiblen Funktionen). Neben der hohen Portabilität und der Unterstützung verschiedener Geräte (echt heterogene Open-Source-Implementierung ) ist ein Hauptziel dieses Projekts die Verbesserung der Interoperabilität verschiedener OpenCL-kompatibler Geräte durch deren Integration in eine zentrale Plattform.

Darüber hinaus besteht eines der wichtigsten längerfristigen Ziele darin, die Leistungsportabilität von OpenCL-Programmen auf Gerätetypen zu verbessern, die Laufzeit- und Kompilierungstechniken verwenden.

Der OpenCL-Kernel-Compiler basiert auf LLVM und Clang wird als Schnittstelle zu OpenCL C verwendet. Um eine ordnungsgemäße Portabilität und Leistung zu gewährleisten, kann der OpenCL-Kernel-Compiler kombinierte Funktionen generieren, die verschiedene Hardwareressourcen zur Parallelisierung der Codeausführung verwenden können, z. B. VLIW, superscalar , SIMD, SIMT, Multi-Core und Multi-Threaded. ICD-Treiber (Installable Client Driver) werden unterstützt. Es gibt Backends, die Arbeit über CPU, ASIP (TCE / TTA), GPU basierend auf HSA-Architektur und NVIDIA GPU (CUDA) bereitstellen.

Hauptneufunktionen von PoCL 1.6

Diese neue Version von PoCL 1.6 unterstreicht die Möglichkeit, diese Implementierung mit zum Kompilierungszeitpunkt aktivierten Gerätetreibern zu kompilieren, und die Verfügbarkeit des Geräts wird beim Start überprüft (zuvor sollten die Systeme, auf denen PoCL erstellt und ausgeführt wird, vorhanden sein) die gleiche Controller-Unterstützung). Implementierung der Fähigkeit, den conda-Paketmanager zum Verteilen von PoCL-Binärpaketen mit CUDA-Unterstützung für Linux-x86_64- und Linux-ppc64le-Systeme zu implementieren.

Eine weitere herausragende Änderung ist die Unterstützung von LLVM 11 sowie die erweiterten Möglichkeiten zum Debuggen von OpenCL-Code bei Verwendung des CPU-Controllers.

Darüber hinaus sollte beachtet werden, dass die Leistungsoptimierung des CUDA-Backends durchgeführt wurde, wodurch Operationen im Zusammenhang mit der Verwendung des lokalen Speichers (FFT, GEMM) erheblich optimiert wurden.

Benchmarks mit SHOC-Benchmarks (die jetzt kontinuierlich getestet werden) zeigen, dass diese Optimierungen zu einer viel besseren Leistung geführt haben, insbesondere bei Benchmarks mit lokalem Speicher wie FFT und GEMM im Vergleich zu früheren Referenzversuchen. PoCL erzielt jetzt häufig Wettbewerbsleistung mit Nvidias proprietärem OpenCL Treiber). Wir begrüßen Beiträge zur Identifizierung und Beseitigung der Hauptursachen der verbleibenden Problembereiche. Wir begrüßen auch Beiträge zur Verbesserung der Funktionsabdeckung für die OpenCL 1.2 / 3.0-Standards.

  • Die PoCL-Leistung in vielen Tests liegt jetzt nahe am proprietären OpenCL-Treiber von NVIDIA.
  • Der Kompilierungsparameter HARDENING_ENABLE wurde hinzugefügt, damit Compileroptionen eine sicherere libpocl.so auf Kosten einer Leistungsverschlechterung generieren können.
  • Zurückgegebene Unterstützung für PowerPC 8/9-Systeme, für die die OpenCL-Implementierungsebene bei Verwendung von pthread- und CUDA-Geräten der CUDA-Ebene auf x86_64-Systemen entspricht.
  • ABI für CUDA-Kernel geändert, die __ lokale Blöcke verwenden. Nach dem Upgrade müssen Benutzer den POCL-Cache leeren.
  • Die Unterstützung für die Build-Option SINGLE_LLVM_LIB wurde entfernt, anstatt STATIC_LLVM und llvm-config zu verwenden, um zu definieren, an welche Bibliotheken gebunden werden soll.

Wenn Sie schließlich mehr über diese neue Version erfahren möchten, können Sie die Details in der ursprünglichen Ankündigung nachlesen.

Wer mehr über diese Implementierung erfahren möchte, kann die offizielle Website konsultieren , wo Dokumentationen und herunterladbare Dateien zu finden sind.

Der Projektcode wird unter der MIT-Lizenz verteilt und die Arbeit wird auf den Plattformen X86_64, MIPS32, ARM v7, AMD HSA APU und verschiedenen spezialisierten TTA-Prozessoren mit der VLIW-Architektur unterstützt.


Als bevorzugte Quelle in Google hinzufügen