Browse Source

disable x86 auto recip optimization for potential precision loss (#5762)

tags/20241226
nihui GitHub 1 year ago
parent
commit
c32442aa09
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 0 deletions
  1. +4
    -0
      CMakeLists.txt
  2. +5
    -0
      src/CMakeLists.txt

+ 4
- 0
CMakeLists.txt View File

@@ -517,6 +517,8 @@ else()

unset(CMAKE_REQUIRED_FLAGS)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_SIMULATE_ID MATCHES "MSVC" AND CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
check_cxx_compiler_flag("-mrecip=none" NCNN_COMPILER_SUPPORT_X86_RECIP_NONE)

check_cxx_compiler_flag("/arch:AVX" NCNN_COMPILER_SUPPORT_X86_AVX)

set(CMAKE_REQUIRED_FLAGS "/arch:AVX -mfma -mf16c")
@@ -543,6 +545,8 @@ else()

unset(CMAKE_REQUIRED_FLAGS)
else()
check_cxx_compiler_flag("-mrecip=none" NCNN_COMPILER_SUPPORT_X86_RECIP_NONE)

check_cxx_compiler_flag("-mavx" NCNN_COMPILER_SUPPORT_X86_AVX)

set(CMAKE_REQUIRED_FLAGS "-mfma -mf16c")


+ 5
- 0
src/CMakeLists.txt View File

@@ -403,6 +403,11 @@ if(NCNN_TARGET_ARCH STREQUAL "x86")
target_compile_options(ncnn PRIVATE -msimd128)
endif()
endif()

if(NCNN_COMPILER_SUPPORT_X86_RECIP_NONE)
# recip optimization causes precision loss
target_compile_options(ncnn PRIVATE -mrecip=none)
endif()
endif()

if(NOT NCNN_RUNTIME_CPU AND NCNN_AVX512)


Loading…
Cancel
Save