Skip to content

gcc support issue for dynamic arch on aarch64 #5665

@chargr

Description

@chargr

Building 0.3.31 on aarch64

gcc 9.3.0 with -DDYNAMIC_ARCH=ON

12b9fbdd3450: /build/OpenBLAS-0.3.31/utest/test_kernel_regress.c: In function '__ctest_kernel_regress_skx_avx_run':
12b9fbdd3450: /build/OpenBLAS-0.3.31/utest/test_kernel_regress.c:27:15: warning: variable 'info' set but not used [-Wunused-but-set-variable]
12b9fbdd3450: 27 |     int i, j, info;
12b9fbdd3450: |               ^~~~
12b9fbdd3450: [ 88%] Linking C executable openblas_utest
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: ../lib/libopenblas.a(dynamic_arm64.c.o): in function `gotoblas_corename':
12b9fbdd3450: dynamic_arm64.c:(.text+0x1f0): undefined reference to `gotoblas_NEOVERSEV1'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x1f4): undefined reference to `gotoblas_NEOVERSEV1'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x21c): undefined reference to `gotoblas_NEOVERSEN2'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x220): undefined reference to `gotoblas_NEOVERSEN2'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x248): undefined reference to `gotoblas_NEOVERSEN2'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x24c): undefined reference to `gotoblas_NEOVERSEN2'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x2cc): undefined reference to `gotoblas_ARMV8SVE'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x2d0): undefined reference to `gotoblas_ARMV8SVE'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x2f8): undefined reference to `gotoblas_A64FX'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x2fc): undefined reference to `gotoblas_A64FX'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x324): undefined reference to `gotoblas_ARMV8SVE'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: dynamic_arm64.c:(.text+0x328): undefined reference to `gotoblas_ARMV8SVE'
12b9fbdd3450: /home/utils/binutils-2.44/bin/ld: ../lib/libopenblas.a(dynamic_arm64.c.o): in function `force_coretype':

gcc 9.3.0 with -DTARGET=NEOVERSEV2

506a83c86ca5: CMake Error at cmake/system.cmake:357 (message):
506a83c86ca5: Compiler $/home/utils/gcc-9.3.0-3/bin/gcc 9.3.0 does not support Neoverse
506a83c86ca5: V2.
506a83c86ca5: Call Stack (most recent call first):
506a83c86ca5: CMakeLists.txt:125 (include)

Using a newer gcc that supports these CPUs resolves the original DYNAMIC_ARCH issue.

These optimizations should not be in use/disabled when DYNAMIC_ARCH is on and the compiler does not support them?
Or an additional check for gcc version?

EDIT: (Neoverse V2 might have been a bad example, same happens with the other that are actually reported in the output.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions