Hi Damjan,
I got some feedback regarding switching default compiler from gcc to clang in 
VPP, from compiler team.

" Neither LLVM nor GCC tune much for Neoverse N1, I think the difference is 
that GCC has better vectorization and a better optimized AArch64 backend. GCC10 
has just been released and will likely do even better (it is now ~20% ahead of 
LLVM on SPEC)."

" I was looking at the roadmap for LLVM (which is the backend for clang). I see 
plans for tuning for Zeus and Perseus, but just support for N1. I think they 
fixed some alignment issues and replaced some intrinsics, but no specific N1 
tuning. LLVM is behind gcc in performance, by a decent amount."

I did some benchmarking on L2/L3 single flow throughput btw gcc-9.2.0 
(-march=armv8.2-a+crc+crypto -mtune=neoverse-n1) and clang-10 
(-mcpu=neoverse-n1). From the results below, gcc-9.2.0 gives better throughput 
number (about 4%) than clang-10.

clang-10:
L3: 11.04Mpps/10.99Mpps/11.02Mpps
L2: 11.55Mpps/11.56Mpps

gcc-9.2.0
L3: 11.61Mpps/11.55Mpps/11.59Mpps
L2: 12.15Mpps/12.16Mpps

Is it possible to restore gcc as the default compiler for vpp, or for vpp 
compiling on Arm CPU?
Is it possible to remove clang-9 dependency in Makefile, or make it applied for 
x86 only?
This dependency forces vpp compiling to use clang-9 always.

diff --git a/Makefile b/Makefile
ifeq ($(OS_VERSION_ID),18.04)
        DEB_DEPENDS += python-dev python-all python-pip python-virtualenv
        DEB_DEPENDS += libssl-dev
-       DEB_DEPENDS += clang-9
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-set(CMAKE_C_COMPILER_NAMES clang-10 clang-9 gcc-9 cc)
+set(CMAKE_C_COMPILER_NAMES gcc-9 cc)

Thanks.
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#16548): https://lists.fd.io/g/vpp-dev/message/16548
Mute This Topic: https://lists.fd.io/mt/73327785/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to