由于float16数据类型本身存在精度限制,详情请参见Link,所以在进行算子实现时,可将入参中float16类型的数据转换成float32类型进行计算,用高精度数据进行中间计算来提升精度,从而提升最终结果的精度。当中间计算过程较为复杂时,此方法精度提升效果比较明显。 示例:实现res=x * y。 在算子计算之前,若输入数据x、y为fp16的数据类型,则将其转换为fp32类型,计算完成后,将结果数据res转换成原始数据类型fp16,算子代码示例如下所示: dtype = data_x.dtype if dtype == "float16": data_x = tbe.dsl.cast