Skip to content

CMAKE - NVHCP fail on SVE builds #5139

@antoine-morvan

Description

@antoine-morvan

Hello,

I was building OpenBLAS 0.3.29 on a Grace CPU (neoverse V2) using the latest NVHPC tolchain (25.1).

I use the CMake build system, allong with the following flags & variables :

export CC=nvc
export CXX=nvc++
export FC=nvfortran

export ARCH_FLAGS="-tp=host"
export OPT_FLAGS="-O3"

export CFLAGS="${ARCH_FLAGS} ${OPT_FLAGS}"
export CXXFLAGS="${ARCH_FLAGS} ${OPT_FLAGS}"
export FCFLAGS="${ARCH_FLAGS} ${OPT_FLAGS}"
export FFLAGS="$FCFLAGS"
export F90LAGS="$FCFLAGS"
cmake \
    -Wno-dev \
    -G "Unix Makefiles" \
    -DCMAKE_BUILD_TYPE=Release \
    -DBUILD_SHARED_LIBS=ON \
    -DBUILD_STATIC_LIBS=ON \
    -DBUILD_BENCHMARKS=ON \
    -DDYNAMIC_ARCH=OFF \
    -DUSE_THREAD=ON -DUSE_OPENMP=ON \
    -DTARGET=ARMV8SVE \
    $OPENBLAS_DIR

CMake generates a Makefile, but at some point it fails during lapack build :

[ 23%] Building C object CMakeFiles/LAPACKE.dir/lapack-netlib/LAPACKE/src/lapacke_sbbcsd.c.o
$SYS_ROOT/Linux/rhel-9.4/aarch64/compilers/nvhpc/24.5/prefix/Linux_aarch64/24.5/compilers/bin/nvc  -I$HOME/test/nvhpc_openblas_repro/OpenBLAS-0.3.29/lapack-netlib/LAPACKE/include -tp=host -O3  -DHAVE_C11 -mp -DUSE_OPENMP -tp px -march=armv8-a+sve -fPIC -DGEMM_GEMV_FORWARD -DSMALL_MATRIX_OPT -DSMP_SERVER -DNO_WARMUP -DMAX_CPU_NUMBER=288 -DMAX_PARALLEL_NUMBER=1 -DMAX_STACK_ALLOC=2048 -DNO_AFFINITY -DVERSION="\"0.3.29\"" -DBUILD_SINGLE -DBUILD_DOUBLE -DBUILD_COMPLEX -DBUILD_COMPLEX16 -fast -O3 -DNDEBUG  -DHAVE_LAPACK_CONFIG_H -MD -MT CMakeFiles/LAPACKE.dir/lapack-netlib/LAPACKE/src/lapacke_sbbcsd.c.o -MF CMakeFiles/LAPACKE.dir/lapack-netlib/LAPACKE/src/lapacke_sbbcsd.c.o.d -o CMakeFiles/LAPACKE.dir/lapack-netlib/LAPACKE/src/lapacke_sbbcsd.c.o -c $HOME/test/nvhpc_openblas_repro/OpenBLAS-0.3.29/lapack-netlib/LAPACKE/src/lapacke_sbbcsd.c
nvc-Error-Switch -tp with unknown keyword armv8-a+sve
-tp=host|native|neoverse-n1|neoverse-v1|neoverse-v2
                    Select target processor
    host            Link native version of HPC SDK cpu math library
    native          Alias for -tp host
    neoverse-n1     Arm Neoverse N1 architecture
    neoverse-v1     Arm Neoverse V1 architecture (SVE x 256)
    neoverse-v2     Arm Neoverse V2 architecture (SVE x 128)
make[2]: *** [CMakeFiles/LAPACKE.dir/build.make:76: CMakeFiles/LAPACKE.dir/lapack-netlib/LAPACKE/src/lapacke_sbbcsd.c.o] Error 1

I suspect the arch for this compiler is not set properly.

I understand that the cmake builds are still experimental, just here to report the issue to improve support :)

Best.

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