Iterating Pointers: Enabling Static Analysis for Loop-based Pointers

Fuente: arXiv
Salvato in:
Dettagli Bibliografici
Autori principali: Lepori, Andrea, Calotoiu, Alexandru, Hoefler, Torsten
Natura: Preprint
Pubblicazione: 2025
Soggetti:
Accesso online:
Tags: Aggiungi Tag
Nessun Tag, puoi essere il primo ad aggiungerne!!
_version_ 1866910859591155712
author Lepori, Andrea
Calotoiu, Alexandru
Hoefler, Torsten
author_facet Lepori, Andrea
Calotoiu, Alexandru
Hoefler, Torsten
contents Pointers are an integral part of C and other programming languages. They enable substantial flexibility from the programmer's standpoint, allowing the user fine, unmediated control over data access patterns. However, accesses done through pointers are often hard to track, and challenging to understand for optimizers, compilers, and sometimes, even for the developers themselves because of the direct memory access they provide. We alleviate this problem by exposing additional information to analyzers and compilers. By separating the concept of a pointer into a data container and an offset, we can optimize C programs beyond what other state-of-the-art approaches are capable of, in some cases even enabling auto-parallelization. Using this process, we are able to successfully analyze and optimize code from OpenSSL, the Mantevo benchmark suite, and the Lempel-Ziv-Oberhumer compression algorithm. We provide the only automatic approach able to find all parallelization opportunities in the HPCCG benchmark from the Mantevo suite the developers identified and even outperform the reference implementation by up to 18%, as well as speed up the PBKDF2 algorithm implementation from OpenSSL by up to 11x.
format Preprint
id arxiv_https___arxiv_org_abs_2503_03359
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Iterating Pointers: Enabling Static Analysis for Loop-based Pointers
Lepori, Andrea
Calotoiu, Alexandru
Hoefler, Torsten
Programming Languages
Distributed, Parallel, and Cluster Computing
Performance
Pointers are an integral part of C and other programming languages. They enable substantial flexibility from the programmer's standpoint, allowing the user fine, unmediated control over data access patterns. However, accesses done through pointers are often hard to track, and challenging to understand for optimizers, compilers, and sometimes, even for the developers themselves because of the direct memory access they provide. We alleviate this problem by exposing additional information to analyzers and compilers. By separating the concept of a pointer into a data container and an offset, we can optimize C programs beyond what other state-of-the-art approaches are capable of, in some cases even enabling auto-parallelization. Using this process, we are able to successfully analyze and optimize code from OpenSSL, the Mantevo benchmark suite, and the Lempel-Ziv-Oberhumer compression algorithm. We provide the only automatic approach able to find all parallelization opportunities in the HPCCG benchmark from the Mantevo suite the developers identified and even outperform the reference implementation by up to 18%, as well as speed up the PBKDF2 algorithm implementation from OpenSSL by up to 11x.
title Iterating Pointers: Enabling Static Analysis for Loop-based Pointers
topic Programming Languages
Distributed, Parallel, and Cluster Computing
Performance
url https://arxiv.org/abs/2503.03359