Configuring, Creating, and Destroying a Graph
The graph describes the data transmission relationship between engines in a service. The Matrix framework defines the graph data structure in a protobuf file. You can define the graph configurations in the configuration file.
For details about the graph keywords, see Graph Keywords. For more details, see the Matrix API Reference.
The following provides a simple graph configuration file, which will create a graph service flow with the ID of 1000. The service flow contains three engines. Figure 1 shows the data transmission relationship between the engines.
graphs {
graph_id: 1000 # A single chip supports multiple graphs, whose IDs must be greater than 0 and must be unique within the chip.
device_id: "0" # ID of the chip on which the graph is running
priority: 1 # priority
# user-defined engine, which can be instantiated into multiple engines. Multiple engines are differentiated by ID.
engines {
id: 2001 # engine ID
engine_name: "ObjectDetectionEngine" # class name of the user-defined engine
side: DEVICE # whether the engine runs on the host or device
so_name: "./libObjectDetectionEngine.so" # name and host-side path of the dynamic library, which is copied by the Matrix framework to the device side
# user-definable parameters
ai_config{
items{
name: "model" # model name
value: "./FaceDetection.om" # host-side path of the model, which is copied by the Matrix framework to the device side
}
items{
name: "mode"
value: "test"
}
}
}
engines {
id: 1000
engine_name: "DecodeEngine"
side: DEVICE
so_name: "./libDecodeEngine.so"
}
engines {
id: 2002
engine_name: "PostProcess"
side: HOST
}
# Describes interface connections between engines.
connects {
src_engine_id: 1000 # source engine ID for data transmission
src_port_id: 0 # source port ID for data transmission
target_engine_id: 2001 # target engine ID for data transmission
target_port_id: 0 # target port ID for data transmission
}
connects {
src_engine_id: 2001
src_port_id: 0
target_engine_id: 2002
target_port_id: 0
}
}
Table 1 lists three frequently used graph APIs provided by the Matrix. For details, see the Matrix API Reference.
|
API |
Description |
|---|---|
|
HIAI_StatusT HIAI_Init(uint32_t deviceID) |
Initializes an Ascend 310 chip. Note that the chip ID used must be the absolute number of the Ascend 310 chip. The chip ID queried on the Atlas 500 is fixed to 0, while the chip ID queried using the npu-smi command is a relative number. |
|
static HIAI_StatusT Graph::CreateGraph(const std::string& configFile) |
Reads the graph configuration file, initializes engines, and creates threads and channels for data transmission to initialize the service flow. |
|
static HIAI_StatusT Graph::DestroyGraph(uint32_t graphID) |
Destroys the graph and runs the destructor functions of engines. |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot
