  Graphics Processing Units (GPUs) are widely used by various applications in a
broad variety of fields to accelerate their computation but remain susceptible
to transient hardware faults (soft errors) that can easily compromise
application output. By taking advantage of a general purpose GPU application
hierarchical organization in threads, warps, and cooperative thread arrays, we
propose a methodology that identifies the resilience of threads and aims to map
threads with the same resilience characteristics to the same warp. This allows
engaging partial replication mechanisms for error detection/correction at the
warp level. By exploring 12 benchmarks (17 kernels) from 4 benchmark suites, we
illustrate that threads can be remapped into reliable or unreliable warps with
only 1.63% introduced overhead (on average), and then enable selective
protection via replication to those groups of threads that truly need it.
Furthermore, we show that thread remapping to different warps does not
sacrifice application performance. We show how this remapping facilitates warp
replication for error detection and/or correction and achieves an average
reduction of 20.61% and 27.15% execution cycles, respectively comparing to
standard duplication/triplication.
