Release des ISPC 1.25 Compilers, entwickelt von Intel für die C-Sprache mit SPMD-Erweiterungen.

Das Unternehmen Intel hat den ISPC 1.25 (Implicit SPMD Program Compiler) veröffentlicht, der zur Erstellung von C-Code mit Erweiterungen für parallele Programmierung SPMD (Single Program, Multiple Data) dient. Dies ermöglicht die parallele Ausführung mehrerer Instanzen eines Programms mit unterschiedlichen Eingabedaten. Der Projektcode ist in C++ geschrieben und wird unter der BSD-Lizenz veröffentlicht. Die Unterstützung für Linux, Windows, macOS und FreeBSD ist gewährleistet.

C-Programme mit SPMD-Erweiterungen werden für die Ausführung auf SIMD-Recheneinheiten, die von CPU und GPU bereitgestellt werden, kompiliert. Dies ermöglicht die Nutzung der SIMD-Vektorisierungsmechanismen ohne niedrigstufige Optimierungen und die explizite Verwendung von SIMD-Anweisungen im Code. Zum Schreiben von parallelisierbaren Funktionen wird die vertraute Syntax und Idiomatik der Programmiersprache C verwendet — SPMD-Funktionen interagieren direkt mit Funktionen und Strukturen, die in C/C++ geschrieben sind. Für das Debuggen von Programmen können vorhandene Debugger verwendet werden.

Für die Codegenerierung und Optimierung in ISPC wird die LLVM-Infrastruktur als Backend verwendet. Es werden vektorielle x86-Instruktionen (SSE2, SSE4, AVX, AVX2, AVX512) und ARM (NEON) sowie die Auslagerung von Berechnungen auf die GPU (Intel Gen9 und Xe) unterstützt. Auf Architekturen mit SSE-Vektorblöcken, die 4 Elemente gleichzeitig verarbeiten, ermöglicht die Nutzung von ISPC eine Beschleunigung der Programmausführung um das 3-fache oder mehr, während auf Architekturen mit AVX-Vektorblöcken, die 8 Elemente gleichzeitig verarbeiten, eine Beschleunigung von 5-6-fach erreicht werden kann. Neben der Größe des Vektorblocks wird die Skalierung auch durch die Ausführung auf verschiedenen Prozessorkernen unterstützt.

Die wichtigsten Neuerungen in der Version ISPC 1.25:

  • Bei der Deklaration von Variablen und Funktionen können die Attribute „noescape“, „address_space(N)“, „external_only“ und „unmangled“ mit dem Schlüsselwort „__attribute__“ angegeben werden.
  • Die Unterstützung für die Verwendung von Templates bei der Deklaration von Vektoren und Arrays wurde hinzugefügt.
  • Fehlermeldungen werden ausgegeben, wenn inkompatible Typen bei der Deklaration von Variablen verwendet werden.
  • Die Codegenerierung für foreach-Schleifen wurde verbessert. Die Effizienz der Codegenerierung auf Basis der Befehlssätze AVX2 und AVX512 wurde erhöht.
  • Die vorzeitige Kompilierung der Standardbibliothek (stdlib) erfolgt jetzt während der ISPC-Bauphase und nicht während der Projektkompilierung. Diese Änderung ermöglicht eine Verkürzung der Bauzeit um 5–60%, je nach Größe des zu kompilierenden Codes.
  • Neue Bauziele wurden hinzugefügt: xe2hpg-x16 und xe2hpg-x32 für die Intel Xe2 Battlemage GPUs, xe2lpg-x16 und xe2lpg-x32 für die Intel Xe2 Lunar Lake GPUs. Außerdem wurden Definitionen für arrowlake, lunarlake und graniterapids für die Intel CPUs ArrowLake, LunarLake und GraniteRapids eingeführt.
  • Die Bauziele avx512knl-x16, gen9-x8 und gen9-x16 wurden als veraltet erklärt.
  • In die Standardbibliothek für Daten mit den Typen float und double wurden atomare Operationen für Addition, Subtraktion, Minimum und Maximum eingeführt.
  • Die Befehlszeilenoption „-ffunction-sections“ wurde hinzugefügt, um jede Funktion in einem separaten Abschnitt zu generieren.
  • Die Möglichkeit zur ISPC-Bau in zwei Modi, „slim“ und „composite“ (Standard), wurde bereitgestellt. Der zweite Modus unterscheidet sich dadurch, dass die stdlib- und binutils-Bibliotheken in einer einzigen ausführbaren Datei integriert sind, anstatt als separate Dateien bereitgestellt zu werden.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster