问题场景:
①至强平台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