  Exceptions and errors occurring within mission critical applications due to
hardware failures have a high cost. With the emerging Next Generation Platforms
(NGPs), the rate of hardware failures will likely increase. Therefore,
designing our applications to be resilient is a critical concern in order to
retain the reliability of results while meeting the constraints on power
budgets. In this paper, we discuss software resilience in AMTs at both local
and distributed scale. We choose HPX to prototype our resiliency designs. We
implement two resiliency APIs that we expose to the application developers,
namely task replication and task replay. Task replication repeats a task
n-times and executes them asynchronously. Task replay reschedules a task up to
n-times until a valid output is returned. Furthermore, we expose algorithm
based fault tolerance (ABFT) using user provided predicates (e.g., checksums)
to validate the returned results. We benchmark the resiliency scheme for both
synthetic and real world applications at local and distributed scale and show
that most of the added execution time arises from the replay, replication or
data movement of the tasks and not the boilerplate code added to achieve
resilience.
