C++Now 2021 has ended
Back To Schedule
Tuesday, May 4 • 9:50am - 10:35am
Executors: The Art of Generating Composable APIs

Log in to save this to your schedule, view media, leave feedback and see who's attending!

With the ever-increasing count on the number of processors in the High-Performance Computing market, we inevitably hit the mark where the probability of Silent Data Corruptions (SDC), i.e., errors arising from unexpected aberrations in data or compute, are high. With higher possibilities, a cope-up mechanism, i.e., software resilience, is required to mitigate the situation. Software resilience for task-based runtimes can be achieved through either replay or replication of a task, i.e., to essentially try executing the task until you get the desired output. This talk takes the audience through the design decisions, implementation details, and key takeaways that led to implementing the resiliency module within HPX, the C++ Standard Library for Concurrency and Parallelism. HPX is a standard-conforming library that implements standard C++ algorithms and adds on various other features that are yet to exist in the standards, for instance, executors and parallel range-based algorithms.

This talk first introduces the user to local and distributed software resilience and new standards conforming APIs that integrate with existing HPX APIs. It then extends to using proposed C++ executors that takes a base executor and generates a resilient executor. The resilient executor can be supplied to hpx::async to observe resilient async execution. Furthermore, it shows how different resiliency module components can be composed together to produce the desired effect. The speaker then introduces customization point objects (CPOs) and their use to dispatch to the correct API overload. It is useful due to the recent integration with Kokkos executors where kernels run on a GPU, allowing us to specialize an implementation for Kokkos executors while relying on CPOs to identify the correct implementation.

The talk ends with some results that describe the overheads of such abstractions (spoiler alert: they are negligible). People interested in designing composable modules to build more powerful constructs are encouraged to attend the talk. HPX executor architecture, built upon the executor proposal - p0443r4, is also discussed in detail.

avatar for Nikunj Gupta

Nikunj Gupta

HPX Open-Source Contributor, STE||AR Group
Nikunj is the author of resiliency modules and the adapted hpx_main framework in HPX - a C++ Standards library for Parallelization and Concurrency. He's currently working on extending the resiliency modules and designing executors within HPX.

Tuesday May 4, 2021 9:50am - 10:35am MDT