Graph¶
Overview¶
Graph represents a computational DAG with a set of operations. More…
// typedefs typedef struct dnnl_graph_graph* dnnl_graph_graph_t; typedef const struct dnnl_graph_graph* const_dnnl_graph_graph_t; // classes class dnnl::graph::graph; // global functions dnnl_status_t DNNL_API dnnl_graph_graph_create( dnnl_graph_graph_t* graph, dnnl_engine_kind_t engine_kind ); dnnl_status_t DNNL_API dnnl_graph_graph_create_with_fpmath_mode( dnnl_graph_graph_t* graph, dnnl_engine_kind_t engine_kind, dnnl_fpmath_mode_t mode ); dnnl_status_t DNNL_API dnnl_graph_graph_destroy(dnnl_graph_graph_t graph); dnnl_status_t DNNL_API dnnl_graph_graph_set_fpmath_mode( dnnl_graph_graph_t graph, dnnl_fpmath_mode_t mode, int apply_to_int ); dnnl_status_t DNNL_API dnnl_graph_graph_get_fpmath_mode( dnnl_graph_graph_t graph, dnnl_fpmath_mode_t* mode, int* apply_to_int ); dnnl_status_t DNNL_API dnnl_graph_add_op( dnnl_graph_graph_t graph, dnnl_graph_op_t op ); dnnl_status_t DNNL_API dnnl_graph_graph_finalize(dnnl_graph_graph_t graph); dnnl_status_t DNNL_API dnnl_graph_graph_is_finalized( dnnl_graph_graph_t graph, uint8_t* finalized ); dnnl_status_t DNNL_API dnnl_graph_graph_filter( dnnl_graph_graph_t graph, dnnl_graph_partition_policy_t policy ); dnnl_status_t DNNL_API dnnl_graph_graph_get_partition_num( const_dnnl_graph_graph_t graph, size_t* num ); dnnl_status_t DNNL_API dnnl_graph_graph_get_partitions( dnnl_graph_graph_t graph, size_t num, dnnl_graph_partition_t* partitions );
Detailed Documentation¶
Graph represents a computational DAG with a set of operations.
dnnl::graph::graph::add_op() adds an operation and its input and output logical tensors into a graph. The library accumulates the operations and logical tensors and constructs and validates the graph as an internal state. A graph object is associated to a specific engine kind. The partitions returned from the graph will inherit the engine kind of the graph.
Typedefs¶
typedef struct dnnl_graph_graph* dnnl_graph_graph_t
A graph handle.
typedef const struct dnnl_graph_graph* const_dnnl_graph_graph_t
A constant graph handle.
Global Functions¶
dnnl_status_t DNNL_API dnnl_graph_graph_create( dnnl_graph_graph_t* graph, dnnl_engine_kind_t engine_kind )
Creates a new empty graph.
A graph is associated to a specific engine kind. The partitions returned from the graph will inherit the engine kind of the graph.
Parameters:
graph |
The handle of output graph. |
engine_kind |
The target engine kind. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_graph_create_with_fpmath_mode( dnnl_graph_graph_t* graph, dnnl_engine_kind_t engine_kind, dnnl_fpmath_mode_t mode )
Creates a new empty graph with an engine kind and a floating-point math mode.
All partitions returned from the graph will inherit the engine kind and floating-point math mode.
Parameters:
graph |
The handle of output graph. |
engine_kind |
The kind for engine. |
mode |
The floating-point math mode. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_graph_destroy(dnnl_graph_graph_t graph)
Destroys a graph.
Parameters:
graph |
The graph to be destroyed. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_graph_set_fpmath_mode( dnnl_graph_graph_t graph, dnnl_fpmath_mode_t mode, int apply_to_int )
Set the floating point math mode for a graph.
Parameters:
graph |
The target graph. |
mode |
The floating-point math mode. |
apply_to_int |
The flag that controls whether to use floating-point arithmetic for integral operations. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_graph_get_fpmath_mode( dnnl_graph_graph_t graph, dnnl_fpmath_mode_t* mode, int* apply_to_int )
Get the floating point math mode for a graph.
Parameters:
graph |
The target graph. |
mode |
The floating-point math mode. |
apply_to_int |
The flag that controls whether to use floating-point arithmetic for integral operations. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_add_op( dnnl_graph_graph_t graph, dnnl_graph_op_t op )
Adds an operation into a graph.
The API will return failure if the operator has already been added to the graph or the operation cannot pass the schema check in the library (eg. input and output numbers and data types, the attributes of the operation, etc.).
Parameters:
graph |
The target graph. |
op |
The operation to be added. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_graph_finalize(dnnl_graph_graph_t graph)
Finalizes a graph.
It means users have finished adding operations into the graph and the graph is ready for partitioning. Adding a new operation into a finalized graph will return failures. Similarly, partitioning on a un-finalized graph will also return failures.
Parameters:
graph |
The target graph to be finalized. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_graph_is_finalized( dnnl_graph_graph_t graph, uint8_t* finalized )
Checks if a graph is finalized.
Parameters:
graph |
The target graph to be finalized. |
finalized |
Output the finalization status. 0 means then graph is not finalized. Other values means the graph is finalized. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_graph_filter( dnnl_graph_graph_t graph, dnnl_graph_partition_policy_t policy )
Filters a graph.
Partitions will be claimed internally according to the capability of the library, the engine kind, and the policy.
Parameters:
graph |
The target graph. |
policy |
The partition policy. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_graph_get_partition_num( const_dnnl_graph_graph_t graph, size_t* num )
Returns the number of partitions of a graph.
The API should be called after a partition is already filtered. Otherwise, the output number is zero.
Parameters:
graph |
The graph. |
num |
Output the number of partitions. |
Returns:
dnnl_success on success or a status describing the error otherwise.
dnnl_status_t DNNL_API dnnl_graph_graph_get_partitions( dnnl_graph_graph_t graph, size_t num, dnnl_graph_partition_t* partitions )
Returns the partitions from a filtered graph.
Output partition instances will be written into the parameter partitions
. Users need to make sure partitions
is valid and has enough space to accept the partition instances. Each output partition instance should be destroyed via dnnl_graph_partition_destroy explicitly after use.
Parameters:
graph |
The target graph. |
num |
The number of partitions. |
partitions |
Output the partitions. |
Returns:
dnnl_success on success or a status describing the error otherwise.