Design Patterns for Handling/Reporting Errors in C++ - Parallel Algorithms & Executors
summary
C++17 parallel algorithms and forthcoming P0443 executors cannot safely propagate exceptions across parallel boundaries, so the talk shows concrete patterns borrowed from MPI: turn exceptions into values, replace failing for_each with transform_reduce that aggregates status bits and total memory needed (example: domain decomposition using a fixed-size memory pool and a result struct that sums bytes required), explicitly avoid deadlocks by always participating in synchronizations, and use atomic updates or nonblocking checks for out‑of‑band error reporting.
AI-written summary · about
chapters (15)
- 0:00Introduction
- 1:38Outline
- 4:03Parallel Algorithms
- 5:34Exceptions
- 7:36Domain Decomposition
- 8:51Parallelizing Domain Decomposition
- 10:11Errors in Domain Decomposition
- 12:32mpi
- 14:05mpi is hostile
- 17:53Reduce over error information
- 19:09deadlock
- 22:33nonblocking barrier
- 25:11atomic updates
- 25:57Summary
- 26:36Questions
related talks
57m“The C++17 Parallel Algorithms Library and Beyond"
43mParallel Algorithms: Work Smarter, Not Harder
56mParallelizing the C++ Standard Template Library
59mAn Introduction to Multithreading in C++20
44mA Practical Approach to Error Handling
01h 00mC++ Standard Parallelism
57m“The Unexceptional Exceptions"
01h 02mInside Visual C++' Parallel Algorithms
