Abstract | ||
---|---|---|
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 \\ourinvention{} (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. |
Year | DOI | Venue |
---|---|---|
2017 | 10.1145/3018743.3018751 | PPOPP |
Keywords | DocType | Volume |
SIMD,SIMT,Function,Programmability | Conference | 52 |
Issue | ISSN | Citations |
8 | 0362-1340 | 0 |
PageRank | References | Authors |
0.34 | 10 | 3 |
Name | Order | Citations | PageRank |
---|---|---|---|
Rubens E. A. Moreira | 1 | 0 | 0.34 |
Sylvain Collange | 2 | 14 | 2.58 |
Fernando Magno Quintão Pereira | 3 | 216 | 20.03 |