Skip to content

Building inside a aarch64 docker fails #4825

@mattip

Description

@mattip

Over at MacPython/openblas-libs#169 I am trying to compile aarch64 with DYNAMIC_ARCH=1 in a manylinux2014 docker by running

docker run --platform linux/aarch64 --rm -it quay.io/pypa/manylinux2014_aarch64 /bin/bash

and then running make.

So far I am seeing these problems:

  • When building without an explicit DYNAMIC_LIST, the build fails to compile the A64FX kernel:
../kernel/arm64/gemv_n_sve.c:43:18: error: ACLE function ‘svcntw’ requires ISA extension ‘sve’
    43 | #define SV_COUNT svcntw
       |                  ^~~~~~
 ../kernel/arm64/gemv_n_sve.c:62:25: note: in expansion of macro ‘SV_COUNT’
    62 |     uint64_t sve_size = SV_COUNT();
       |                         ^~~~~~~~
 ../kernel/arm64/gemv_n_sve.c:43:18: note: you can enable ‘sve’ using the command-line \
  option ‘-march’, or by using the ‘target’ attribute or pragma

since the A64FX kernel compilation does not set -march at all, and since the native architecture does not support SVE, the compilation fails.

  • With the command (all the kernels except A64FX in the dynamic list)
make BUFFERSIZE=20 DYNAMIC_ARCH=1 USE_OPENMP=0 NUM_THREADS=64 BINARY=64 \
   INTERFACE64=1 SYMBOLSUFFIX=64_ LIBNAMESUFFIX=64_ 
   OBJCONV=/openblas/objconv/objconv SYMBOLPREFIX=scipy_ LIBNAMEPREFIX=scipy_ \
   FIXED_LIBNAME=1 TARGET=ARMV8 \
   DYNAMIC_LIST="ARMV8 CORTEXA53 CORTEXA57 NEOVERSEN NEOVERSEV1 NEOVERSEN2 \
                 ARMV8SVE THUNDERX THUNDERX2T99 TSV110 EMAG8180 THUNDERX3T110"

I am getting this error which echos #3189

make[1]: Entering directory `/openblas/OpenBLAS/kernel'
make[1]: warning: -jN forced in submake: disabling jobserver mode.
cc -c -O2 -DSMALL_MATRIX_OPT -DMAX_STACK_ALLOC=2048 -DDYNAMIC_LIST -DDYN_ARMV8 -DDYN_ARMV8 -DDYN_CORTEXA53 -DDYN_CORTEXA57 -DDYN_NEOVERSEN -DDYN_NEOVERSEV1 -DDYN_NEOVERSEN2 -DDYN_ARMV8SVE -DDYN_THUNDERX -DDYN_THUNDERX2T99 -DDYN_TSV110 -DDYN_EMAG8180 -DDYN_THUNDERX3T110 -Wall -DF_INTERFACE_GFORT  -fPIC -DDYNAMIC_ARCH -DSMP_SERVER -DNO_WARMUP -DBUFFERSIZE=20 -DMAX_CPU_NUMBER=64 -DMAX_PARALLEL_NUMBER=1 -DBUILD_SINGLE=1 -DBUILD_DOUBLE=1 -DBUILD_COMPLEX=1 -DBUILD_COMPLEX16=1 -DVERSION=\"0.3.27.dev\" -UASMNAME -UASMFNAME -UNAME -UCNAME -UCHAR_NAME -UCHAR_CNAME -DASMNAME=samax_k_NEOVERSEN -DASMFNAME=samax_k_NEOVERSEN_ -DNAME=samax_k_NEOVERSEN_ -DCNAME=samax_k_NEOVERSEN -DCHAR_NAME=\"samax_k_NEOVERSEN_\" -DCHAR_CNAME=\"samax_k_NEOVERSEN\" -DNO_AFFINITY -DTS=_NEOVERSEN -I.. -DBUILD_KERNEL -DTABLE_NAME=gotoblas_NEOVERSEN -UDOUBLE  -UCOMPLEX -UCOMPLEX -UDOUBLE  -DUSE_ABS -UUSE_MIN \
    ../kernel/arm64/amax.S -o samax_k_NEOVERSEN.o
make[1]: *** No rule to make target `../kernel/arm64/amin.S', needed by `samin_k_NEOVERSEN.o'.  Stop.
make[1]: *** Waiting for unfinished jobs....
make[1]: Leaving directory `/openblas/OpenBLAS/kernel'
make: *** [libs] Error 1

Should I be cross-compiling instead, will that work better with DYNAMIC_ARCH=1?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions