avx指令集判断的坑

(一)背景
项目中依赖算法同学编写的算法模块,他们在使用avx,sse指令集来提高速度,结果在一些机器上崩溃,导致项目无法发版。

我给他们说,我们项目中使用了谷歌的 libyuv 库,也使用了avx,sse指令加速,在各种环境下都是运行正常的。

后来发现他们对比了 libyuv 的判断指令集的代码发现,没有判断系统,网速搜索了一波,发现了这个文章:开源库中检测当前系统是否支持AVX指令集的一个坑 

也就是说,某些系统OS下是不支持的,需要单独判断。

(二)解决

1、判断avx的代码参考  libyuv 的方式来编写,不要自己写,有很多坑。这是发现的一处,可能还有更多的坑没有发现,毕竟libyuv是谷歌开发的开源库,并且十分稳定了。

2、因为算法有几次都因为各种原因导致不稳定,所以我们想了一个办法来解决这个通用的问题,不然每次软件发版都很害怕,一旦出问题了会很麻烦,用户用不了了,也无法升级。对用户体验是一次很大的伤害。我们的开发节奏也完全被打乱了,忙着去救火。

具体的方法是,我们开发了一个Demo的进程,假设就要Demo.exe吧。算法模块每次更新,我们先在Demo.exe中运行,不在我们主进程(用户真实使用的进程)运行,运行一段时间后,如果没有崩溃(崩溃后我们会上传dump供分析),我们就把算法模块给主进程使用。这个相当于在使用用户环境来预跑我们的算法模块。这样即便是算法模块再不稳定,也不会对用户产生实际的影响。

(三)其他

这个过程中因为涉及到指令集的问题,所以推动他们在不同指令集的机器上先验证,没有问题之后再给到我们项目中去使用,之前推动过一次,很难推动,这次他们这么不稳定,终于说服他们了,他们也采购了2台设备来覆盖测试了,虽然不一定完全覆盖全,但是至少风险是降低了不少,因为有些机器是必须崩溃的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值