A Non-linear GPU Thread Map for Triangular Domains
Instituto de Informatica, Universidad Austral de Chile
arXiv:1609.01490 [cs.DC], (6 Sep 2016)
@article{navarro2016nonlinear,
title={A Non-linear GPU Thread Map for Triangular Domains},
author={Navarro, Cristobal A. and Bustos, Benjamin and Hitschfeld, Nancy},
year={2016},
month={sep},
archivePrefix={"arXiv"},
primaryClass={cs.DC}
}
There is a stage in the GPU computing pipeline where a grid of thread-blocks, in parallel space, is mapped onto the problem domain, in data space. Since the parallel space is restricted to a box type geometry, the mapping approach is typically a k-dimensional bounding box (BB) that covers a p-dimensional data space. Threads that fall inside the domain perform computations while threads that fall outside are discarded at runtime. In this work we study the case of mapping threads efficiently onto triangular domain problems and propose a block-space linear map $lambda(omega)$, based on the properties of the lower triangular matrix, that reduces the number of unnnecessary threads from $mathcal{O}(n^2)$ to $mathcal{O}(n)$. Performance results for global memory accesses show an improvement of up to 18% with respect to the bounding-box approach, placing $lambda(omega)$ on second place below the rectangular-box approach and above the recursive-partition and upper-triangular approaches. For shared memory scenarios $lambda(omega)$ was the fastest approach achieving 7% of performance improvement while preserving thread locality. The results obtained in this work make $lambda(omega)$ an interesting map for efficient GPU computing on parallel problems that define a triangular domain with or without neighborhood interactions. The extension to tetrahedral domains is analyzed, with applications to triplet-interaction n-body applications.
September 8, 2016 by hgpu