The Walsh-Hadamard Transform (WHT) is a mathematical algorithm with applications in areas such as signal processing and data compression. In recent years, ARM processors have become increasingly widespread, especially in mobile devices and Apple Silicon computers. This thesis focuses on the implementation and optimization of the WHT on this architecture. The project started from a basic iterative version written in C++, which served as a reference for developing an optimized variant using NEON instructions, the SIMD extensions available on ARM to process multiple data elements in parallel. The optimization mainly targeted the sum and difference operations that form the so-called “butterfly” structure of the algorithm. Through a series of tests and benchmarks on vectors of different sizes, it was possible to compare the performance of the two versions, highlighting a clear speed improvement thanks to the use of NEON. This work shows how SIMD instructions on ARM can provide concrete performance benefits and offers a foundation for possible extensions to similar algorithms or practical applications.

La Walsh-Hadamard Transform (WHT) è un algoritmo matematico che trova applicazione in diversi campi, come l’elaborazione dei segnali e la compressione dei dati. Negli ultimi anni i processori ARM sono diventati sempre più diffusi, in particolare nei dispositivi mobili e nei computer basati su Apple Silicon. Questo lavoro si concentra sull’implementazione e l’ottimizzazione della WHT proprio su questa architettura. Il progetto è partito da una versione iterativa di base scritta in C++, che è stata poi presa come riferimento per sviluppare una variante ottimizzata con le istruzioni NEON, ovvero le estensioni SIMD disponibili su ARM per elaborare più dati in parallelo. L’ottimizzazione ha riguardato in particolare le operazioni fondamentali di somma e differenza che compongono i cosiddetti “butterfly” dell’algoritmo. Attraverso una serie di test e benchmark su vettori di diverse dimensioni è stato possibile confrontare le prestazioni delle due versioni, evidenziando un miglioramento netto della velocità grazie all’uso di NEON. Il lavoro dimostra quindi come sia possibile ottenere benefici concreti dall’uso delle istruzioni SIMD su ARM e fornisce una base per eventuali estensioni verso algoritmi simili o applicazioni pratiche.

Implementazione e ottimizzazione della Walsh-Hadamard Transform su architettura ARM con istruzioni NEON

ROSSETTO, LUCA
2024/2025

Abstract

The Walsh-Hadamard Transform (WHT) is a mathematical algorithm with applications in areas such as signal processing and data compression. In recent years, ARM processors have become increasingly widespread, especially in mobile devices and Apple Silicon computers. This thesis focuses on the implementation and optimization of the WHT on this architecture. The project started from a basic iterative version written in C++, which served as a reference for developing an optimized variant using NEON instructions, the SIMD extensions available on ARM to process multiple data elements in parallel. The optimization mainly targeted the sum and difference operations that form the so-called “butterfly” structure of the algorithm. Through a series of tests and benchmarks on vectors of different sizes, it was possible to compare the performance of the two versions, highlighting a clear speed improvement thanks to the use of NEON. This work shows how SIMD instructions on ARM can provide concrete performance benefits and offers a foundation for possible extensions to similar algorithms or practical applications.
2024
Implementation and Optimization of the Walsh-Hadamard Transform on ARM Architecture with NEON Instructions
La Walsh-Hadamard Transform (WHT) è un algoritmo matematico che trova applicazione in diversi campi, come l’elaborazione dei segnali e la compressione dei dati. Negli ultimi anni i processori ARM sono diventati sempre più diffusi, in particolare nei dispositivi mobili e nei computer basati su Apple Silicon. Questo lavoro si concentra sull’implementazione e l’ottimizzazione della WHT proprio su questa architettura. Il progetto è partito da una versione iterativa di base scritta in C++, che è stata poi presa come riferimento per sviluppare una variante ottimizzata con le istruzioni NEON, ovvero le estensioni SIMD disponibili su ARM per elaborare più dati in parallelo. L’ottimizzazione ha riguardato in particolare le operazioni fondamentali di somma e differenza che compongono i cosiddetti “butterfly” dell’algoritmo. Attraverso una serie di test e benchmark su vettori di diverse dimensioni è stato possibile confrontare le prestazioni delle due versioni, evidenziando un miglioramento netto della velocità grazie all’uso di NEON. Il lavoro dimostra quindi come sia possibile ottenere benefici concreti dall’uso delle istruzioni SIMD su ARM e fornisce una base per eventuali estensioni verso algoritmi simili o applicazioni pratiche.
WHT
ARM
NEON
File in questo prodotto:
File Dimensione Formato  
Rossetto_Luca.pdf

accesso aperto

Dimensione 567.99 kB
Formato Adobe PDF
567.99 kB Adobe PDF Visualizza/Apri

The text of this website © Università degli studi di Padova. Full Text are published under a non-exclusive license. Metadata are under a CC0 License

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.12608/97851