指令集差异导致gcc编译的可执行文件不兼容问题记录

问题场景:
①至强平台CPU:Intel® Xeon® Silver 4314 CPU @ 2.40GHz
②酷睿平台CPU:Intel® Core™ i5-12400 Processor
③锐龙平台CPU:AMD Ryzen 7 5700X 8-Core Processor
④酷睿平台CPU:Intel® Core™ i7-12650H Processor
代码主要涉及库opencv及pcl1.9,系统都是UBUNTU20.04

问题描述:
至强服务器①编译的可执行文件在酷睿平台②不兼容。
酷睿平台④编译的可执行文件在锐龙平台③不兼容。

打印指令集

lscpu | grep -E "Model name|Flags" | sed -e 's/\(avx[^ ]*\)/\x1b[1;31m\1\x1b[0m/g' -e 's/\(sse[^ ]*\)/\x1b[1;32m\1\x1b[0m/g'

在这里插入图片描述
请添加图片描述
可知,至强相较于12代酷睿平台多支持了AVX_***指令集,12代酷睿仅支持avx和avx2。
解决办法:注释pcl关于AVX指令集的宏可解决至强和12代酷睿不兼容的问题;AMD和INTEL的差异没有验证。

在这里插入图片描述
请添加图片描述

参考资料:
Intel & AMD 指令集之间的差异:https://markyangcc.github.io/Intel_AMD_ISA_difference/
禁用AVX:https://github.com/PointCloudLibrary/pcl/issues/4554
https://www.coder.work/article/6215131

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值