On Mon, Jan 29, 2007 at 10:35:33AM -0800, Dan Halperin wrote:
> Hi,
> 
> What options are there for profiling GNU Radio code? I've done some
> Python profiling, and some C profiling, but what options are there for
> this crazy SWIG-driven mix of the two?

Oprofile (oprofile.sf.net) kicks ass.  It'll profile anything
including our Python and C++ and the kernel, without having to add
instrumentation to the generated code.  It uses the hardware
performance counters.

> Also, a flow graph question. In the main loop of the transmit path of my
> benchmarking program, I have the following (hopefully self-explanatory
> code):
> 
>         fg.start()
> 
>         self.num_to_send = options.packets
>         self.bytes_per_packet = options.bytes
>         util.rand_init(options.seed)
> 
>         for i in range(self.num_to_send):
>             # generate random payload here into buf
>             buf = util.random_bytes(self.bytes_per_packet)
>             if i % 10 == 0:
>                 print "> sending packet #", i
>             mac.send_buffer_unreliably(buf)
> #            sleep(.01)
> 
> #        sleep (1)
> #        sys.exit(0)
> 
>         fg.stop()     # tell flow graph to stop.
>         fg.wait()     # wait for it to finish
> 
> If the sleep(.01) line is uncommented, then the flow graph does not
> stop, and instead I quit using the sleep(1); sys.exit(0); however
> everything works fine with no sleeping. What could be causing this? Is
> it something weird involving code running in the same thread that
> shouldn't be?
> 
> Thanks,
> Dan

Is the receiver code in the same program?  If so, the flow graph code
won't exit until both indicate they are done.

Do you understand the use of the eof flag in
gnuradio-examples/python/usrp/digital/benchmark_tx.py?  

It ends up sending (in pkt.py (send_pkt)) a special message (type == 1
vs type == 0) to the gr.message_source that feeds the modulator.  The
special message tells the source that we're not sending any more data.
This results in the C++ code telling the scheduler that it's done, and
ultimately the flow graph stops.

Also, from this fragment I'm not sure if you are invoking the sleep(3)
function or the time.sleep function.  You definitely want the latter.

Eric


_______________________________________________
Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to