图编译公共基础结构约束文档【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge图等数据结构作为公共基础结构在设计时易用性、兼容性应该优先考虑。公共基础结构是整个系统的基石其设计质量直接影响上层模块的可维护性和可扩展性。以下从架构设计层面总结核心原则。核心设计理念公共基础结构的设计应遵循以下核心思想稳定性优先基础结构一旦确立变更成本极高设计时必须考虑长期演进最小依赖减少对其他模块的依赖提高独立性和可移植性向后兼容接口演化必须保持向后兼容避免破坏现有代码关注点分离基础结构只提供通用能力不感知具体业务逻辑可观测性内置必要的调试和监控能力降低问题定位成本1. 模块的独立性与内聚性设计思想模块应具有清晰的边界和明确的职责依赖关系应当显式化、最小化。模块的内部实现细节不应外泄外部依赖应当可控。架构原则模块之间的依赖应当是显式的、单向的避免隐式依赖导致的耦合模块的拆分应当基于职责的内聚性而非实现的技术细节模块应当是自包含的其依赖关系应当通过明确的接口声明在GE中的具体体现SO文件的依赖应当是显式的避免隐式符号依赖通过ldd -r验证基础结构的SO拆分libgraph.so与libgraph_base.so应考虑不同部署场景历史遗留的隐式依赖特指libgraph_base对libgraph的依赖不应继续扩大需逐步清理2. 模块边界的稳定性与可演化性设计思想模块边界应当相对稳定能够在内部实现演化的同时保持外部接口的兼容性。边界的调整需要谨慎评估影响范围。架构原则模块内部的实现细节可以自由演化但外部接口必须保持稳定边界的调整如模块归属的变更需要考虑所有使用场景向后兼容性是接口演化的首要约束在GE中的具体体现CC文件在不同SO间的归属调整需评估多种部署场景桩包、非桩包、tiny场景资源受限场景下的模块大小约束需要考虑边界变更的影响面分析应覆盖所有可能的组合场景3. 接口演化的兼容性保障设计思想接口是模块间协作的契约接口的演化必须保证不破坏现有代码。即使是非公开的内部接口也需要考虑兼容性。架构原则接口的设计应当考虑未来可能的扩展需求接口的演化应当优先通过新增接口而非修改现有接口接口的变更包括参数、返回值、语义需要评估所有调用方在GE中的具体体现外部接口external和内部接口都需要考虑ABI兼容性老版本组件与新版本基础结构的组合场景需要特别关注接口扩展时优先新增接口避免修改现有接口的默认参数4. 可观测性与性能的平衡设计思想可观测性日志、监控、调试是系统可维护性的基础但必须在性能开销和可观测价值之间取得平衡。架构原则基础结构应当提供适度的可观测能力但避免过度日志热路径上的可观测性操作必须精心设计避免性能劣化可观测性的粒度应当可配置适应不同场景的需求在GE中的具体体现基础接口的日志打印需要考虑调用频次约束如1秒内不超过2次ERROR日志的一定要谨慎使用调用方无法忽略必须处理高频调用场景需要特殊的日志策略采样、分级等5. 接口设计的鲁棒性原则设计思想接口设计应当预见到各种可能的调用场景包括正常场景、边界场景、误用场景通过设计而非文档来保证正确使用。架构原则接口应当明确其调用约束如是否可重入、线程安全性接口应当通过类型系统、断言等机制防止误用接口的性能特性应当在设计中体现而非事后优化在GE中的具体体现图操作的接口需要考虑可重入性和幂等性嵌套调用、重复调用等场景需要提前设计防呆机制热路径接口的性能优化需要在设计阶段考虑避免重复计算、临时对象创建6. 关注点分离与层次化设计设计思想公共基础结构应当专注于提供通用、抽象的基础能力不应当感知具体业务逻辑。业务逻辑应当在更高层次的模块中实现。架构原则基础结构应当提供领域抽象而非业务规则基础结构的状态应当是通用的、可复用的而非业务特定的业务逻辑的变化不应影响基础结构的接口和实现在GE中的具体体现图数据结构不应包含业务状态如is_valid_flag_、need_iteration_等业务相关的标记和属性应当在上层模块中维护基础结构提供的操作应当是通用的图操作存储、查询、修改7. 并发模型的明确性原则设计思想并发模型是模块设计的重要约束必须在设计阶段明确。不明确的并发模型会导致难以复现的并发问题。架构原则模块必须明确其并发模型单线程、多线程读、线程安全等并发模型的选择应当基于使用场景和性能需求的权衡并发模型的变化是破坏性变更需要在设计阶段确定在GE中的具体体现图基础结构当前采用单线程模型不支持并发修改并发安全由业务层保证而非基础结构提供未来若需支持并发需要在设计阶段明确接口语义和使用约束8. 跨平台一致性的可移植性原则设计思想公共基础结构可能在不同平台、不同编译环境下使用必须保证行为的一致性。实现细节的选择不应引入平台差异。架构原则避免依赖实现定义或未定义行为选择具有确定性语义的数据结构和算法在GE中的具体体现避免使用迭代顺序不确定的容器如unordered_map模型文件的兼容性需要考虑不同编译器和标准库实现的差异9. 可调试性与可维护性内置原则设计思想可调试性不应当是事后添加的功能而应当在设计阶段内置。基础结构的可观测性是其内在质量的一部分。架构原则数据结构的完整状态应当能够被观测和导出新增字段或功能时必须同步更新可观测性支持可观测性能力本身也应当易于扩展和维护在GE中的具体体现图的序列化是主要的维测手段必须保证完备性新增字段时需要同步更新序列化逻辑序列化格式需要考虑版本兼容性和可读性【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
CANN/ge图编译公共基础结构约束文档
发布时间:2026/7/10 9:51:50
图编译公共基础结构约束文档【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge图等数据结构作为公共基础结构在设计时易用性、兼容性应该优先考虑。公共基础结构是整个系统的基石其设计质量直接影响上层模块的可维护性和可扩展性。以下从架构设计层面总结核心原则。核心设计理念公共基础结构的设计应遵循以下核心思想稳定性优先基础结构一旦确立变更成本极高设计时必须考虑长期演进最小依赖减少对其他模块的依赖提高独立性和可移植性向后兼容接口演化必须保持向后兼容避免破坏现有代码关注点分离基础结构只提供通用能力不感知具体业务逻辑可观测性内置必要的调试和监控能力降低问题定位成本1. 模块的独立性与内聚性设计思想模块应具有清晰的边界和明确的职责依赖关系应当显式化、最小化。模块的内部实现细节不应外泄外部依赖应当可控。架构原则模块之间的依赖应当是显式的、单向的避免隐式依赖导致的耦合模块的拆分应当基于职责的内聚性而非实现的技术细节模块应当是自包含的其依赖关系应当通过明确的接口声明在GE中的具体体现SO文件的依赖应当是显式的避免隐式符号依赖通过ldd -r验证基础结构的SO拆分libgraph.so与libgraph_base.so应考虑不同部署场景历史遗留的隐式依赖特指libgraph_base对libgraph的依赖不应继续扩大需逐步清理2. 模块边界的稳定性与可演化性设计思想模块边界应当相对稳定能够在内部实现演化的同时保持外部接口的兼容性。边界的调整需要谨慎评估影响范围。架构原则模块内部的实现细节可以自由演化但外部接口必须保持稳定边界的调整如模块归属的变更需要考虑所有使用场景向后兼容性是接口演化的首要约束在GE中的具体体现CC文件在不同SO间的归属调整需评估多种部署场景桩包、非桩包、tiny场景资源受限场景下的模块大小约束需要考虑边界变更的影响面分析应覆盖所有可能的组合场景3. 接口演化的兼容性保障设计思想接口是模块间协作的契约接口的演化必须保证不破坏现有代码。即使是非公开的内部接口也需要考虑兼容性。架构原则接口的设计应当考虑未来可能的扩展需求接口的演化应当优先通过新增接口而非修改现有接口接口的变更包括参数、返回值、语义需要评估所有调用方在GE中的具体体现外部接口external和内部接口都需要考虑ABI兼容性老版本组件与新版本基础结构的组合场景需要特别关注接口扩展时优先新增接口避免修改现有接口的默认参数4. 可观测性与性能的平衡设计思想可观测性日志、监控、调试是系统可维护性的基础但必须在性能开销和可观测价值之间取得平衡。架构原则基础结构应当提供适度的可观测能力但避免过度日志热路径上的可观测性操作必须精心设计避免性能劣化可观测性的粒度应当可配置适应不同场景的需求在GE中的具体体现基础接口的日志打印需要考虑调用频次约束如1秒内不超过2次ERROR日志的一定要谨慎使用调用方无法忽略必须处理高频调用场景需要特殊的日志策略采样、分级等5. 接口设计的鲁棒性原则设计思想接口设计应当预见到各种可能的调用场景包括正常场景、边界场景、误用场景通过设计而非文档来保证正确使用。架构原则接口应当明确其调用约束如是否可重入、线程安全性接口应当通过类型系统、断言等机制防止误用接口的性能特性应当在设计中体现而非事后优化在GE中的具体体现图操作的接口需要考虑可重入性和幂等性嵌套调用、重复调用等场景需要提前设计防呆机制热路径接口的性能优化需要在设计阶段考虑避免重复计算、临时对象创建6. 关注点分离与层次化设计设计思想公共基础结构应当专注于提供通用、抽象的基础能力不应当感知具体业务逻辑。业务逻辑应当在更高层次的模块中实现。架构原则基础结构应当提供领域抽象而非业务规则基础结构的状态应当是通用的、可复用的而非业务特定的业务逻辑的变化不应影响基础结构的接口和实现在GE中的具体体现图数据结构不应包含业务状态如is_valid_flag_、need_iteration_等业务相关的标记和属性应当在上层模块中维护基础结构提供的操作应当是通用的图操作存储、查询、修改7. 并发模型的明确性原则设计思想并发模型是模块设计的重要约束必须在设计阶段明确。不明确的并发模型会导致难以复现的并发问题。架构原则模块必须明确其并发模型单线程、多线程读、线程安全等并发模型的选择应当基于使用场景和性能需求的权衡并发模型的变化是破坏性变更需要在设计阶段确定在GE中的具体体现图基础结构当前采用单线程模型不支持并发修改并发安全由业务层保证而非基础结构提供未来若需支持并发需要在设计阶段明确接口语义和使用约束8. 跨平台一致性的可移植性原则设计思想公共基础结构可能在不同平台、不同编译环境下使用必须保证行为的一致性。实现细节的选择不应引入平台差异。架构原则避免依赖实现定义或未定义行为选择具有确定性语义的数据结构和算法在GE中的具体体现避免使用迭代顺序不确定的容器如unordered_map模型文件的兼容性需要考虑不同编译器和标准库实现的差异9. 可调试性与可维护性内置原则设计思想可调试性不应当是事后添加的功能而应当在设计阶段内置。基础结构的可观测性是其内在质量的一部分。架构原则数据结构的完整状态应当能够被观测和导出新增字段或功能时必须同步更新可观测性支持可观测性能力本身也应当易于扩展和维护在GE中的具体体现图的序列化是主要的维测手段必须保证完备性新增字段时需要同步更新序列化逻辑序列化格式需要考虑版本兼容性和可读性【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考