discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] multi thread fft execution


From: Marcus Müller
Subject: Re: [Discuss-gnuradio] multi thread fft execution
Date: Sun, 26 Oct 2014 07:29:33 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.7.0

That would be a case for flow graph reconfiguration, most probably :)
On 26.10.2014 06:13, Mostafa Alizadeh wrote:
Hello Marcus,
I checked my sliding fft works fine and the bug was somewhere else :)

In fact I want to detect a known sequence within data non-coherently. After
detection I want to neglect this 'work' process.
How would you prefer to stop this work process after detection? (Something
like putting this thread to sleep! )

Best,
Mostafa

On Sat, Oct 25, 2014 at 3:56 PM, Marcus Müller <address@hidden> wrote:

 Hi Mostafa,

is there any "race" problem between these 2 threads and the work one?
I think you might be confused what the FFT multithreading means here; I
hope I can illustrate this. Let's set the FFT multithreading level to two
threads:

   sliding_fft_impl::work()
               |
     enter "fft->execute"
spawn thread 1 & spawn thread 2
      |                |
  calculate               calculate
      |                |
      +--------v-------+
         join threads
               |
    return from "fft->execute"
       continue ::work

The work thread waits for fft->execute to return; there can be no
interference while the fft threads run, because at that time, the work
thread isn't "active".

Inj another words, is it possible that this work being called before
finishing the fft execution?

no, a single block's work() cannot get called before the previous run of
work() has finished. That wouldn't make any sense -- how would the second
work now how many input samples it has, if the first one hadn't already
consumed?

Your code looks correct. I know I tell you this in almost every discussion
on here, but:
Please, tell us what "undesired" means. That would greatly reduce the
guesswork for the rest of the mailing list.

Also, sliding FFTs do look like a computational heavy load. What is the
application for that? I ask because getting an fft_length FFT for every
item increases item/sample rate without giving you
(information-theoretically speaking) any advantage over doing one FFT ever
fft_length samples.

Greetings,
Marcus



On 10/25/2014 12:03 PM, Mostafa Alizadeh wrote:

Hi all,
I have the following c++ code which gets fft by sliding on sample by
sample fo the input.

     /*

     * The private constructor

     */

    sliding_fft_impl::sliding_fft_impl(uint fft_size)

      : gr::sync_block("sliding_fft",

              gr::io_signature::make(1, 1, sizeof(gr_complex)),

              gr::io_signature::make(1, 1, fft_size * sizeof(gr_complex))),

        d_fft_size(fft_size)

    {

        d_fft = new fft::fft_complex (d_fft_size, 1, 2);

        set_history(fft_size);

    }

     sliding_fft_impl::~sliding_fft_impl()

    {

        delete d_fft;

    }

    int

    sliding_fft_impl::work(int noutput_items,

			  gr_vector_const_void_star &input_items,

			  gr_vector_void_star &output_items)

    {

        const gr_complex *in = (const gr_complex *) input_items[0];

        gr_complex *out = (gr_complex *) output_items[0];

         memcpy(d_fft->get_inbuf(), in, d_fft_size * sizeof(gr_complex));

        d_fft->execute();

        memcpy(out, d_fft->get_outbuf(), d_fft_size * sizeof(gr_complex));

         //delete d_fft;

        return 1;

    }

 If I run the fft execution on 2 threads, or more, is there any "race" problem between these 2 threads and the work one? Inj another words, is it possible that this work being called before finishing the fft execution?

 If it is so, there will be a race problem because "work" wants to write on d_fft->get_inbuf() while fft execution wants to read from it!

 please help me with this code. I don't know why at the runtime, the data I give at the output aren't desired after a while!!

 Best,

Mostafa



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



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





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