# GridTools C++ FN Backend Development Notes ###### tags: `Felix’s remains` ## Backend Backend API ```C++ void apply_stencil_stage(auto backend, auto const& sizes, auto stencil_stage, auto &&composite); void apply_column_stage(auto backend, auto const& sizes, auto column_stage, auto &&composite, auto seed); auto tmp_allocator(auto backend); auto allocate_global_tmp(auto allocator, auto const& sizes); ``` `sizes` models the hymap concept, mapping dimension tags to values. Further, `stencil_stage` and `column_stage` follow the definitions at [#1671](https://github.com/GridTools/gridtools/issues/1671) respectively [#1673](https://github.com/GridTools/gridtools/issues/1673). `allocate_global_tmp` has to return an object that models SID. ### Future Considerations - Temporary allocation should probably be aware of the vertical axis and optimize the data layout according to that knowledge. To enable this, an additional compile time argument to `allocate_global_tmp` is necessary. - Currently, there are no restrictions on the sizes that may be passed to `allocate_global_tmp`, thus stride compaction has to be disabled (the returned SID should have a stride kind of `sid::unknown_kind`). If this leads to performance issues in the future, which we consider unlikely, the API or semantics require an update.