
Sample Usage Guide【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge1. Functional DescriptionThis sample uses control operators for graph construction, aiming to help graph construction developers quickly get started with control operator definition and usage2. Directory Structurecpp/ ├── src/ | └── CMakeLists.txt // CMake build file | └── es_showcase.h // Header file | └── make_if_graph.cpp // sample file ├── CMakeLists.txt // CMake build file ├── main.cpp // Program main entry ├── README.md // README file ├── run_sample.sh // Execution script ├── utils.h // Utility file3. Usage3.1. Prepare CANN PackageCorrectly installtoolkitandopspackages through installation guide Environment PreparationSet environment variables (assuming packages are installed in /usr/local/Ascend/)source /usr/local/Ascend/cann/set_env.sh3.2. Compilation and ExecutionSimply run the following command to complete cleanup, interface generation, graph construction and DUMP graphbash run_sample.shCurrent run_sample.sh behavior: first automatically clean up old build, build sample and execute sample dump by default. When you see the following information, it means successful execution:[Success] sample executed successfully, pbtxt dump generated in current directory. This file starts with ge_onnx_ and can be opened in netron for displayOutput File DescriptionAfter successful execution, the following files will be generated in the current directory:ge_onnx_*.pbtxt- Graph structure protobuf text format, can be viewed with netronBuild Graph and ExecuteBesides basic graph construction and dump functionality, esb_sample also supports building graphs and executing actual computation.bash run_sample.sh -t sample_and_runThis command will:Automatically generate ES interfacesCompile sample programGenerate dump graph, run graph and output computation resultsAfter successful execution you will see:[Success] sample_and_run executed successfully, pbtxt and data output dump generated in current directoryYou can view computation results through data files3.3. Log PrintingIf you need log printing to assist debugging during executable program execution, you can set the following environment variables before bash run_sample.sh to print logs to screenexport ASCEND_SLOG_PRINT_TO_STDOUT1 #Print logs to screen export ASCEND_GLOBAL_LOG_LEVEL0 #Log level is debug level3.4. DUMP Graph During Graph Compilation ProcessDuring executable program execution, if you need to DUMP graph to assist debugging graph compilation process, you can set the following environment variable before bash run_sample.sh -t sample_and_run to DUMP graph to execution pathexport DUMP_GE_GRAPH24. Core Concept Introduction4.1. Graph Construction StepsCreate graph builder (used to provide context, workspace and construction-related methods needed for graph construction)Add start nodes (start nodes refer to nodes without input dependencies, usually including graph inputs (like Data nodes) and weight constants (like Const nodes))Add intermediate nodes (intermediate nodes are computation nodes with input dependencies, usually generated by user graph construction logic, and connected through existing nodes as inputs)Set graph output (explicitly specify graph output nodes as endpoints of computation results)4.2. Control Operator (Control Op)Concept Description:Control operators are a special class of operators used to implement control flow logic, such as conditional branches (If), etc.Graph Construction API Features:Control operators usually need to construct one or more subgraphs firstFor example, the prototype of the If operator is shown below, the ES graph construction generated API isIf(), supports usage in C and CREG_OP(If) .INPUT(cond, TensorType::ALL()) .DYNAMIC_INPUT(input, TensorType::ALL()) .DYNAMIC_OUTPUT(output, TensorType::ALL()) .GRAPH(then_branch) .GRAPH(else_branch) .OP_END_FACTORY_REG(If)Its corresponding function prototype is:Function name: If (C) or EsIf (C)Parameters: 3 in total, namely cond, input, then_branch, else_branchReturn value: outputIn C API:EsIfOutput EsIf(EsCTensorHolder *cond, EsCTensorHolder **input, int64_t input_num, int64_t output_num, EsCGraph *then_branch, EsCGraph *else_branch); typedef struct { EsCTensorHolder **output; int64_t output_num; } EsIfOutput;C API:std::vectorEsTensorHolder If(const EsTensorHolder cond, const std::vectorEsTensorHolder input, int64_t output_num, std::unique_ptrge::Graph then_branch, std::unique_ptrge::Graph else_branch)Note:Use TensorLike type to express input, to support the case where actual parameters can directly pass valuesUse default parameters to express optional attributes in IR prototype【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考