报错:CPU指令集的问题

bug描述

我在运行CMAQ中的icon时,遇到bug:

Please verify that both the operating system and the processor support Intel(R) X87, CMOV, MMX, FXSAVE, SSE, SSE2, SSE3, SSSE3, SSE4_1, SSE4_2, POPCNT and AVX instructions.

解决办法

经过查询,是因为:
我使用的超算平台是基于AMD自研的CPU,不支持-xHost,而我的icon是通过ifort编译的,只用了-xHost,因此不兼容。

(1)通过命令

grep -i xhost * -r

去找到使用xhost命令的编译文件

(2)重新编译,我将我的编译代码从:

set FSTD       = "${myFSTD}"

改为了

set FSTD       = "-O3 -fno-alias -mp1 -fp-model source -ftz -simd -align all -march=core-avx2 -vec-guard-write -unroll-aggressive"

注:
如果还是不行,兼容不了,就用:

set FSTD       = "-O3 -fno-alias -mp1 -fp-model source -ftz -simd -align all -march=core-avx -vec-guard-write -unroll-aggressive"

甚至更保守的:

set FSTD       = "-O3 -fno-alias -mp1 -fp-model source -ftz -simd -align all -msse4.2 -vec-guard-write -unroll-aggressive"

编译完就可以成功运行了。

说明:

-xHost:
这是Intel编译器特有的选项。
它会自动检测当前编译机器的CPU,并为该特定CPU生成最优化的代码。
优点:可以充分利用编译机器CPU的所有特性。
缺点:生成的可执行文件可能无法在不同架构的CPU上运行,或运行效率降低。

-march=core-avx2:
这是一个更通用的选项,被多种编译器支持(如GCC、Clang和Intel编译器)。
它指定了目标架构为支持AVX2指令集的CPU。
优点:生成的可执行文件可以在所有支持AVX2的CPU上运行,提供了更好的可移植性。
缺点:可能无法利用编译机器CPU的一些特殊优化或更新的指令集。

如果再到AMD平台编译软件,而且使用的ifort,可以使用-march=core-avx2提高兼容性。
当然,还有个办法就是,都使用GCC编译器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我锐多宝

请我喝杯啤酒吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值