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

Ubuntu下用Clang通过CMake构建支持AVX指令集项目的方案问询

Ubuntu下使用Clang+CMake构建支持AVX指令集的ONNX Runtime项目

前置检查

  1. 确认CPU硬件支持目标AVX指令集:执行lscpu | grep -E 'avx|avx2|avx512'验证硬件支持情况。
  2. 安装适配的Clang版本:Ubuntu下可通过sudo apt install clang clang++安装,推荐使用Clang 14+版本以获得完善的AVX512支持。

调整CMake配置

在项目的CMakeLists.txt中添加以下配置,确保Clang正确启用AVX指令集编译:

# 开启ONNX Runtime的AVX系列指令集选项
option(onnxruntime_USE_AVX "Enable AVX instructions" ON)
option(onnxruntime_USE_AVX2 "Enable AVX2 instructions" ON)
option(onnxruntime_USE_AVX512 "Enable AVX512 instructions" ON)

# 针对Clang设置编译与链接参数
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
    set(CPU_INSTRUCTION_FLAGS "")
    if(onnxruntime_USE_AVX)
        list(APPEND CPU_INSTRUCTION_FLAGS "-mavx")
    endif()
    if(onnxruntime_USE_AVX2)
        list(APPEND CPU_INSTRUCTION_FLAGS "-mavx2" "-mfma")
    endif()
    if(onnxruntime_USE_AVX512)
        list(APPEND CPU_INSTRUCTION_FLAGS "-mavx512f" "-mavx512skx")
    endif()
    add_compile_options(${CPU_INSTRUCTION_FLAGS})
    add_link_options(${CPU_INSTRUCTION_FLAGS})
endif()

构建命令

清理旧构建缓存并执行CMake构建,明确指定Clang为编译器:

# 创建并进入构建目录
rm -rf build && mkdir build && cd build

# 配置CMake,指定编译器与指令集参数
CC=clang CXX=clang++ cmake .. \
    -DCPU_BASELINE=AVX512_SKX \
    -Donnxruntime_USE_AVX=ON \
    -Donnxruntime_USE_AVX2=ON \
    -Donnxruntime_USE_AVX512=ON

# 并行加速构建
make -j$(nproc)

验证指令集生效

使用objdump检查生成的二进制文件是否包含AVX系列指令:

# 检查AVX/AVX2特征指令
objdump -d path/to/your/onnxruntime_binary | grep -E 'vmovups|vaddps|vmulps'

# 检查AVX512特征指令
objdump -d path/to/your/onnxruntime_binary | grep -E 'vmovdqa64|vaddpsz|vpbroadcastd'

注意事项

  • 若指定CPU_BASELINE=DETECT,CMake会自动检测当前CPU支持的最高指令集,但需确保Clang的检测逻辑正常工作。
  • 若构建后仍未生成AVX指令,可通过cmake .. -LAH查看所有生效的CMake变量,检查ONNX Runtime内部配置是否覆盖了自定义编译参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:35:20