Code Rejuvenation: From Vector Compiler Intrinsics to Portable Standardized SIMD

Legacy code is hard to refactor, and often times, the effort needed to rejuvenate old code is substantial. In particular, compiler intrinsics are often used for clearly and unambiguously expressing low-level vectorization. It is not uncommon for C++ codebases to make use of compiler intrinsics, espe...

Celý popis

Uložené v:
Podrobná bibliografia
Vydané v:International journal of parallel programming Ročník 53; číslo 3; s. 20
Hlavní autori: Martínez-Davies, Daniel, Veigas-Ramírez, Santiago, Gallego-Torres, Lucía, Garcia, J. Daniel
Médium: Journal Article
Jazyk:English
Vydavateľské údaje: New York Springer US 01.06.2025
Springer Nature B.V
Predmet:
ISSN:0885-7458, 1573-7640
On-line prístup:Získať plný text
Tagy: Pridať tag
Žiadne tagy, Buďte prvý, kto otaguje tento záznam!
Popis
Shrnutí:Legacy code is hard to refactor, and often times, the effort needed to rejuvenate old code is substantial. In particular, compiler intrinsics are often used for clearly and unambiguously expressing low-level vectorization. It is not uncommon for C++ codebases to make use of compiler intrinsics, especially if high performance is critical. Nevertheless, they can be verbose and hard to debug. The C++ standard library introduces std::simd, which is emerging as a high level abstraction for expressing vectorization, allowing for more readable and portable code. Additionally, many of the transformations from compiler intrinsics to std::simd expressions are straightforward and mechanical. However, refactoring code from compiler intrinsics to std::simd can be time-consuming and bug-prone, especially when unfamiliar with the new syntax. With the help of static analysis techniques, it is possible to automatize the process, and ensure code correctness when applying the transformation. In this paper, we introduce a set of techniques to assist developers in the process of migrating existing code bases to a standardized approach for expressing vectorization that is portable to multiple architectures.
Bibliografia:ObjectType-Article-1
SourceType-Scholarly Journals-1
ObjectType-Feature-2
content type line 14
ISSN:0885-7458
1573-7640
DOI:10.1007/s10766-025-00797-0