discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] assertion error beyond 4096 output items


From: Activecat
Subject: Re: [Discuss-gnuradio] assertion error beyond 4096 output items
Date: Wed, 28 May 2014 23:14:43 +0800

Hi Karan,
You keep Marcus very busy, let me help to offload him.

On Wed, May 28, 2014 at 8:36 PM, Karan Talasila <address@hidden> wrote:
Hi Marcus,
     Thank you for evaluating our code and help debugging it. what we understand from your reply is that work function at a time processes noutput_items and this can be lesser than or more than the fft_length. As an example in our code when we give the fft length as 8192, but the noutput_items is still  4096, so does that mean it has to execute work function twice to process 4096*2=8192 items?

When the desirable fft_length is 8192, could you accept to perform FFT at only 4096 elements?
If yes, perform FFT on this 4096 elements, and return 4096.
If not, make sure you use set_output_multiple(fft_length) or at least set_min_noutput_items(fft_length), in this case the scheduler will not call work() function with insufficient number of elements.

 
Regarding the first approach you suggested, we change the input signature and output signature to (sizeof (gr_complex)*fft_length) so that it is a single vector that is being processed. Then we return 1 as suggested. But it is throwing an itemsize mismatch error. I have attached the c++ file here ( http://pastebin.com/TKemtbxN ). The error says


The correct way is, in your work() function you should have 2 loops, because now your in[0] is a vector but no longer solely a complex number. Example:

  for (int i=0; i < noutput_items; i++)
  {
      for (int j=0; j < fft_length; j++)
      {
         ......
      }
  }
 

For the second method suggested should we write a general work function and a forecast function which would mean doing away with sync block that we are using with work function right now?

No need, because set_output_multiple() works with sync block as well.

Note:
Apologize in advance if my answer is incorrect.

reply via email to

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