解决 UnixBench 在 x86-64-v1 CPU 上 Whetstone 报错 (Illegal Instruction) 的问题

最近在一台较老架构的服务器上运行 UnixBench 6.0.0 做性能测试时,遇到了一个典型问题:
Dhrystone 正常运行,但 Whetstone 直接报错退出。

经过排查,最终确认是 CPU 指令集与编译参数不匹配 导致的。


一、问题现象

运行 UnixBench 时,日志显示:

sql 复制代码
Double-Precision Whetstone -- 1 copy

# ERROR: command returned status 33792

进一步计算:

ini 复制代码
33792 / 256 = 132

在 Linux 中:

ini 复制代码
Exit Code 132 = SIGILL
Illegal Instruction

这意味着:

程序执行了 CPU 不支持的指令。


二、确认 CPU 指令集

通过 /proc/cpuinfo 查看 CPU flags:

bash 复制代码
cat /proc/cpuinfo | grep flags

结果:

markdown 复制代码
flags : fpu de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
        clflush mmx fxsr sse sse2 ht syscall nx lm rep_good nopl cpuid
        extd_apicid tsc_known_freq pni cx16 x2apic hypervisor lahf_lm
        cmp_legacy 3dnowprefetch vmmcall

可以看到 CPU 只支持:

指令集 支持情况
SSE4
AVX
AVX2

这说明 CPU 实际属于:

复制代码
x86-64-v1

三、问题根本原因

查看 UnixBench 的 Makefile 发现:

ini 复制代码
OPTON += -march=native -mtune=native

-march=native 会根据 编译机器 CPU 自动启用高级指令集

如果编译机器支持:

  • SSE4
  • AVX
  • AVX2

编译出的程序就会包含这些指令。

但当前服务器只支持:

复制代码
SSE2 / SSE3

因此在运行 whetstone-double 时就会出现:

复制代码
Illegal Instruction

四、解决方案

需要修改 Makefile 的编译优化参数

打开 Makefile:

复制代码
vi Makefile

找到:

ini 复制代码
OPTON += -march=native -mtune=native

修改为:

ini 复制代码
OPTON += -march=x86-64 -mtune=generic

这样只会使用:

  • SSE2
  • 通用 x86_64 指令

兼容 x86-64-v1 CPU


五、重新编译 UnixBench

清理旧编译文件:

go 复制代码
make clean

重新编译:

go 复制代码
make

如果编译成功,会看到类似输出:

ini 复制代码
cc -o pgms/arithoh -Wall -pedantic -O3 -ffast-math -march=x86-64 -mtune=generic...

六、运行 Benchmark

执行:

复制代码
./Run

即可正常运行全部 benchmark

相关推荐
H_unique2 天前
博客接口自动化测试--搭建测试环境&库的介绍&安装allure
python·pytest·测试
bluceli3 天前
前端测试实战指南:构建高质量代码的完整体系
前端·测试
埋头编程~4 天前
【测试报告】网页端博客系统
功能测试·压力测试·性能测试·测试
0和1的舞者4 天前
高并发论坛系统:单元测试 + 接口自动化 + 性能测试 + CI/CD 全链路测试报告
java·测试开发·测试工具·jmeter·pytest·测试·测试报告
独断万古他化4 天前
Python+Pytest 搭建博客系统接口自动化测试框架(全用例执行+完整代码)
pytest·接口自动化·测试·allure·requests
在坚持一下我可没意见5 天前
软件测试入门复习笔记:BUG篇
笔记·bug·测试
历知辛5 天前
Antd Select 下拉框在 Playwright 中点击选项后不关闭
测试
智擎软件测评小祺6 天前
信创产品评估测试报告怎么办理?权威机构怎么选?
测试·信创·第三方检测·产品评估测试·信创产品评估测试
智擎软件测评小祺6 天前
信创产品评估测试都测什么?企业需要准备哪些材料?
测试·信创·信创产品评估·第三方软件测评·软件测评·产品评估测试