需求:把 float32 精度的 localtensor转换成 float16 精度,使用 Cast 转换后数据精度相差很大,如 12.1818 变成了-3.41211,我一直没找到问题在哪。
环境:社区版8.0.RC3.alpha003
核心代码如下:
LocalTensor<float> tem = inQueueTem.AllocTensor<float>();
DataCopy(tem, y32Global[i * tiling.N], align_num);
LocalTensor<half> xLocal = inQueueX.AllocTensor<half>();
Cast<half, float>(xLocal, tem, RoundMode::CAST_FLOOR, align_num); // align_num=272
DumpTensor(tem, 1, 16);
DumpTensor(xLocal, 2, 16);
打印结果如下:

需求:把 float32 精度的 localtensor转换成 float16 精度,使用 Cast 转换后数据精度相差很大,如 12.1818 变成了-3.41211,我一直没找到问题在哪。
环境:社区版8.0.RC3.alpha003
核心代码如下:
LocalTensor<float> tem = inQueueTem.AllocTensor<float>();
DataCopy(tem, y32Global[i * tiling.N], align_num);
LocalTensor<half> xLocal = inQueueX.AllocTensor<half>();
Cast<half, float>(xLocal, tem, RoundMode::CAST_FLOOR, align_num); // align_num=272
DumpTensor(tem, 1, 16);
DumpTensor(xLocal, 2, 16);
打印结果如下: