# 使用mint.arctan2在图模式下报错RuntimeError: Compile graph kernel\_graph0 failed.

**1. 系统环境**

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

软件环境: MindSpore 版本: 2.4.0

执行模式： 不限

Python 版本: 3.9

操作系统平台: linux

**2. 报错信息**

2.1 问题描述

使用mint.arctan2接口在mindspore.GRAPH\_MODE静态图模式时运行出错。

2.2 报错信息

```
RuntimeError: Compile graph kernel_graph0 failed.
```

2.3 脚本信息

```
import mindspore as ms
from mindspore import mint, Tensor, value_and_grad
import numpy as np

ms.set_context(mode=ms.GRAPH_MODE)
input_data = np.array([0, 1])
other_data = np.array([1, 1])
ms_input = Tensor(input_data, ms.float32)
ms_other = Tensor(other_data, ms.float32)

def forward_ms(x, y):
    return mint.arctan2(x, y)

# Gradients for MindSpore
grad_fn = value_and_grad(forward_ms)
output_ms, gradient_ms = grad_fn(ms_input, ms_other)

# 打印输出和梯度
print("MindSpore output:", output_ms)
print("MindSpore gradient:", gradient_ms)
```

**3. 根因分析**

上述代码中其实走的仍然是动态图的模式，设置了ms.set\_context\(mode=ms.GRAPH\_MODE\)后，是让nn.Cell对象或者其子类的construct方法中的代码走静态图，如果不在construct中，依旧是动态图模式。

**4. 解决方案**

那么可以用mindspore.jit把代码包起来，让不在consruct的代码也按照静态图模式执行，比如在forward\_ms加上mindspore.jit标注；

上面的错误是在未执行unset RANK\_TABLE\_FILE把RANK\_TABLE\_FILE环境变量去掉的情况下造成的，那么需要先执行了unset RANK\_TABLE\_FILE之后运行。

