generate_composite_decl¶
Generates the composite declaration attribute required when implementing custom op lowerings.
Warning
Implementing custom op lowerings uses authoring APIs from coreai-core (such as coreai._compiler.dialects). The leading underscore on _compiler marks this as private upstream API — it may move or change without notice across coreai-core releases.
Overview¶
When lowering a custom op to a coreai.graph composite, the graph must carry a CompositeDeclaration attribute that specifies the composite name, input and output names, and any op-specific attributes. generate_composite_decl builds this attribute from its arguments.
Public import:
from coreai_torch import generate_composite_decl
Declaration¶
def generate_composite_decl(
context,
op_name: str,
input_names: list[str],
output_names: list[str],
op_attributes: dict[str, Any],
) -> CompositeDeclaration
Parameters¶
Parameter |
Type |
Description |
|---|---|---|
|
|
The Core AI Context. Pass |
|
|
Name of the composite op as it appears in the |
|
|
Names for the composite inputs, in argument order. |
|
|
Names for the composite outputs, in result order. |
|
|
Op-specific attributes to embed in the declaration. The |
Returns¶
A CompositeDeclaration Core AI attribute to pass as composite_decl when defining a coreai.graph.
Discussion¶
Use this function inside a lowering function registered with TorchConverter.register_torch_lowering().
The following example registers a lowering for a custom op "mylib::my_custom_op":
from coreai_torch import generate_composite_decl, TorchConverter
def my_custom_op_conversion(values_map, node, loc):
arg0 = values_map[node.args[0].name]
arg1 = values_map[node.args[1].name]
op_attributes = {
"some_attribute": 0.5,
"version": 1,
}
composite_decl = generate_composite_decl(
arg0.context,
"my_custom_op",
["argument0", "argument1"],
["output"],
op_attributes,
)
# The decorator transforms this function: calling it returns an OpResultList
@coreai.graph(no_inline=True, composite_decl=composite_decl)
def my_custom_op_impl(argument0: Value, argument1: Value) -> Value:
...
return result
return my_custom_op_impl(arg0, arg1)[0]
converter = TorchConverter()
converter.register_torch_lowering("mylib::my_custom_op")(my_custom_op_conversion)
The coreai.graph decorator always returns an OpResultList. Index it at [0] when the composite produces a single output.
For a full walkthrough of custom op lowering, see Custom Op Lowering.