8 dépôts
Executes multiple data operations in a single instruction cycle to maximize throughput for high-bandwidth multimedia processing tasks.
Distinct from SIMD-Accelerated Arithmetic: Distinct from SIMD-Accelerated Arithmetic: focuses on the broader application of SIMD for data parallelism in multimedia rather than just arithmetic operations.
Explore 8 awesome GitHub repositories matching data & databases · SIMD-Based Data Parallelism. Refine with filters or upvote what's useful.
AISystem is a comprehensive AI full-stack infrastructure project covering the entire pipeline from AI chip architecture to high-level training frameworks. It encompasses the development of AI compiler frameworks, inference engines, and distributed training orchestrators designed to coordinate workloads across a heterogeneous compute stack of CPUs, GPUs, and NPUs. The project focuses on the deep integration of software and hardware, employing software-hardware co-design to align tensor layouts with physical memory structures. It provides specialized capabilities for accelerating Transformer mo
Applies a single instruction across multiple data elements simultaneously to accelerate vector operations.
This project serves as an educational resource for learning and implementing low-level assembly language optimizations. It provides a structured guide for developers to master hardware-specific instructions and manual performance tuning, focusing on the translation of high-level code into efficient machine-level operations for resource-constrained environments. The materials emphasize techniques for maximizing computational throughput in multimedia processing. By covering instruction-level parallelism, register management, and data parallelism, the project enables the development of software
Executes multiple data operations in a single instruction cycle to maximize throughput for high-bandwidth multimedia processing tasks.
xxHash is a high-performance, non-cryptographic hash library designed for rapid checksum generation and data integrity verification. It functions as an incremental hashing engine, allowing for the processing of large or streaming data inputs by maintaining a persistent internal state across sequential chunks. The library is engineered as a computational framework that maximizes throughput by utilizing wide CPU registers and branchless instruction pipelining. It achieves high-speed performance by aligning data access with CPU cache lines and employing multi-stage mixing functions that ensure c
Processes data in parallel using wide CPU registers to maximize throughput during large memory block hashing operations.
BLAKE3 est une implémentation haute performance de l'algorithme de hachage cryptographique BLAKE3 utilisé pour calculer des digests de données sécurisés et des empreintes digitales. Il fonctionne comme un outil de hachage cryptographique parallèle qui distribue les charges de travail sur plusieurs threads de processeur pour traiter rapidement de grands jeux de données. Le projet fournit des outils spécialisés pour le hachage avec clé et la génération de codes d'authentification de message. Il inclut également une fonctionnalité pour la dérivation de clé cryptographique, permettant la création de sous-clés secrètes uniques à partir d'une clé maîtresse et de chaînes de contexte. L'implémentation prend en charge la vérification de l'intégrité des données via le calcul de hachage parallèle et le streaming de données vérifié. Ces capacités sont fournies sous forme de bibliothèque inter-langages pour les environnements Rust et C et incluent une interface en ligne de commande pour calculer les digests de fichiers ou d'entrée standard.
Maximizes CPU throughput by processing multiple data blocks simultaneously using SIMD lanes.
Highway est une bibliothèque C++ portable et une couche d'abstraction matérielle conçue pour écrire du code SIMD (Single Instruction Multiple Data). Elle fournit une interface unifiée qui mappe la logique de parallélisme de données vers divers jeux d'instructions CPU, permettant le développement de logiciels haute performance qui s'exécutent sur différentes architectures de processeurs sans nécessiter d'assembleur spécifique à l'architecture. Le projet dispose d'un répartiteur d'instructions dynamique qui sélectionne le jeu d'instructions CPU le plus efficace à l'exécution en fonction du matériel détecté. Il prend également en charge la spécialisation de cible statique et des mécanismes extensibles pour ajouter de nouvelles cibles matérielles ou des opérations SIMD personnalisées. La bibliothèque couvre un large éventail d'opérations vectorielles, incluant l'arithmétique élément par élément, la réduction de voie, le mélange (shuffling) et l'exécution conditionnelle masquée. Elle inclut une bibliothèque mathématique vectorisée, un gestionnaire de mémoire pour l'allocation alignée et les opérations de chargement-stockage masquées, ainsi que des primitives pour la cryptographie accélérée par matériel. Des outils sont fournis pour la compilation et la validation automatisées des instructions accélérées par matériel sur plusieurs architectures de processeurs.
Provides a portable interface to write data-parallel code that maps to hardware-accelerated SIMD instructions.
c3c is the compiler for the C3 programming language, transforming source code into executable binaries, static libraries, or dynamic libraries using an LLVM backend. It implements a system based on result-based error handling, scoped memory pooling, and a semantic macro system. The compiler provides first-class support for hardware-backed SIMD vectors that map directly to processor instructions and enables runtime polymorphism through interface-based dynamic dispatch. The project covers a broad set of low-level capabilities, including manual and pooled memory management, inline assembly inte
Executes parallel arithmetic and logical operations on hardware-backed vectors to maximize computational throughput.
Rack est un émulateur de synthétiseur modulaire Eurorack virtuel et un SDK de synthèse modulaire. Il fournit un environnement numérique pour créer et router des signaux de musique électronique en utilisant des modules virtuels, des oscillateurs et des filtres, simulant le comportement du matériel analogique via le routage de signal basé sur la tension. Le système fonctionne comme un convertisseur MIDI et CV, traduisant les signaux entre le logiciel et le matériel externe, et peut fonctionner comme un plugin VST ou un instrument standard de l'industrie au sein de stations de travail audio numériques. Il agit également comme un hôte de plugin VST, intégrant des instruments virtuels et des effets externes pour étendre les outils de traitement sonore disponibles. La plateforme inclut une gamme complète de capacités de traitement audio, y compris la synthèse par modélisation physique, le traitement spectral et les effets basés sur le temps. Elle fournit des outils pour la génération de tension de contrôle, le séquençage de notes et le traitement de signal polyphonique, aux côtés d'un kit de développement pour construire des modules audio personnalisés avec génération d'interface pilotée par SVG. Une interface en ligne de commande est disponible pour le lancement d'applications, l'amorçage de projets et l'automatisation de la production de fichiers source à partir de graphiques vectoriels.
Utilizes SIMD vector instructions to process multiple audio channels in parallel for CPU efficiency.
perf-ninja is a collection of educational resources and curricula focused on CPU architecture, memory hierarchies, SIMD programming, and low-level performance engineering. It provides instructional material and practical labs for identifying and fixing CPU bottlenecks, such as cache misses and branch mispredictions. The project differentiates itself through specialized training in hardware-level optimizations, including the use of compiler intrinsics for SIMD vectorization and the implementation of branchless predicate execution to eliminate pipeline stalls. It also covers advanced binary-lev
Provides guidance on replacing scalar operations with hardware-specific vector instructions to process multiple data elements simultaneously.