discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] QT GUI Segmentation Fault


From: Tom Rondeau
Subject: Re: [Discuss-gnuradio] QT GUI Segmentation Fault
Date: Sun, 2 Nov 2014 10:28:52 -0500

On Fri, Oct 31, 2014 at 4:21 PM, Michael Rahaim <address@hidden> wrote:
Hi Nathan,

Thanks for the info. In case you didn't see my previous reply, the processors are all "Intel(R) Core(TM) i7-2630QM CPU @ 2.00GHz"

-Mike


Ok, I think I understand what's going wrong here. We're calling an aligned VOLK call directly inside the fft function of that block that works off a buffer that we created (properly aligned) and a buffer that FFTW created. FFTW doesn't always ship packaged with AVX support, so the FFT buffers are only designed for SSE use -- that is, only guaranteed to be 16-byte aligned. AVX requires 32-byte alignment.

The fix is simply. Just remove the _a call from lines 268 and 276 (in sink_c_impl.cc). I was thinking that both buffers would be guaranteed to have the right alignment, so I skipped the volk dispatcher and called directly into the aligned kernel. We might just have to ban use of anything but the dispatchers in GNU Radio code from now on.

I'm not in a place to fix this right now, so I just reopened issue #645 to remind myself to do this when I can.

Tom
 

 
On Fri, Oct 31, 2014 at 3:32 PM, West, Nathan <address@hidden> wrote:
On Thu, Oct 30, 2014 at 4:07 PM, Michael Rahaim <address@hidden> wrote:
> Just a follow up on this - I was able to resolve the issue with the
> following modifications in the volk_config file:
>
> before:          volk_32fc_32f_multiply_32fc a_avx generic
> changed to:   volk_32fc_32f_multiply_32fc generic generic
>
> before:          volk_32fc_deinterleave_64f_x2 a_avx u_avx
> changed to:   volk_32fc_deinterleave_64f_x2 generic u_avx
>
>
> While I'm happy to have it working again, I don't exactly know what this
> modification actually does. If anyone with knowledge of the volk library can
> give me a quick bit of info about what these modifications are actually
> doing and / or why this would resolve the segfault issue, it would ease my
> mind a bit.
>
> Thanks,
>
> -Mike
>


Hi Mike,

So each VOLK kernel has several internal implementations that are
architecture specific (SSE, AVX, NEON, etc). A call to the VOLK
library looks like volk_32fc_32f_multiply_32fc(output_buffer,
input_buffer0, input_buffer1, number_of_points). Internally VOLK has a
dispatcher that uses the implementation that is "best" for your
machine. The "best" implementation is determined by running
volk_profile which runs all of the implementations available and write
the fastest one to volk_config. At run-time VOLK reads this file to
know which version of each kernel to actually run.

Can you tell me your processor model name and flags? A copy of
/proc/cpuinfo (just one of the processors) would be useful.

Nathan


_______________________________________________
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]