discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] [VOLK] volk_profile failures


From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] [VOLK] volk_profile failures
Date: Sun, 7 Jun 2015 12:19:25 -0400

On Sat, Jun 6, 2015 at 4:51 PM, Nowlan, Sean <address@hidden> wrote:

That makes sense. I installed ORC 0.4.23 and tried to recompile GR, but the build is failing on Volk. GCC segfaults a couple times before failing with an error on volk_16ic_magnitude_16i_a_orc_impl. Full output here: 

https://gist.github.com/nowls/2f6ddf5734e152ca21a7


ORC 0.4.23 was built with:

CFLAGS="-mcpu=cortex-a15.cortex-a7 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -funsafe-math-optimizations"

CPPFLAGS="-mcpu=cortex-a15.cortex-a7 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -funsafe-math-optimizations"


UHD built fine w/ ORC 0.4.23.


Sean

Just disable ORC Altogether in VOLK. Most of the kernels have replacement NEON proto-kernels now, anyways. Pass -DENABLE_ORC=False to cmake.

Tom


 

From: West, Nathan <address@hidden>
Sent: Saturday, June 6, 2015 12:57 PM

To: Nowlan, Sean
Cc: address@hidden
Subject: Re: [Discuss-gnuradio] [VOLK] volk_profile failures
 
Most likely.

What we've seen before is that ORC didn't preserve registers according to ARM specifications. This basically results in unpredictable data corruption. The commit I pointed to is the fix (vpush certain registers if used, then vpop after the routine).

The visible corruption is seen by corrupting the test tolerance. If you look at ctest -V you should see that the "error"s are actually the same result, but since tolerance gets corrupted the test erroneously is false. The only QA failures should be on kernels that have an ORC protokernel, but this bug can affect non-ORC protokernels for that kernel.

Nathan


On Sat, Jun 6, 2015 at 12:47 PM, Nowlan, Sean <address@hidden> wrote:

​Ok, I will install ORC 0.4.23 from source. Is ORC involved with all the other architectures that had failures?


Sean



From: West, Nathan <address@hidden>
Sent: Friday, June 5, 2015 6:48 PM
To: Nowlan, Sean
Cc: address@hidden
Subject: Re: [Discuss-gnuradio] [VOLK] volk_profile failures
 
Hi Sean,

I didn't read all of the debug info, but your symptoms are a result of ORC doing bad things. 

You can either uninstall ORC or upgrade to the latest release (0.4.23). The commit you really need is this one: http://cgit.freedesktop.org/gstreamer/orc/commit/?id=acdaac31c648fd10f1bd0a49c4c33b483bb9c35c

If you choose to upgrade ORC let me know how it goes. 

Cheers,
Nathan

On Friday, June 5, 2015, Nowlan, Sean <address@hidden> wrote:

I compiled GNU Radio 3.7.7.1 natively on an ODROID XU3-Lite with Ubuntu 14.04.2 LTS. I ran volk_profile and got a lot of failures for various embedded architectures. Any ideas what could be happening? Could it be something with the compile flags I chose?


volk_16ic_s32f_deinterleave_32f_x2: fail on arch neon
volk_16ic_s32f_deinterleave_32f_x2: fail on arch neon
volk_16ic_s32f_deinterleave_32f_x2: fail on arch u_orc
volk_16ic_s32f_deinterleave_32f_x2: fail on arch u_orc
volk_32fc_s32f_magnitude_16i: fail on arch u_orc
volk_32fc_x2_multiply_32fc: fail on arch a_generic
volk_32fc_x2_multiply_32fc: fail on arch a_generic
volk_32fc_x2_multiply_32fc: fail on arch a_generic
volk_32fc_x2_multiply_32fc: fail on arch neon
volk_32fc_x2_multiply_32fc: fail on arch neon
volk_32fc_x2_multiply_32fc: fail on arch neon
volk_32fc_x2_multiply_32fc: fail on arch neon_opttests
volk_32fc_x2_multiply_32fc: fail on arch neon_opttests
volk_32fc_x2_multiply_32fc: fail on arch neon_opttests
volk_32fc_x2_multiply_32fc: fail on arch neonasm
volk_32fc_x2_multiply_32fc: fail on arch neonasm
volk_32fc_x2_multiply_32fc: fail on arch neonasm
volk_32fc_x2_multiply_32fc: fail on arch u_orc
volk_32fc_x2_multiply_32fc: fail on arch u_orc
volk_32fc_x2_multiply_32fc: fail on arch u_orc
volk_32f_sqrt_32f: fail on arch neon
volk_32f_x3_sum_of_poly_32f: fail on arch a_neon
volk_32f_x3_sum_of_poly_32f: fail on arch neonvert
volk_32fc_s32fc_multiply_32fc: fail on arch neon

The full output of volk_profile is here: https://gist.github.com/nowls/37c78d89342053bae0ea

Some relevant configuration info taken from CMakeCache.txt (gcc/g++ version and C/CXX/ASM flags):

CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++-4.9
CMAKE_CXX_COMPILER_WITH_PATH:FILEPATH=/usr/bin/g++-4.9
CMAKE_CXX_FLAGS:STRING=-mcpu=cortex-a15.cortex-a7 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -funsafe-math-optimizations
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
CMAKE_CXX_FLAGS_DEBUGPARANOID:STRING=-Wall -Wextra -g -O0
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
CMAKE_CXX_FLAGS_NOOPTWITHASM:STRING=-Wall -save-temps -g -O0
CMAKE_CXX_FLAGS_O2WITHASM:STRING=-Wall -save-temps -g -O2
CMAKE_CXX_FLAGS_O3WITHASM:STRING=-Wall -save-temps -g -O3
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc-4.9
CMAKE_C_COMPILER_WITH_PATH:FILEPATH=/usr/bin/gcc-4.9
CMAKE_C_FLAGS:STRING=-mcpu=cortex-a15.cortex-a7 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -funsafe-math-optimizations
CMAKE_C_FLAGS_DEBUG:STRING=-g
CMAKE_C_FLAGS_DEBUGPARANOID:STRING=-Wall -Wextra -g -O0
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
CMAKE_C_FLAGS_NOOPTWITHASM:STRING=-Wall -save-temps -g -O0
CMAKE_C_FLAGS_O2WITHASM:STRING=-Wall -save-temps -g -O2
CMAKE_C_FLAGS_O3WITHASM:STRING=-Wall -save-temps -g -O3
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
CMAKE_ASM_FLAGS:STRING=-mcpu=cortex-a15.cortex-a7 -mtune=cortex-a15.cortex-a7 -mfpu=neon-vfpv4 -mfloat-abi=hard -funsafe-math-optimizations
CMAKE_ASM_FLAGS_DEBUG:STRING=-g
CMAKE_ASM_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
CMAKE_ASM_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
CMAKE_ASM_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG


Sean Nowlan




_______________________________________________
Discuss-gnuradio mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio



reply via email to

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