
CMake常见示例【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge基本用法# 1. 定义原型动态库前置条件 add_library(opgraph_math SHARED ) # 2. 生成ES API包库wheel包 add_es_library_and_whl( ES_LINKABLE_AND_ALL_TARGET es_math OPP_PROTO_TARGET opgraph_math OUTPUT_PATH ${CMAKE_BINARY_DIR}/output ) # 3. 在应用中使用 add_executable(my_app main.cpp) target_link_libraries(my_app PRIVATE es_math)如果工程中还有在编译阶段就需要ES头文件的OBJECT/STATIC中间目标可额外添加add_dependencies(中间目标 build_es_math)build_es_*** 名称会随包名变化以确保在编译该目标前已完成代码生成。最终的可执行或共享库只需target_link_libraries(... es_math) 即可自动触发相关依赖示例如下add_library(my_obj OBJECT foo.cc bar.cc) # 确保在编译my_obj之前先执行build_es_math这个目标通常用于生成依赖的头文件等前置操作 # 比如es_math头文件是通过build_es_math生成的 add_dependencies(my_obj build_es_math) # 将es_math的头文件搜索路径传递给my_obj target_link_libraries(my_obj PRIVATE es_math) # 创建可执行文件my_app使用my_obj中生成的目标文件$TARGET_OBJECTS:my_obj add_executable(my_app $TARGET_OBJECTS:my_obj) 将es_math的依赖链接到my_app可选 target_link_libraries(my_app PRIVATE es_math )只生成C/C 库# 只生成 C/C 库跳过Python wheel包 add_es_library( ES_LINKABLE_AND_ALL_TARGET es_math OPP_PROTO_TARGET opgraph_math OUTPUT_PATH ${CMAKE_BINARY_DIR}/output )排除部分算子生成# 生成math TARGET # 生成产物不会包含es_Add_c.h; es_Add.h, es_Add.cpp, es_Add.py add_es_library( ES_LINKABLE_AND_ALL_TARGET es_math OPP_PROTO_TARGET opgraph_math OUTPUT_PATH ${CMAKE_BINARY_DIR}/output EXCLUDE_OPS Add )多个TARGET# 生成math TARGET add_es_library_and_whl( ES_LINKABLE_AND_ALL_TARGET es_math OPP_PROTO_TARGET opgraph_math OUTPUT_PATH ${CMAKE_BINARY_DIR}/output ) # 生成nn TARGET add_es_library_and_whl( ES_LINKABLE_AND_ALL_TARGET es_nn OPP_PROTO_TARGET opgraph_nn OUTPUT_PATH ${CMAKE_BINARY_DIR}/output ) # 使用多个TARGET add_executable(my_inference_app main.cpp) target_link_libraries(my_inference_app PRIVATE es_math es_nn )多个TARGET共享输出目录所有TARGET可以使用同一个OUTPUT_PATH头文件会按包名组织在子目录中示例如下add_es_library_and_whl( ES_LINKABLE_AND_ALL_TARGET es_math OPP_PROTO_TARGET opgraph_math OUTPUT_PATH ${CMAKE_BINARY_DIR}/output # 共享路径 ) add_es_library_and_whl( ES_LINKABLE_AND_ALL_TARGET es_nn OPP_PROTO_TARGET opgraph_nn OUTPUT_PATH ${CMAKE_BINARY_DIR}/output # 共享路径 ) # 输出结构 # output/ # ├── include/ # │ ├── es_math/ # │ └── es_nn/ # ├── lib64/ # │ ├── libes_math.so # │ └── libes_nn.so # └── whl/ # ├── es_math-1.0.0-py3-none-any.whl # └── es_nn-1.0.0-py3-none-any.whl【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考