You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用-mavx -mprefer-avx128仅优化单个函数并限定使用AVX128?

解决方案

要实现仅单个函数使用AVX128优化、其余代码不启用AVX的需求,正确的写法是将avx和prefer-avx128合并到同一个target属性中,具体代码如下:

__attribute__((target("avx,prefer-avx128")))
void f() {
    // 函数实现
}

之前尝试失败的原因:

  • 单独使用target("avx")时,编译器在支持AVX2的环境下会默认生成AVX2指令(AVX是AVX2的子集,编译器会优先选用更高效的指令集),因此你会看到AVX2相关代码。
  • 单独使用target("prefer-avx128")不合法,因为prefer-avx128是依赖AVX指令集的附加选项,必须先启用AVX才能生效。
  • 用optimize("prefer-avx128")无效,因为prefer-avx128不属于通用优化选项,它是目标指令集的控制参数,必须放在target属性中。

额外注意事项:

  • 编译全局代码时不要添加-mavx或相关AVX编译选项,确保只有标记了属性的函数启用AVX。
  • 该写法兼容GCC 5.0及以上版本,Clang也支持相同语法。

内容的提问来源于stack exchange,提问作者Kevin Meier

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 15:35:09