CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
579 lines
18 KiB
YAML
579 lines
18 KiB
YAML
operation:
|
|
name: "SdpaFwd"
|
|
class_name: "SdpaFwdOperationDescriptor"
|
|
fbs_table: "SdpaAttributes"
|
|
fbs_generated_header: "sdpa_attributes_generated.h"
|
|
|
|
descriptor_type:
|
|
enum_name: "HIPDNN_BACKEND_OPERATION_SDPA_FWD_DESCRIPTOR"
|
|
|
|
operation_attr_prefix: "HIPDNN_ATTR_OPERATION_SDPA_FWD"
|
|
|
|
operation_type_enum: "HIPDNN_OPERATION_TYPE_SDPA_FORWARD_EXT"
|
|
|
|
error_label: "sdpa"
|
|
packer_operation_label: "SDPA forward"
|
|
packer_finalize_label: "SDPA"
|
|
test_params_method_name: "setSdpaFwdParams"
|
|
data_fields_section_label: "SDPA Parameters"
|
|
build_node_attrs_var: "sdpaAttrs"
|
|
|
|
frontend:
|
|
packer_function: "createSdpaFwdOperation"
|
|
unpacker_function: "unpackSdpaFwdOperation"
|
|
node_class: "SdpaFwdNode"
|
|
attributes_class: "SdpaAttributes"
|
|
# In-tree header is SdpaAttributes.hpp (matches attributes_class). Without
|
|
# this override, effective_attributes_include derives from node_class
|
|
# (SdpaFwdNode -> SdpaFwdAttributes), producing a non-existent include in
|
|
# the generated packer/unpacker.
|
|
attributes_include: "SdpaAttributes"
|
|
|
|
inputs:
|
|
- name: "q"
|
|
enum_name: "Q"
|
|
enum_value: 0
|
|
required: true
|
|
getter_name: "get_q"
|
|
setter_name: "set_q"
|
|
- name: "k"
|
|
enum_name: "K"
|
|
enum_value: 1
|
|
required: true
|
|
getter_name: "get_k"
|
|
setter_name: "set_k"
|
|
- name: "v"
|
|
enum_name: "V"
|
|
enum_value: 2
|
|
required: true
|
|
getter_name: "get_v"
|
|
setter_name: "set_v"
|
|
- name: "attn_scale"
|
|
enum_name: "Attn_scale"
|
|
enum_value: 3
|
|
required: false
|
|
getter_name: "get_attn_scale"
|
|
setter_name: "set_attn_scale"
|
|
- name: "bias"
|
|
enum_name: "Bias"
|
|
enum_value: 4
|
|
required: false
|
|
getter_name: "get_bias"
|
|
setter_name: "set_bias"
|
|
- name: "seq_len_q"
|
|
enum_name: "SEQ_LEN_Q"
|
|
enum_value: 5
|
|
required: false
|
|
getter_name: "get_seq_len_q"
|
|
setter_name: "set_seq_len_q"
|
|
- name: "seq_len_kv"
|
|
enum_name: "SEQ_LEN_KV"
|
|
enum_value: 6
|
|
required: false
|
|
getter_name: "get_seq_len_kv"
|
|
setter_name: "set_seq_len_kv"
|
|
- name: "seed"
|
|
enum_name: "Seed"
|
|
enum_value: 7
|
|
required: false
|
|
getter_name: "get_seed"
|
|
setter_name: "set_seed"
|
|
- name: "offset"
|
|
enum_name: "Offset"
|
|
enum_value: 8
|
|
required: false
|
|
getter_name: "get_offset"
|
|
setter_name: "set_offset"
|
|
- name: "dropout_mask"
|
|
enum_name: "Dropout_mask"
|
|
enum_value: 9
|
|
required: false
|
|
getter_name: "get_dropout_mask"
|
|
setter_name: "set_dropout_mask"
|
|
- name: "dropout_scale"
|
|
enum_name: "Dropout_scale"
|
|
enum_value: 10
|
|
required: false
|
|
getter_name: "get_dropout_scale"
|
|
setter_name: "set_dropout_scale"
|
|
- name: "page_table_k"
|
|
enum_name: "Page_table_K"
|
|
enum_value: 11
|
|
required: false
|
|
getter_name: "get_page_table_k"
|
|
setter_name: "set_page_table_k"
|
|
- name: "page_table_v"
|
|
enum_name: "Page_table_V"
|
|
enum_value: 12
|
|
required: false
|
|
getter_name: "get_page_table_v"
|
|
setter_name: "set_page_table_v"
|
|
- name: "block_mask"
|
|
enum_name: "Block_mask"
|
|
enum_value: 13
|
|
required: false
|
|
getter_name: "get_block_mask"
|
|
setter_name: "set_block_mask"
|
|
- name: "descale_q"
|
|
enum_name: "Descale_Q"
|
|
enum_value: 14
|
|
required: false
|
|
getter_name: "get_descale_q"
|
|
setter_name: "set_descale_q"
|
|
- name: "descale_k"
|
|
enum_name: "Descale_K"
|
|
enum_value: 15
|
|
required: false
|
|
getter_name: "get_descale_k"
|
|
setter_name: "set_descale_k"
|
|
- name: "descale_v"
|
|
enum_name: "Descale_V"
|
|
enum_value: 16
|
|
required: false
|
|
getter_name: "get_descale_v"
|
|
setter_name: "set_descale_v"
|
|
- name: "descale_s"
|
|
enum_name: "Descale_S"
|
|
enum_value: 17
|
|
required: false
|
|
getter_name: "get_descale_s"
|
|
setter_name: "set_descale_s"
|
|
- name: "scale_s"
|
|
enum_name: "Scale_S"
|
|
enum_value: 18
|
|
required: false
|
|
getter_name: "get_scale_s"
|
|
setter_name: "set_scale_s"
|
|
- name: "scale_o"
|
|
enum_name: "Scale_O"
|
|
enum_value: 19
|
|
required: false
|
|
getter_name: "get_scale_o"
|
|
setter_name: "set_scale_o"
|
|
- name: "sink_token"
|
|
enum_name: "SINK_TOKEN"
|
|
enum_value: 20
|
|
required: false
|
|
getter_name: "get_sink_token"
|
|
setter_name: "set_sink_token"
|
|
outputs:
|
|
- name: "o"
|
|
enum_name: "O"
|
|
enum_value: 0
|
|
required: true
|
|
getter_name: "get_o"
|
|
setter_name: "set_o"
|
|
- name: "stats"
|
|
enum_name: "Stats"
|
|
enum_value: 1
|
|
required: false
|
|
getter_name: "get_stats"
|
|
setter_name: "set_stats"
|
|
graph_method_name: "sdpa"
|
|
graph_method_params:
|
|
- name: "q"
|
|
tensor_name: "q"
|
|
- name: "k"
|
|
tensor_name: "k"
|
|
- name: "v"
|
|
tensor_name: "v"
|
|
graph_return_type: "array"
|
|
graph_return_outputs:
|
|
- "o"
|
|
node_type_enum: "NodeType::SDPA_FWD"
|
|
node_attributes_union_type: "SdpaAttributes"
|
|
|
|
# Required tensor fields (Q, K, V, O)
|
|
tensor_fields:
|
|
- name: "q"
|
|
fbs_field: "q_tensor_uid"
|
|
attr_suffix: "QDESC"
|
|
required: true
|
|
frontend_getter: "get_q()"
|
|
|
|
- name: "k"
|
|
fbs_field: "k_tensor_uid"
|
|
attr_suffix: "KDESC"
|
|
required: true
|
|
frontend_getter: "get_k()"
|
|
|
|
- name: "v"
|
|
fbs_field: "v_tensor_uid"
|
|
attr_suffix: "VDESC"
|
|
required: true
|
|
frontend_getter: "get_v()"
|
|
|
|
- name: "o"
|
|
fbs_field: "o_tensor_uid"
|
|
attr_suffix: "ODESC"
|
|
required: true
|
|
frontend_getter: "get_o()"
|
|
|
|
# Optional input tensors
|
|
- name: "attn_mask"
|
|
fbs_field: "attn_mask_tensor_uid"
|
|
attr_suffix: "ATTN_MASK_EXT"
|
|
required: false
|
|
# SdpaAttributes exposes attn_mask via the bias accessor — divergent
|
|
# name is intentional, see commit 2e3a84104b4 / hand-written class.
|
|
frontend_getter: "get_bias()"
|
|
|
|
- name: "scale"
|
|
fbs_field: "scale_tensor_uid"
|
|
attr_suffix: "SCALEDESC"
|
|
required: false
|
|
frontend_getter: "get_attn_scale()"
|
|
|
|
- name: "seq_len_q"
|
|
fbs_field: "seq_len_q_tensor_uid"
|
|
attr_suffix: "SEQ_LEN_QDESC"
|
|
required: false
|
|
frontend_getter: "get_seq_len_q()"
|
|
|
|
- name: "seq_len_kv"
|
|
fbs_field: "seq_len_kv_tensor_uid"
|
|
attr_suffix: "SEQ_LEN_KVDESC"
|
|
required: false
|
|
frontend_getter: "get_seq_len_kv()"
|
|
|
|
- name: "seed"
|
|
fbs_field: "seed_tensor_uid"
|
|
attr_suffix: "SEED_EXT"
|
|
required: false
|
|
frontend_getter: "get_seed()"
|
|
|
|
- name: "offset"
|
|
fbs_field: "offset_tensor_uid"
|
|
attr_suffix: "OFFSET_EXT"
|
|
required: false
|
|
frontend_getter: "get_offset()"
|
|
|
|
- name: "dropout_mask"
|
|
fbs_field: "dropout_mask_tensor_uid"
|
|
attr_suffix: "DROPOUT_MASK_EXT"
|
|
required: false
|
|
frontend_getter: "get_dropout_mask()"
|
|
|
|
- name: "dropout_scale"
|
|
fbs_field: "dropout_scale_tensor_uid"
|
|
attr_suffix: "DROPOUT_SCALE_EXT"
|
|
required: false
|
|
frontend_getter: "get_dropout_scale()"
|
|
|
|
- name: "page_table_k"
|
|
fbs_field: "page_table_k_tensor_uid"
|
|
attr_suffix: "PAGE_TABLE_KDESC"
|
|
required: false
|
|
frontend_getter: "get_page_table_k()"
|
|
|
|
- name: "page_table_v"
|
|
fbs_field: "page_table_v_tensor_uid"
|
|
attr_suffix: "PAGE_TABLE_VDESC"
|
|
required: false
|
|
frontend_getter: "get_page_table_v()"
|
|
|
|
- name: "block_mask"
|
|
fbs_field: "block_mask_tensor_uid"
|
|
attr_suffix: "BLOCK_MASK_DESC"
|
|
required: false
|
|
frontend_getter: "get_block_mask()"
|
|
|
|
- name: "sink_token"
|
|
fbs_field: "sink_token_tensor_uid"
|
|
attr_suffix: "SINK_TOKEN_EXT"
|
|
required: false
|
|
frontend_getter: "get_sink_token()"
|
|
|
|
# FP8 input tensors
|
|
- name: "descale_q"
|
|
fbs_field: "descale_q_tensor_uid"
|
|
attr_suffix: "DESCALE_Q_EXT"
|
|
required: false
|
|
frontend_getter: "get_descale_q()"
|
|
|
|
- name: "descale_k"
|
|
fbs_field: "descale_k_tensor_uid"
|
|
attr_suffix: "DESCALE_K_EXT"
|
|
required: false
|
|
frontend_getter: "get_descale_k()"
|
|
|
|
- name: "descale_v"
|
|
fbs_field: "descale_v_tensor_uid"
|
|
attr_suffix: "DESCALE_V_EXT"
|
|
required: false
|
|
frontend_getter: "get_descale_v()"
|
|
|
|
- name: "descale_s"
|
|
fbs_field: "descale_s_tensor_uid"
|
|
attr_suffix: "DESCALE_S_EXT"
|
|
required: false
|
|
frontend_getter: "get_descale_s()"
|
|
|
|
- name: "scale_s"
|
|
fbs_field: "scale_s_tensor_uid"
|
|
attr_suffix: "SCALE_S_EXT"
|
|
required: false
|
|
frontend_getter: "get_scale_s()"
|
|
|
|
- name: "scale_o"
|
|
fbs_field: "scale_o_tensor_uid"
|
|
attr_suffix: "SCALE_O_EXT"
|
|
required: false
|
|
frontend_getter: "get_scale_o()"
|
|
|
|
# Optional output tensors
|
|
- name: "stats"
|
|
fbs_field: "stats_tensor_uid"
|
|
attr_suffix: "STATSDESC"
|
|
required: false
|
|
frontend_getter: "get_stats()"
|
|
|
|
- name: "max_output"
|
|
fbs_field: "max_tensor_uid"
|
|
attr_suffix: "MAX_EXT"
|
|
required: false
|
|
frontend_getter: "get_max()"
|
|
|
|
- name: "sum_exp"
|
|
fbs_field: "sum_exp_tensor_uid"
|
|
attr_suffix: "SUM_EXP_EXT"
|
|
required: false
|
|
frontend_getter: "get_sum_exp()"
|
|
|
|
- name: "rng_dump"
|
|
fbs_field: "rng_dump_tensor_uid"
|
|
attr_suffix: "RNG_DUMP_EXT"
|
|
required: false
|
|
frontend_getter: "get_rng_dump()"
|
|
|
|
# FP8 output tensors
|
|
- name: "amax_s"
|
|
fbs_field: "amax_s_tensor_uid"
|
|
attr_suffix: "AMAX_S_EXT"
|
|
required: false
|
|
frontend_getter: "get_amax_s()"
|
|
|
|
- name: "amax_o"
|
|
fbs_field: "amax_o_tensor_uid"
|
|
attr_suffix: "AMAX_O_EXT"
|
|
required: false
|
|
frontend_getter: "get_amax_o()"
|
|
|
|
data_fields:
|
|
# NOTE on frontend_getter syntax:
|
|
# SdpaAttributes is hand-maintained (not generated by --mode frontend) and exposes
|
|
# its data fields as public std::optional<T> members rather than getter methods.
|
|
# frontend_getter values below intentionally use bare member-name syntax
|
|
# (e.g. "dropout_probability") instead of method-call syntax ("get_dropout()")
|
|
# to match that hand-written class. See CLAUDE.md "Hand-maintained ops" section.
|
|
|
|
# Boolean flags
|
|
- name: "generate_stats"
|
|
fbs_field: "generate_stats"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_GENERATE_STATS_EXT"
|
|
type: "bool"
|
|
required: false
|
|
fbs_optional: true
|
|
frontend_getter: "generate_stats"
|
|
|
|
- name: "alibi_mask"
|
|
fbs_field: "alibi_mask"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_ALIBI_MASK_EXT"
|
|
type: "bool"
|
|
required: false
|
|
frontend_getter: "alibi_mask"
|
|
|
|
- name: "padding_mask"
|
|
fbs_field: "padding_mask"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_PADDING_MASK_EXT"
|
|
type: "bool"
|
|
required: false
|
|
frontend_getter: "padding_mask"
|
|
|
|
- name: "causal_mask"
|
|
fbs_field: "causal_mask"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_CAUSAL_MASK_EXT"
|
|
type: "bool"
|
|
required: false
|
|
frontend_getter: "causal_mask"
|
|
|
|
- name: "causal_mask_bottom_right"
|
|
fbs_field: "causal_mask_bottom_right"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_CAUSAL_MASK_BOTTOM_RIGHT_EXT"
|
|
type: "bool"
|
|
required: false
|
|
frontend_getter: "causal_mask_bottom_right"
|
|
|
|
# Scalar attributes
|
|
- name: "dropout_probability"
|
|
fbs_field: "dropout_probability"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_DROPOUT_PROBABILITY_EXT"
|
|
type: "scalar_float"
|
|
required: false
|
|
frontend_getter: "dropout_probability"
|
|
|
|
- name: "attn_scale_value"
|
|
fbs_field: "attn_scale_value"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_ATTN_SCALE_VALUE_EXT"
|
|
type: "scalar_float"
|
|
required: false
|
|
frontend_getter: "attn_scale_value"
|
|
|
|
- name: "left_bound"
|
|
fbs_field: "left_bound"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_LEFT_BOUND_EXT"
|
|
type: "scalar_int64"
|
|
required: false
|
|
frontend_getter: "left_bound"
|
|
|
|
- name: "right_bound"
|
|
fbs_field: "right_bound"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_RIGHT_BOUND_EXT"
|
|
type: "scalar_int64"
|
|
required: false
|
|
frontend_getter: "right_bound"
|
|
|
|
- name: "max_seq_len_kv"
|
|
fbs_field: "max_seq_len_kv"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_MAX_SEQ_LEN_KV_EXT"
|
|
type: "scalar_int32"
|
|
required: false
|
|
frontend_getter: "max_seq_len_kv"
|
|
|
|
# Enum attributes (mode type)
|
|
- name: "diagonal_alignment"
|
|
fbs_field: "diagonal_alignment"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_DIAGONAL_ALIGNMENT_EXT"
|
|
type: "mode"
|
|
cpp_enum: "hipdnn_flatbuffers_sdk::data_objects::DiagonalAlignment"
|
|
frontend_type: "DiagonalAlignment"
|
|
required: false
|
|
default_value: "DiagonalAlignment::TOP_LEFT"
|
|
mode_sentinel: "none"
|
|
frontend_getter: "diagonal_alignment"
|
|
backend_setter: "setDiagonalAlignment"
|
|
backend_getter: "getDiagonalAlignment"
|
|
backend_converter: "toBackendDiagonalAlignment"
|
|
frontend_inverse_converter: "fromHipdnnDiagonalAlignment"
|
|
backend_type_name: "HIPDNN_TYPE_DIAGONAL_ALIGNMENT_EXT"
|
|
test_enum_value: "TOP_LEFT"
|
|
test_alt_enum_value: "BOTTOM_RIGHT"
|
|
test_backend_value: "HIPDNN_DIAGONAL_ALIGNMENT_TOP_LEFT_EXT"
|
|
test_c_type: "hipdnnDiagonalAlignment_t"
|
|
test_default_value: "HIPDNN_DIAGONAL_ALIGNMENT_TOP_LEFT_EXT"
|
|
shared: true
|
|
enum_def:
|
|
backend_header: "HipdnnDiagonalAlignment.h"
|
|
backend_prefix: "HIPDNN_DIAGONAL_ALIGNMENT_"
|
|
values:
|
|
- { name: "TOP_LEFT_EXT", value: 0, frontend_name: "TOP_LEFT", description: "Anchor mask diagonal to the top-left corner of the attention matrix" }
|
|
- { name: "BOTTOM_RIGHT_EXT", value: 1, frontend_name: "BOTTOM_RIGHT", description: "Anchor mask diagonal to the bottom-right corner of the attention matrix" }
|
|
|
|
- name: "implementation"
|
|
fbs_field: "implementation"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_IMPLEMENTATION_EXT"
|
|
type: "mode"
|
|
cpp_enum: "hipdnn_flatbuffers_sdk::data_objects::AttentionImplementation"
|
|
frontend_type: "AttentionImplementation"
|
|
required: false
|
|
default_value: "AttentionImplementation::AUTO"
|
|
mode_sentinel: "none"
|
|
frontend_getter: "implementation"
|
|
backend_setter: "setAttentionImplementation"
|
|
backend_getter: "getAttentionImplementation"
|
|
backend_converter: "toBackendAttentionImplementation"
|
|
frontend_inverse_converter: "fromHipdnnAttentionImplementation"
|
|
backend_type_name: "HIPDNN_TYPE_ATTENTION_IMPLEMENTATION_EXT"
|
|
test_enum_value: "AUTO"
|
|
test_alt_enum_value: "COMPOSITE"
|
|
test_backend_value: "HIPDNN_ATTENTION_IMPLEMENTATION_AUTO_EXT"
|
|
test_c_type: "hipdnnAttentionImplementation_t"
|
|
test_default_value: "HIPDNN_ATTENTION_IMPLEMENTATION_AUTO_EXT"
|
|
shared: true
|
|
enum_def:
|
|
backend_header: "HipdnnAttentionImplementation.h"
|
|
backend_prefix: "HIPDNN_ATTENTION_IMPLEMENTATION_"
|
|
values:
|
|
- { name: "AUTO_EXT", value: 0, frontend_name: "AUTO", description: "Let the backend choose the best strategy for the given configuration" }
|
|
- { name: "COMPOSITE_EXT", value: 1, frontend_name: "COMPOSITE", description: "Decompose attention into separate matmul, softmax, and matmul kernels" }
|
|
- { name: "UNIFIED_EXT", value: 2, frontend_name: "UNIFIED", description: "Use a single fused kernel for the entire attention computation" }
|
|
|
|
tensor_array_fields: []
|
|
|
|
# SDPA exposes a second DataType-typed attribute (mma_core_mode) alongside
|
|
# compute_data_type. The packer omits it when set to NOT_SET because
|
|
# toHipdnnDataType() has no mapping for the sentinel; the unpacker likewise
|
|
# tolerates the attribute being absent and leaves the member at its default.
|
|
extra_data_type_fields:
|
|
- name: "mma_core_mode"
|
|
attr_name: "HIPDNN_ATTR_SDPA_FWD_MMA_CORE_MODE_EXT"
|
|
frontend_getter: "mma_core_mode"
|
|
sentinel: "DataType::NOT_SET"
|
|
error_label: "mma_core_mode"
|
|
|
|
has_compute_data_type: true
|
|
compute_data_type_attr: "HIPDNN_ATTR_SDPA_FWD_COMP_TYPE_EXT"
|
|
|
|
test_data:
|
|
constants_include: "SdpaFwdConstants"
|
|
tensor_const_prefix: "K_SDPA_"
|
|
tensor_uids:
|
|
q: 1800
|
|
k: 1801
|
|
v: 1802
|
|
o: 1803
|
|
attn_mask: 1804
|
|
scale: 1805
|
|
seq_len_q: 1806
|
|
seq_len_kv: 1807
|
|
seed: 1808
|
|
offset: 1809
|
|
dropout_mask: 1810
|
|
dropout_scale: 1811
|
|
page_table_k: 1812
|
|
page_table_v: 1813
|
|
block_mask: 1814
|
|
sink_token: 1815
|
|
descale_q: 1816
|
|
descale_k: 1817
|
|
descale_v: 1818
|
|
descale_s: 1819
|
|
scale_s: 1820
|
|
scale_o: 1821
|
|
stats: 1822
|
|
max_output: 1823
|
|
sum_exp: 1824
|
|
rng_dump: 1825
|
|
amax_s: 1826
|
|
amax_o: 1827
|
|
tensor_configs:
|
|
q: { dims: [1, 8, 128, 64], strides: [65536, 8192, 64, 1] }
|
|
k: { dims: [1, 8, 128, 64], strides: [65536, 8192, 64, 1] }
|
|
v: { dims: [1, 8, 128, 64], strides: [65536, 8192, 64, 1] }
|
|
o: { dims: [1, 8, 128, 64], strides: [65536, 8192, 64, 1] }
|
|
attn_mask: { dims: [1, 1, 128, 128], strides: [16384, 16384, 128, 1] }
|
|
scale: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
seq_len_q: { dims: [1], strides: [1] }
|
|
seq_len_kv: { dims: [1], strides: [1] }
|
|
seed: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
offset: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
dropout_mask: { dims: [1, 8, 128, 128], strides: [131072, 16384, 128, 1] }
|
|
dropout_scale: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
page_table_k: { dims: [1], strides: [1] }
|
|
page_table_v: { dims: [1], strides: [1] }
|
|
block_mask: { dims: [1], strides: [1] }
|
|
sink_token: { dims: [1], strides: [1] }
|
|
descale_q: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
descale_k: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
descale_v: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
descale_s: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
scale_s: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
scale_o: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
stats: { dims: [1, 8, 128, 1], strides: [1024, 128, 1, 1] }
|
|
max_output: { dims: [1, 8, 128, 1], strides: [1024, 128, 1, 1] }
|
|
sum_exp: { dims: [1, 8, 128, 1], strides: [1024, 128, 1, 1] }
|
|
rng_dump: { dims: [1, 8, 128, 128], strides: [131072, 16384, 128, 1] }
|
|
amax_s: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
amax_o: { dims: [1, 1, 1, 1], strides: [1, 1, 1, 1] }
|
|
field_values: {}
|