cuda::experimental::make_hierarchy#

template<typename LUnit = void, typename L1, typename ...Levels>
constexpr auto cuda::experimental::make_hierarchy(
L1 l1,
Levels... ls,
) noexcept#

Creates a hierarchy from passed in levels.

This function takes any number of level_dimensions 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::experimental;

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)>);