Function Call Re-Vectorization - Archive ouverte HAL Access content directly
Conference Papers Year : 2017

Function Call Re-Vectorization

Function Call Re-Vectorization


Programming languages such as C for CUDA, OpenCL or ISPC have contributed to increase the programmability of SIMD accelerators and graphics processing units. However , these languages still lack the flexibility offered by low-level SIMD programming on explicit vectors. To close this expressiveness gap while preserving performance, this paper introduces the notion of Call Re-Vectorization (CREV). CREV allows changing the dimension of vectorization during the execution of a kernel, exposing it as a nested parallel kernel call. CREV affords programmability close to dynamic parallelism, a feature that allows the invocation of kernels from inside kernels, but at much lower cost. In this paper, we present a formal semantics of CREV, and an implementation of it on the ISPC compiler. We have used CREV to implement some classic algorithms, including string matching, depth first search and Bellman-Ford, with minimum effort. These algorithms, once compiled by ISPC to Intel-based vector instructions, are as fast as state-of-the-art implementations , yet much simpler. Thus, CREV gives developers the elegance of dynamic programming, and the performance of explicit SIMD programming.
Fichier principal
Vignette du fichier
Moreira_CallRevectorization_PPoPP17 (1).pdf (689.98 Ko) Télécharger le fichier
Origin : Files produced by the author(s)

Dates and versions

hal-01410186 , version 1 (08-12-2016)



Rubens E A Moreira, Caroline Collange, Fernando Magno Quintão Pereira. Function Call Re-Vectorization. ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), Feb 2017, Austin, Texas, United States. ⟨10.1145/3018743.3018751⟩. ⟨hal-01410186⟩
469 View
360 Download



Gmail Facebook X LinkedIn More