oarust 0.8.6

GPU-first semantic computing engine written in Rust
// @generated by tool/gen/fn/generate.py; DO NOT EDIT.
// schema=matrix_elemwise.json schema_version=1 generator_version=64
// schema_sha256=6d4112435554d3615e6c2494c5062e5f93fa85815bccffa2ca49b12f97aaac75
// matrix_blas_sha256=31a29676780c696e7f6a77f290398587a9e29e612903c5816503e35d3dda8687
// matrix_reduce_sha256=82fbdb597e6fd7557a8c081a6302ceb383b2df455716387a549bed1a21f44fdd
// matrix_rng_sha256=44767f064bbe8a861ee136a4b6ac710d80d5acc0febb4921a9b455dfac0147d6
// ml_training_sha256=6678961ee57f24310158676c7b4fe0821e21ca48db7edcb20d2a749a164976ae
// Candidate roles mirror OA DNN vocabulary while retaining OARS compatibility identities.

pub(super) static DNN_OP_ROLES: &[DnnOpRole] = &[
	DnnOpRole {
		contract: crate::core::operation::matrix::ADD,
		op_type: DnnOpType::Add,
		epilogue: DnnEpilogue::None,
		epilogue_required_input: None,
		provider_mask: DnnProvider::ResidualNorm.bit(),
	},
	DnnOpRole {
		contract: crate::core::operation::matrix::MUL,
		op_type: DnnOpType::Multiply,
		epilogue: DnnEpilogue::None,
		epilogue_required_input: None,
		provider_mask: DnnProvider::GatedFfn.bit(),
	},
	DnnOpRole {
		contract: crate::core::operation::matrix::MAT_MUL_NT,
		op_type: DnnOpType::Matmul,
		epilogue: DnnEpilogue::None,
		epilogue_required_input: None,
		provider_mask: DnnProvider::BlasLtEpilogue.bit()
			| DnnProvider::QkvProjectionGroup.bit()
			| DnnProvider::GatedFfn.bit(),
	},
	DnnOpRole {
		contract: crate::core::operation::ml::LINEAR,
		op_type: DnnOpType::Matmul,
		epilogue: DnnEpilogue::Bias,
		epilogue_required_input: Some(2),
		provider_mask: DnnProvider::BlasLtEpilogue.bit()
			| DnnProvider::QkvProjectionGroup.bit()
			| DnnProvider::GatedFfn.bit(),
	},
	DnnOpRole {
		contract: crate::core::operation::ml::RMS_NORM,
		op_type: DnnOpType::RmsNorm,
		epilogue: DnnEpilogue::None,
		epilogue_required_input: None,
		provider_mask: DnnProvider::ResidualNorm.bit(),
	},
	DnnOpRole {
		contract: crate::core::operation::ml::GELU,
		op_type: DnnOpType::Gelu,
		epilogue: DnnEpilogue::None,
		epilogue_required_input: None,
		provider_mask: DnnProvider::BlasLtEpilogue.bit(),
	},
	DnnOpRole {
		contract: crate::core::operation::ml::SILU,
		op_type: DnnOpType::Silu,
		epilogue: DnnEpilogue::None,
		epilogue_required_input: None,
		provider_mask: DnnProvider::BlasLtEpilogue.bit() | DnnProvider::GatedFfn.bit(),
	},
	DnnOpRole {
		contract: crate::core::operation::ml::RELU,
		op_type: DnnOpType::Relu,
		epilogue: DnnEpilogue::None,
		epilogue_required_input: None,
		provider_mask: DnnProvider::BlasLtEpilogue.bit(),
	},
	DnnOpRole {
		contract: crate::core::operation::ml::SWIGLU,
		op_type: DnnOpType::GatedMultiply,
		epilogue: DnnEpilogue::None,
		epilogue_required_input: None,
		provider_mask: DnnProvider::GatedFfn.bit(),
	},
	DnnOpRole {
		contract: crate::core::operation::ml::SCALED_DOT_PRODUCT_ATTENTION,
		op_type: DnnOpType::ScaledDotProductAttention,
		epilogue: DnnEpilogue::None,
		epilogue_required_input: None,
		provider_mask: DnnProvider::Attention.bit(),
	},
];