make_hierarchy#

template<class _LUnit = void, class _L1, class ..._LevelDescs>
constexpr auto cuda::make_hierarchy(
_L1 __l1,
_LevelDescs... __ls
) noexcept#

Creates a hierarchy from passed in levels.

This function takes any number of hierarchy_level_desc or derived objects and creates a hierarchy out of them. Levels need to be in ascending or descending order and the lowest level needs to be valid for thread_level unit.

Snippet
#include <cudax/hierarchy_dimensions.cuh>

using namespace cuda;

auto hierarchy1 = make_hierarchy(grid_dims(256), cluster_dims<4>(),
block_dims<8, 8, 8>()); auto hierarchy2 = make_hierarchy(block_dims<8, 8,
8>(), cluster_dims<4>(), grid_dims(256));
static_assert(cuda::std::is_same_v<decltype(hierarchy1),
decltype(hierarchy2)>);