# MindSpore 静态图网络编译使用编译缓存或者vmap优化性能

**1. 系统环境**

硬件环境\(Ascend/GPU/CPU\): Ascend/GPU/CPU

软件环境: MindSpore 版本: 2.2.10

执行模式（静态图/动态图）： 不限

Python 版本: 3.8

操作系统平台: linux

**2. 静态图网络编译性能优化**

静态图模式又被称为Graph模式，在Graph模式下，基于图优化、计算图整图下沉等技术，编译器可以针对图进行全局的优化，获得较好的性能，因此比较适合网络固定且需要高性能的场景。

**3. 静态图网络编译性能优化的方法**

1. 使用HyperMap优化编译性能

2. 使用Select算子优化编译性能

3. 使用编译缓存优化编译性能

4. 使用vmap优化编译性能

**4. 使用编译缓存优化编译性能**

编译缓存的本质是存储了网络模型的编译中间过程文件，当网络模型不变时，中间过程文件可以复用。复用方法就是在代码中用enable\_compile\_cache进行控制。

enable\_compile\_cache支持三个后端：Ascend GPU CPU

使用方法是：

```
from mindspore import context
context.set_context(enable_compile_cache=True, compile_cache_path="./cache.ms")
enable_compile_cache (bool) - 表示是否加载或者保存前端编译的图。
```

当 enable\_compile\_cache 被设置为True时，在第一次执行的过程中，一个硬件无关的编译缓存会被生成并且导出为一个MINDIR文件。

当该网络被再次执行时，如果 enable\_compile\_cache 仍然为True并且网络脚本没有被更改，那么这个编译缓存会被加载

。注意目前只支持有限的Python脚本更改的自动检测，这意味着可能有正确性风险。默认值： False 。这是一个实验特性，可能会被更改或者删除。

