# MindSpore报错untimeError: Exceed function call depth limit 1000.

**1. 系统环境**

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

软件环境: MindSpore 版本: 1.9.0

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

Python 版本: 3.7.6

操作系统平台: linux

**2. 报错信息**

2.1 问题描述

在CPU平台上，调用GRU可以处理的数据的长度受限。

2.2 报错信息

```
RuntimeError: Exceed function call depth limit 1000, (function call depth: 1001, simulate call depth: 999).
It's always happened with complex construction of code or infinite recursion or loop.
Please check the code if it's has the infinite recursion or call 'context.set_context(max_call_depth=value)' to adjust this value.
If max_call_depth is set larger, the system max stack depth should be set larger too to avoid stack overflow.
For more details, please refer to the FAQ at https://www.mindspore.cn.
```

2.3 脚本信息

```
from mindspore import nn,Tensor
import numpy as np

net = nn.GRU(10, 16, 2, has_bias=True, batch_first=True, bidirectional=False)
x = Tensor(np.ones([3, 500, 10]).astype(np.float32)) #序列长度改成500就会报错
h0 = Tensor(np.ones([1 * 2, 3, 16]).astype(np.float32))
output, hn = net(x, h0)
print(output.shape)
```

**3. 根因分析**

CPU上该算子由小算子拼接实现，有个步骤需循环seq\_len次，在静态图模式下，会有复杂度过高的问题。或者使用动态图模式。

**4. 解决方案**

尝试1：设置为动态图模式

```
from mindspore import nn,Tensor
import numpy as np

ms.set_context(mode=ms.PYNATIVE_MODE)
net = nn.GRU(10, 16, 2, has_bias=True, batch_first=True, bidirectional=False)
x = Tensor(np.ones([3, 500, 10]).astype(np.float32)) #序列长度改成500就会报错
h0 = Tensor(np.ones([1 * 2, 3, 16]).astype(np.float32))
output, hn = net(x, h0)
print(output.shape)
```

尝试2：使用MindSpore2.0.0版本，默认是动态图模式。

