Abstract
The pursuit of computational efficiency has led to the proliferation of throughput-oriented hardware, from GPUs to increasingly wide vector units on commodity processors and accelerators. This hardware is designed to efficiently execute data-parallel computations in a vectorized manner. However, many algorithms are more naturally expressed as divide-and-conquer, recursive, task-parallel computations. In the absence of data parallelism, it seems that such algorithms are not well suited to throughput-oriented architectures. This paper presents a set of novel code transformations that expose the data parallelism latent in recursive, task-parallel programs. These transformations facilitate straightforward vectorization of task-parallel programs on commodity hardware. We also present scheduling policies that maintain high utilization of vector resources while limiting space usage. Across several task-parallel benchmarks, we demonstrate both efficient vector resource utilization and substantial speedup on chips using Intel's SSE4.2 vector units, as well as accelerators using Intel's AVX512 units.
| Original language | English |
|---|---|
| Pages (from-to) | 509-520 |
| Number of pages | 12 |
| Journal | ACM SIGPLAN Notices |
| Volume | 50 |
| Issue number | 6 |
| DOIs | |
| State | Published - Jun 2015 |
Keywords
- Recursive Programs
- Task Parallelism
- Vectorization
Fingerprint
Dive into the research topics of 'Efficient execution of recursive programs on commodity vector hardware'. Together they form a unique fingerprint.Cite this
- APA
- Author
- BIBTEX
- Harvard
- Standard
- RIS
- Vancouver