ncnn 如何强制fallback到naive而不是x86加速?

mi7gmzs6  于 4个月前  发布在  其他
关注(0)|答案(4)|浏览(57)

在binaryop的pow算子上,用CPU跑模型,某些特殊的数值在算x**2的时候出现inf。并不像数据溢出,因为并不是小的值会出现这种情况。

比如:
上面是x,下面是x**2,有些值正常,有些值不正常,都去到e38了。

该层的参数如下:

目前workaround就是用vulkan跑,用vulkan确认是正常的。不知道目前是naive实现有问题还是x86加速的问题,我觉得是后者。所以说,ncnn有没有参数,可以对该模型实例强制用naive实现而不是x86呢?谢谢

zqry0prt

zqry0prt1#

哦, 发现只要是负数求pow就是inf。这个在issue也找到了。
#2139
@nihui 大佬,这个可以修复吗?

eeq64g8w

eeq64g8w2#

或许可以通过增加平方算子解决?对负数求pow实现起来比较困难吧,而且也会影响正数求解的速度,感觉加一个平方算子更简单。

lqfhib0f

lqfhib0f3#

哦, 发现只要是负数求pow就是inf。这个在issue也找到了。
#2139
@nihui 大佬,这个可以修复吗?

你最后是怎么解决的呀

ct2axkht

ct2axkht4#

哦, 发现只要是负数求pow就是inf。这个在issue也找到了。
#2139
@nihui 大佬,这个可以修复吗?

你最后是怎么解决的呀

没有解决,就用GPU跑。我是希望可以像vulkan那样,可以随意开关。

相关问题