
MemoryConfig构造函数【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow功能说明MemoryConfig类的构造函数用于配置系统内存使用方式。函数原型class MemoryConfig(): def __init__(self, atomic_clean_policy0, static_memory_policy0, variable_use_1g_huge_page0 # ... )参数说明atomic_clean_policy输入是否集中清理网络中所有memset算子占用的内存含有memset属性的算子都是memset算子。0默认值集中清理。1单独清理对网络每一个memset算子进行单独清理。当网络中memset算子内存过大时可尝试此种清理方式但可能会导致一定的性能损耗。static_memory_policy输入网络运行时使用的内存分配方式。0默认值动态分配内存即按照实际大小动态分配。2静态shape支持内存动态扩展。网络运行时可以通过此取值实现同一session中多张图之间的内存复用即以最大图所需内存进行分配。例如假设当前执行图所需内存超过前一张图的内存时直接释放前一张图的内存按照当前图所需内存重新分配。3动态shape支持内存动态扩展解决内存动态分配时的碎片问题降低动态shape网络内存占用。4静态shape和动态shape同时支持内存动态扩展。[!NOTE]说明多张图并发执行时不支持配置为“2”和“4”。为兼容历史版本配置配置为“1”的场景下系统会按照“2”的方式进行处理。配置为“3”和“4”的场景下将带来内存收益但可能导致性能损失。variable_use_1g_huge_page输入在推荐模型中嵌入层(Embedding层)在TensorFlow中使用的是变量当嵌入层作为索引类算子(Gather、ScatterNd等)的输入或输出地址时若内存较大会存在大范围的离散访问可能会出现算子性能下降问题。此时可尝试通过配置此参数为变量和常量使用1G大页申请内存从而提升访存性能。该参数取值包括0默认值使用系统默认的4K或者2M页申请内存。1使用1G大页申请内存如果申请失败立即打印ERROR日志并终止业务执行。2使用1G大页申请内存如果申请失败会打印ERROR日志但不终止业务执行而是转为使用2M页申请内存如果尝试申请成功则业务继续执行。如果尝试申请失败则终止业务执行。使用1G大页申请内存可以有效降低页表数量有效扩大TLBTranslation Lookaside Buffer缓存的地址范围从而提升离散访问的性能。TLB是昇腾AI处理器中用于高速缓存的硬件模块用于存储最近使用的虚拟地址到物理地址的映射。[!NOTE]说明 此参数仅支持以下产品Ascend 950PR/Ascend 950DTAtlas A3 训练系列产品/Atlas A3 推理系列产品Atlas A2 训练系列产品/Atlas A2 推理系列产品返回值返回MemoryConfig类对象作为NPURunConfig的参数传入。约束说明无调用示例from npu_bridge.npu_init import * ... mem_config MemoryConfig(atomic_clean_policy0, static_memory_policy0) session_configtf.ConfigProto(allow_soft_placementTrue) config NPURunConfig(memory_configmem_config, session_configsession_config)【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考