cuda::experimental::hierarchy::rank

Defined in include/cuda/experimental/__hierarchy/hierarchy_levels.cuh

template<typename Unit, typename Level>
auto cuda::experimental::hierarchy::rank(const Unit&, const Level&)

Ranks an entity the calling thread belongs to in a CUDA hierarchy level.

Returns a unique numeric rank within Level of the Unit that the calling thread belongs to. Returned rank is always in range 0 to count - 1. Unit and Level need to be core CUDA hierarchy levels, for example grid_level or block_level. This function is also available as a level type member function, in that case it only takes a unit argument.

Snippet

#include <cudax/hierarchy_dimensions.cuh>

using namespace cuda::experimental;

__global__ void kernel()
{
    // Can be called with the instances of level types
    int thread_rank_in_block = hierarchy::rank(thread, block);
    int block_rank_in_grid = grid.rank(block);

    // Or using the level types as template arguments
    int thread_rank_in_grid = hierarchy::rank<thread_level, grid_level>();
}

Template Parameters
  • Unit – Specifies the entity that the rank is requested for

  • Level – Specifies at what CUDA hierarchy level the rank is requested