CesASMe and Staticdeps: static detection of memory-carried dependencies for code analyzers

Fuente: arXiv
Guardado en:
Detalles Bibliográficos
Autores principales: Bastian, Théophile, Pompougnac, Hugo, Dutilleul, Alban, Rastello, Fabrice
Formato: Preprint
Publicado: 2024
Materias:
Acceso en línea:
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!
_version_ 1866913240148082688
author Bastian, Théophile
Pompougnac, Hugo
Dutilleul, Alban
Rastello, Fabrice
author_facet Bastian, Théophile
Pompougnac, Hugo
Dutilleul, Alban
Rastello, Fabrice
contents A variety of code analyzers, such as IACA, uiCA, llvm-mca or Ithemal, strive to statically predict the throughput of a computation kernel. Each analyzer is based on its own simplified CPU model reasoning at the scale of a basic block. Facing this diversity, evaluating their strengths and weaknesses is important to guide both their usage and their enhancement. We present CesASMe, a fully-tooled solution to evaluate code analyzers on C-level benchmarks composed of a benchmark derivation procedure that feeds an evaluation harness. We conclude that memory-carried data dependencies are a major source of imprecision for these tools. We tackle this issue with staticdeps, a static analyzer extracting memory-carried data dependencies, including across loop iterations, from an assembly basic block. We integrate its output to uiCA, a state-of-the-art code analyzer, to evaluate staticdeps' impact on a code analyzer's precision through CesASMe.
format Preprint
id arxiv_https___arxiv_org_abs_2402_14567
institution arXiv
publishDate 2024
record_format arxiv
spellingShingle CesASMe and Staticdeps: static detection of memory-carried dependencies for code analyzers
Bastian, Théophile
Pompougnac, Hugo
Dutilleul, Alban
Rastello, Fabrice
Performance
A variety of code analyzers, such as IACA, uiCA, llvm-mca or Ithemal, strive to statically predict the throughput of a computation kernel. Each analyzer is based on its own simplified CPU model reasoning at the scale of a basic block. Facing this diversity, evaluating their strengths and weaknesses is important to guide both their usage and their enhancement. We present CesASMe, a fully-tooled solution to evaluate code analyzers on C-level benchmarks composed of a benchmark derivation procedure that feeds an evaluation harness. We conclude that memory-carried data dependencies are a major source of imprecision for these tools. We tackle this issue with staticdeps, a static analyzer extracting memory-carried data dependencies, including across loop iterations, from an assembly basic block. We integrate its output to uiCA, a state-of-the-art code analyzer, to evaluate staticdeps' impact on a code analyzer's precision through CesASMe.
title CesASMe and Staticdeps: static detection of memory-carried dependencies for code analyzers
topic Performance
url https://arxiv.org/abs/2402.14567