discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Building gnuradio and hooking into neonv8


From: Johannes Demel
Subject: Re: Building gnuradio and hooking into neonv8
Date: Tue, 2 Jun 2020 09:45:04 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0

Hi John,

VOLK tries to figure out the correct flags for you. We run CI tests for aarch64, so these seem to work. Unless you have a good reason to set compiler flags, I'd recommend to stick with what CMake detects for you.

The line `-- CPU is armv8, Overruled arch neonv7` tells you that armv8 was detected. Thus, we disable neonv7 and enable neonv8 if the compiler supports it. On another system you'd see the inverse. We had a discussion if it would be reasonable to enable both archs and select the correct one during runtime but apparently you either have one arch or the other, never both.

Cheers
Johannes

On 30.05.20 14:56, John Langworthy wrote:
Hi Ron,

Just seen your last. I had written this before you sent it, but thought worth sharing anyway....

Building volk with that toolchain does fail, see directly below. See also further down, cmake output from volk without it (which is successful).

(gr_py36) pi@raspberry:~/volk/build$ cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=~/.conda/envs/gr_py36/python3/bin -DCMAKE_TOOLCHAIN_FILE=../cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake ../

-- The C compiler identification is GNU 7.5.0

-- The CXX compiler identification is GNU 7.5.0

-- Check for working C compiler: /usr/bin/gcc

-- Check for working C compiler: /usr/bin/gcc -- broken

CMake Error at /usr/share/cmake-3.10/Modules/CMakeTestCCompiler.cmake:52 (message):

   The C compiler

     "/usr/bin/gcc"

   is not able to compile a simple test program.

   It fails with the following output:

     Change Dir: /home/pi/volk/build/CMakeFiles/CMakeTmp

     Run Build Command:"/usr/bin/make" "cmTC_ba179/fast"

    /usr/bin/make -f CMakeFiles/cmTC_ba179.dir/build.make CMakeFiles/cmTC_ba179.dir/build

     make[1]: Entering directory '/home/pi/volk/build/CMakeFiles/CMakeTmp'

     Building C object CMakeFiles/cmTC_ba179.dir/testCCompiler.c.o

    /usr/bin/gcc   -march=armv8-a -mtune=cortex-a72 -mfpu=neon-fp-armv8 -mfloat-abi=hard    -o CMakeFiles/cmTC_ba179.dir/testCCompiler.c.o   -c /home/pi/volk/build/CMakeFiles/CMakeTmp/testCCompiler.c

     gcc: error: unrecognized command line option ‘-mfpu=neon-fp-armv8’

     gcc: error: unrecognized command line option ‘-mfloat-abi=hard’

    CMakeFiles/cmTC_ba179.dir/build.make:65: recipe for target 'CMakeFiles/cmTC_ba179.dir/testCCompiler.c.o' failed

     make[1]: *** [CMakeFiles/cmTC_ba179.dir/testCCompiler.c.o] Error 1

     make[1]: Leaving directory '/home/pi/volk/build/CMakeFiles/CMakeTmp'

     Makefile:126: recipe for target 'cmTC_ba179/fast' failed

     make: *** [cmTC_ba179/fast] Error 2

   CMake will not be able to correctly generate this project.

Call Stack (most recent call first):

   CMakeLists.txt:23 (project)

-- Configuring incomplete, errors occurred!

Without the toolchain, I get:

(gr_py36) pi@raspberry:~/volk/build$ cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=~/.conda/envs/gr_py36/bin/python3.6 ../

-- Build type set to Release.

-- Extracting version information from git describe...

--

-- Python checking for python >= 3.4

-- Python checking for python >= 3.4 - found

--

-- Python checking for mako >= 0.4.2

-- Python checking for mako >= 0.4.2 - found

-- Looking for C++ include filesystem

-- Looking for C++ include filesystem - not found

-- Looking for C++ include experimental/filesystem

-- Looking for C++ include experimental/filesystem - found

-- Performing Test CXX_FILESYSTEM_NO_LINK_NEEDED

-- Performing Test CXX_FILESYSTEM_NO_LINK_NEEDED - Failed

-- Performing Test CXX_FILESYSTEM_STDCPPFS_NEEDED

-- Performing Test CXX_FILESYSTEM_STDCPPFS_NEEDED - Success

-- Looking for aligned_alloc

-- Looking for aligned_alloc - found

-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1")

-- Checking for module 'orc-0.4 > 0.4.11'

--   No package 'orc-0.4' found

-- orc files (missing: ORC_LIBRARY ORC_INCLUDE_DIR ORCC_EXECUTABLE)

-- Found Doxygen: /usr/bin/doxygen (found version "1.8.13") found components:  doxygen missing components:  dot

-- QA Testing is enabled.

--   Modify using: -DENABLE_TESTING=ON/OFF

-- System profiling is disabled.

--   Modify using: -DENABLE_PROFILING=ON/OFF

-- Looking for cpuid.h

-- Looking for cpuid.h - not found

-- Looking for intrin.h

-- Looking for intrin.h - not found

-- Looking for fenv.h

-- Looking for fenv.h - found

-- Looking for dlfcn.h

-- Looking for dlfcn.h - found

-- Compiler name: GNU

-- Performing Test HAVE_WERROR_UNUSED_CMD_LINE_ARG

-- Performing Test HAVE_WERROR_UNUSED_CMD_LINE_ARG - Failed

-- Performing Test have_mfloat_abi_softfp

-- Performing Test have_mfloat_abi_softfp - Failed

-- Performing Test have_mfloat_abi_hard

-- Performing Test have_mfloat_abi_hard - Failed

-- Performing Test have_funsafe_math_optimizations

-- Performing Test have_funsafe_math_optimizations - Success

-- Performing Test have_mfpu_neon

-- Performing Test have_mfpu_neon - Failed

-- Performing Test have_m32

-- Performing Test have_m32 - Failed

-- Performing Test have_m64

-- Performing Test have_m64 - Failed

-- Performing Test have_m3dnow

-- Performing Test have_m3dnow - Failed

-- Performing Test have_msse4_2

-- Performing Test have_msse4_2 - Failed

-- Performing Test have_mpopcnt

-- Performing Test have_mpopcnt - Failed

-- Performing Test have_mmmx

-- Performing Test have_mmmx - Failed

-- Performing Test have_mfma

-- Performing Test have_mfma - Failed

-- Performing Test have_msse

-- Performing Test have_msse - Failed

-- Performing Test have_msse2

-- Performing Test have_msse2 - Failed

-- Performing Test have_msse3

-- Performing Test have_msse3 - Failed

-- Performing Test have_mssse3

-- Performing Test have_mssse3 - Failed

-- Performing Test have_msse4a

-- Performing Test have_msse4a - Failed

-- Performing Test have_msse4_1

-- Performing Test have_msse4_1 - Failed

-- Performing Test have_mavx

-- Performing Test have_mavx - Failed

-- Performing Test have_mavx2

-- Performing Test have_mavx2 - Failed

-- Performing Test have_mavx512f

-- Performing Test have_mavx512f - Failed

-- Performing Test have_mavx512cd

-- Performing Test have_mavx512cd - Failed

-- Architecture is not x86 or x86_64, Overruled arch 3dnow

-- Architecture is not x86 or x86_64, Overruled arch mmx

-- Architecture is not x86 or x86_64, Overruled arch sse

-- Architecture is not x86 or x86_64, Overruled arch sse2

-- Architecture is not x86 or x86_64, Overruled arch sse3

-- Architecture is not x86 or x86_64, Overruled arch ssse3

-- Architecture is not x86 or x86_64, Overruled arch sse4_a

-- Architecture is not x86 or x86_64, Overruled arch sse4_1

-- Architecture is not x86 or x86_64, Overruled arch sse4_2

-- Architecture is not x86 or x86_64, Overruled arch avx

-- Architecture is not x86 or x86_64, Overruled arch avx512f

-- Architecture is not x86 or x86_64, Overruled arch avx512cd

-- Performing Test neon_compile_result

-- Performing Test neon_compile_result - Success

-- Performing Test have_neonv7_result

-- Performing Test have_neonv7_result - Failed

-- Performing Test have_neonv8_result

-- Performing Test have_neonv8_result - Success

-- Compiler doesn't support neonv7, Overruled arch neonv7

-- ORC support not found, Overruled arch orc

-- Available architectures: generic;neon;neonv8;norc

-- Available machines: generic;neon;neonv8

-- BUILD TYPE = RELEASE

-- Base cflags = -O3 -DNDEBUG  -fcx-limited-range -Wall

-- BUILD INFO ::: generic ::: GNU ::: -O3 -DNDEBUG  -fcx-limited-range -Wall

-- BUILD INFO ::: neon ::: GNU ::: -O3 -DNDEBUG  -fcx-limited-range -Wall -funsafe-math-optimizations

-- BUILD INFO ::: neonv8 ::: GNU ::: -O3 -DNDEBUG  -fcx-limited-range -Wall -funsafe-math-optimizations -funsafe-math-optimizations

-- Compiler Version: cc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0

Copyright (C) 2017 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

-- The ASM compiler identification is GNU

-- Found assembler: /usr/bin/cc

-- c flags:  -fcx-limited-range -Wall;

-- asm flags:

-- c flags:  -fcx-limited-range -Wall;

-- asm flags:

-- Did not find liborc and orcc, disabling orc support...

-- Loading version 2.3 into constants...

-- Using install prefix: /usr/local

-- Configuring done

-- Generating done

-- Build files have been written to: /home/pi/volk/build

*From: *Ron Economos <mailto:w6rz@comcast.net>
*Sent: *30 May 2020 11:48
*To: *discuss-gnuradio@gnu.org <mailto:discuss-gnuradio@gnu.org>
*Subject: *Re: Building gnuradio and hooking into neonv8

It's selecting neonv8, but you can do better. Since you're compiling from source, you can use a newer version of volk (which detects ARM CPU type better).

cd gnuradio/volk

git checkout v2.3.0

Then use this RPi4 specific cmake invocation. Be sure to delete the contents of your build directory first.

cmake -DCMAKE_TOOLCHAIN_FILE=../volk/cmake/Toolchains/arm_cortex_a72_hardfp_native.cmake ../

Give it a try and post your cmake result.

Also, you should install orc. Some kernels can be faster with orc.

sudo apt-get install liborc-0.4-dev

Ron

On 5/30/20 03:06, John Langworthy wrote:

    Hi,

    I am trying to build gnuradio 3.8.10 on a raspberry pi 4 under 64
    bit ubuntu server. I am unconvinced from the cmake output that it is
    going to plan.

    I know I could cross-compile, I’ll do that later.

    Environment:

    gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0

    Linux raspberry 5.3.0-1026-raspi2 #28~18.04.1-Ubuntu SMP Thu May 21
    14:48:58 UTC 2020 aarch64 aarch64 aarch64 GNU/Linux

    What I don’t understand is whether the code (volk) will be built to
    hook into neon properly. The thing that is irking me in cmake’s
    output is:

    -- CPU is armv8, Overruled arch neonv7

    What does this mean?

    The full cmake output is listed below.  I’d be very grateful if
    someone can tell me if this is good or bad.

    Thank you!




reply via email to

[Prev in Thread] Current Thread [Next in Thread]