@inproceedings{0743d4d1a1514e66aac02aea92579675,
title = "In-place data sliding algorithms for many-core architectures",
abstract = "In-place data manipulation is very desirable in many-core architectures with limited on-board memory. This paper deals with the in-place implementation of a class of primitives that perform data movements in one direction. We call these primitives Data Sliding (DS) algorithms. Notable among them are relational algebra primitives (such as select and unique), padding to insert empty elements in a data structure, and stream compaction to reduce memory requirements. Their in-place implementation in a bulk synchronous parallel model, such as GPUs, is specially challenging due to the difficulties in synchronizing threads executing on different compute units. Using a novel adjacent work-group synchronization technique, we propose two algorithmic schemes for regular and irregular DS algorithms. With a set of 5 benchmarks, we validate our approaches and compare them to the state-of-the-art implementations of these benchmarks. Our regular DS algorithms demonstrate up to 9.11x and 73.25x on NVIDIA and AMD GPUs, respectively, the throughput of their competitors. Our irregular DS algorithms outperform NVIDIA Thrust library by up to 3.24x on the three most recent generations of NVIDIA GPUs.",
keywords = "In-place, Relational algebra, Stream compaction",
author = "Luna, {Juan G{\'o}mez} and Chang, {Li Wen} and Sung, {I. Jui} and Hwu, {Wen Mei} and Nicol{\'a}s Guil",
note = "Publisher Copyright: {\textcopyright} 2015 IEEE.; 44th International Conference on Parallel Processing, ICPP 2015 ; Conference date: 01-09-2015 Through 04-09-2015",
year = "2015",
month = dec,
day = "8",
doi = "10.1109/ICPP.2015.30",
language = "English (US)",
series = "Proceedings of the International Conference on Parallel Processing",
publisher = "Institute of Electrical and Electronics Engineers Inc.",
pages = "210--219",
booktitle = "Proceedings - 2015 44th International Annual Conference on Parallel Processing, ICPP 2015",
address = "United States",
}