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

GCC与Clang生成Intel DL Boost bfloat16指令的编译选项是什么?

问题:如何让GCC/Clang生成Intel DL Boost的bfloat16硬件指令?

测试代码

#include <stdfloat>

std::bfloat16_t foo(std::float32_t f)
{
    return f;
}

当前GCC生成的汇编(软件实现)

foo(_Float32):
        sub     rsp, 8
        call    __truncsfbf2
        add     rsp, 8
        ret

其中call __truncsfbf2对应libgcc中的软件实现(libgcc/soft-fp/truncsfbf2.c)。

背景信息

  • bfloat16指令是Intel DL Boost技术的组成部分
  • DL Boost特性首次在Cascade Lake架构中推出

问题描述

针对Cascade Lake架构编译时,预期生成Intel DL Boost的VCVT...系列bfloat16硬件指令,但已尝试添加-march=cascadelake选项后,GCC仍生成软件实现的调用。需要明确GCC和Clang分别需要设置哪些选项才能生成硬件指令。


GCC 所需编译选项

除了指定目标架构-march=cascadelake,还需添加**-mfloat16-hardware**选项,该选项会启用硬件加速的bfloat16指令生成,前提是目标架构支持DL Boost(Cascade Lake及以上)。

完整编译命令示例:

g++ -march=cascadelake -mfloat16-hardware your_code.cpp

注意:-mfloat16-hardware选项仅在GCC 11及以上版本支持,若使用旧版GCC需先升级编译器。

Clang 所需编译选项

Clang在指定支持DL Boost的架构时会自动启用bfloat16硬件指令生成,直接使用:

clang++ -march=cascadelake your_code.cpp

若需显式控制,也可配合-mavx512bf16选项(DL Boost的bfloat16指令属于AVX512BF16扩展):

clang++ -march=cascadelake -mavx512bf16 your_code.cpp

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:53:22