谢谢指点,问题找到了,之前问题我可能没有说清楚,之前我是打算先通过cnrtMemcpy将数据放到mlu上然后再通过cnrtCastDataType将Float32的数据转成Float16。现在把这两个操作的顺序改了一下就可以了。但是为什么得这样操作的原因还是不太清楚。展开
额,还是那个段错误,有什么关于CNRT_FLOAT32转CNRT_FLOAT16的完整参考案例吗,如果是用float32的离线模型来推理我这边编完倒是没有问题,但用float16的离线模型进行推理,这边的修改、分配内存就不怎么清楚了。小白一枚。。展开
谢谢指点,问题找到了,之前问题我可能没有说清楚,之前我是打算先通过cnrtMemcpy将数据放到mlu上然后再通过cnrtCastDataType将Float32的数据转成Float16。现在把这两个操作的顺序改了一下就可以了。
但是为什么得这样操作的原因还是不太清楚。
CNRT_CHECK(cnrtCastDataType(reinterpret_cast展开(inputMluPtrS_temp[input_idx]), CNRT_FLOAT32, reinterpret_cast (inputMluPtrS[input_idx]),CNRT_FLOAT16, 416*416*3,nullptr));
您好,我想将inputMluPtrS_temp中的float32数据转成inputMluPtrS中的float16的数据以便进行半精度的离线推理。但在使用cnrtCastDataType的时候报错“段错误(核心已转储)”[图片]其中,inputMluPtrS_temp和inputMluPtrS的定义如下:inputSizeS的大小是416*416*3*2[图片]展开
您好,半精度类型在开发者手册中表达为HALF类型,关于数据类型的转化您可以参考《Utility — CNRT Developer Guide 4.10.0 documentation (cambricon.com)》。展开
您好,我想将inputMluPtrS_temp中的float32数据转成inputMluPtrS中的float16的数据以便进行半精度的离线推理。但在使用cnrtCastDataType的时候报错“段错误(核心已转储)”
其中,inputMluPtrS_temp和inputMluPtrS的定义如下:
inputSizeS的大小是416*416*3*2
请登录后评论