On Tue, Jan 06, 2009 at 11:20:48PM -0500, Marcus D. Leech wrote:
> Eric Blossom wrote:
> >
> >
> > Is this an SMP machine, or a cluster?
> >
> > If SMP, it'll "just work".  If it's a cluster, you'll need to figure
> > out how to partition separate instantiations of GR on each node.
> >
> > Eric
>
> SMP.
> 
> Describe how it'll "just work"??
> 
> Maybe I haven't looked at all the blocks carefully enough, but I can't
> immediately see how to do this.
> 
> I basically want a "distributor" block that distributes FFT input frames
> to multiple instances of an FFT computation,
>   across multiple threads, and have the results of the separate FFTs
> synchronized.

Sounds good.  Sorry,  I misunderstood your goal.
(I'm working on the guts of FFTW now and have FFT on the brain...)

I think we have the blocks you need to do the fanout and fanin
already.  They're disguised as

  gr.deinterleave(itemsize)
  gr.interleave(itemsize)

I think you could use them like this:

  fft_size = 512

  usrp = ...

  fanout = gr.deinterleave(fft_size * gr.sizeof_complex)
  fanin = gr.interleave(fft_size * gr.sizeof_complex)

  fft0 = ...
  fft1 = ...
  fft2 = ...
  fft3 = ...

  connect(usrp, fanout)

  connect((fanout, 0), fft0)
  connect((fanout, 1), fft1)
  connect((fanout, 2), fft2)
  connect((fanout, 3), fft3)

  connect(fft0, (fanin, 0))
  connect(fft1, (fanin, 1))
  connect(fft2, (fanin, 2))
  connect(fft3, (fanin, 3))


Each block runs in its own thread, so this should run faster on an SMP
machine.  Please let us know if this works for you!

[FYI, there are also two extra copies happening in the gr.fft_* block that I
now know how to remove...]

Eric


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

Reply via email to