[VL][ARM] Centos8/ARM velox build fails with gcc-11 when run on graviton that supports neoverse-v2
- Dominant language
- Scala
- Stars
- 1.6k
- Forks
- 657
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 80
Description
### Problem description
With Centos8 on ARM (graviton) I am unable to build the latest version of gluten/velox because the velox code hardcodes `-mcpu=neoverse-v2`: https://github.com/facebookincubator/velox/blob/c39e1dd1ac8f987d244c509ce3620d8c8a9355d6/scripts/setup-helper-functions.sh#L161
when it detects that it can run on this cpu.
The problem is that centos8 gcc is 11.2.1, which does not have support for neoverse-v2. I have tried to upgrade to gcc-13 (https://github.com/gcc-mirror/gcc/commit/14d4b4fb12041dde1511262b926662929196c3fe), but that's been very difficult with the current centos8 setup. Is there a simple mitigation here that doesn't involve trying to build on centos9?
### System information
### CMake log
```bash
-- Build files have been written to: /work/ep/build-velox/build/velox_ep/_build/release
make[1]: Leaving directory '/work/ep/build-velox/build/velox_ep'
make[1]: Entering directory '/work/ep/build-velox/build/velox_ep'
cmake --build _build/release -j 2
[1/676] [FLEX][TypeParserScanner] Building scanner with flex 2.6.1
/work/ep/build-velox/build/velox_ep/velox/type/parser/TypeParser.ll:58: warning, -s option given but default rule can be matched
[2/676] [FLEX][TypeCalculationScanner] Building scanner with flex 2.6.1
/work/ep/build-velox/build/velox_ep/velox/expression/type_calculation/TypeCalculation.ll:38: warning, -s option given but default rule can be matched
[3/676] [BISON][TypeParser] Building parser with bison 3.0.4
[4/676] [BISON][TypeCalculationParser] Building parser with bison 3.0.4
[5/676] [FLEX][SignatureParserScanner] Building scanner with flex 2.6.1
/work/ep/build-velox/build/velox_ep/velox/expression/signature_parser/SignatureParser.ll:55: warning, -s option given but default rule can be matched
[6/676] [BISON][SignatureParser] Building parser with bison 3.0.4
[7/676] Building CXX object velox/tpch/gen/dbgen/CMakeFiles/dbgen.dir/dbgen.cpp.o
FAILED: velox/tpch/gen/dbgen/CMakeFiles/dbgen.dir/dbgen.cpp.o
/usr/bin/ccache /opt/rh/gcc-toolset-11/root/usr/bin/c++ -DDBNAME=dss -DGFLAGS_IS_A_DLL=0 -DMAC -DORACLE -DTPCH -DVELOX_DISABLE_GOOGLETEST -DVELOX_ENABLE_ABFS -DVELOX_ENABLE_GCS -DVELOX_ENABLE_HDFS -DVELOX_ENABLE_PARQUET -DVELOX_ENABLE_S3 -I/work/ep/build-velox/build/velox_ep/. -I/work/ep/build-velox/build/velox_ep/velox/external/xxhash -I/work/ep/build-velox/build/velox_ep/velox/tpch/gen/dbgen/include -isystem /work/dev/vcpkg/vcpkg_installed/arm64-linux-neon/include -isystem /work/ep/build-velox/build/velox_ep/velox -isystem /work/ep/build-velox/build/velox_ep/velox/external -Wno-error=stringop-overflow -Wno-error=cpp -Wno-missing-field-initializers -mcpu=neoverse-v2 -D USE_VELOX_COMMON_BASE -D HAS_UNCAUGHT_EXCEPTIONS -fsigned-char -DFOLLY_CFG_NO_COROUTINES -Wall -Wextra -Wno-unused -Wno-unused-parameter -Wno-sign-compare -Wno-ignored-qualifiers -Wno-implicit-fallthrough -Wno-class-memaccess -Wno-comment -Wno-int-in-bool-context -Wno-redundant-move -Wno-array-bounds -Wno-maybe-uninitialized -Wno-unused-result -Wno-format-overflow -Wno-strict-aliasing -Werror -O3 -DNDEBUG -std=gnu++17 -fPIC -fdiagnostics-color=always -w -MD -MT velox/tpch/gen/dbgen/CMakeFiles/dbgen.dir/dbgen.cpp.o -MF velox/tpch/gen/dbgen/CMakeFiles/dbgen.dir/dbgen.cpp.o.d -o velox/tpch/gen/dbgen/CMakeFiles/dbgen.dir/dbgen.cpp.o -c /work/ep/build-velox/build/velox_ep/velox/tpch/gen/dbgen/dbgen.cpp
cc1plus: error: unknown value ‘neoverse-v2’ for ‘-mcpu’
cc1plus: note: valid arguments are: cortex-a34 cortex-a35 cortex-a53 cortex-a57 cortex-a72 cortex-a73 thunderx thunderxt88p1 thunderxt88 octeontx octeontx81 octeontx83 thunderxt81 thunderxt83 emag xgene1 falkor qdf24xx exynos-m1 phecda thunderx2t99p1 vulcan thunderx2t99 cortex-a55 cortex-a75 cortex-a76 cortex-a76ae cortex-a77 cortex-a78 cortex-a78ae cortex-a78c cortex-a65 cortex-a65ae cortex-x1 ares neoverse-n1 neoverse-e1 octeontx2 octeontx2t98 octeontx2t96 octeontx2t93 octeontx2f95 octeontx2f95n octeontx2f95mm a64fx tsv110 thunderx3t110 zeus neoverse-v1 saphira neoverse-n2 cortex-a57.cortex-a53 cortex-a72.cortex-a53 cortex-a73.cortex-a35 cortex-a73.cortex-a53 cortex-a75.cortex-a55 cortex-a76.cortex-a55 cortex-r82 generic; did you mean ‘neoverse-v1’?
[8/676] Running PROTO compiler
ninja: build stopped: subcommand failed.
make[1]: *** [Makefile:110: build] Error 1
make[1]: Leaving directory '/work/ep/build-velox/build/velox_ep'
make: *** [Makefile:117: release] Error 2
```
Contributor guide
Research direction
Start with Velox's scripts/setup-helper-functions.sh at the referenced line where -mcpu=neoverse-v2 is selected, then review the CMake build command and failure in the issue. Reproduce the build on CentOS8/ARM with GCC 11.2.1; done means the build no longer passes an unsupported CPU value and completes successfully on that environment.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp, linux
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100