Expressing Heterogeneous Parallelism in C++ with Threading Building Blocks