Mojo struct
RegisterAccumulatorLayout
struct RegisterAccumulatorLayout[MMA_M: Int, MMA_N: Int, num_m_mmas: Int, num_n_mmas: Int, consumer_group_size: Int, *, frag_simdwidth: Int = 2]
Implemented traitsβ
AnyType,
Copyable,
ImplicitlyCopyable,
ImplicitlyDestructible,
Movable,
RegisterPassable,
TrivialRegisterPassable
comptime membersβ
element_layoutβ
comptime element_layout = Layout.row_major(1, frag_simdwidth)
frag_sizeβ
comptime frag_size = ((MMA_M * MMA_N) // consumer_group_size)
num_row_blocks_per_mmaβ
comptime num_row_blocks_per_mma = 2
rows_of_frags_layoutβ
comptime rows_of_frags_layout = Layout.row_major((num_m_mmas * num_n_mmas), RegisterAccumulatorLayout[MMA_M, MMA_N, num_m_mmas, num_n_mmas, consumer_group_size, frag_simdwidth=frag_simdwidth].frag_size)
vec_output_layoutβ
comptime vec_output_layout = Layout(IntTuple(IntTuple(2, num_m_mmas), IntTuple((RegisterAccumulatorLayout[MMA_M, MMA_N, num_m_mmas, num_n_mmas, consumer_group_size, frag_simdwidth=frag_simdwidth].frag_size // (2 * frag_simdwidth)), num_n_mmas), __list_literal__=NoneType(None)), IntTuple(IntTuple(frag_simdwidth, RegisterAccumulatorLayout[MMA_M, MMA_N, num_m_mmas, num_n_mmas, consumer_group_size, frag_simdwidth=frag_simdwidth].frag_size), IntTuple((2 * frag_simdwidth), (num_m_mmas * RegisterAccumulatorLayout[MMA_M, MMA_N, num_m_mmas, num_n_mmas, consumer_group_size, frag_simdwidth=frag_simdwidth].frag_size)), __list_literal__=NoneType(None)))
Methodsβ
descriptionβ
static description() -> RegisterAccumulatorDescription
Returns:
RegisterAccumulatorDescription
Was this page helpful?
Thank you! We'll create more content like this.
Thank you for helping us improve!