https://github.com/guruofquality/gras/wiki/History


On Mon, May 26, 2014 at 6:46 AM, Bogdan Diaconescu
<b_diacone...@yahoo.com>wrote:

> Hi Marcus,
>
> take your time :) this is not a simple problem to solve and hence it does
> not have a simple solution. I like the idea of starting with changing the
> scheduler behaviour first to experiment with. Indeed it will take a lot of
> measurements, talks, experiments (not exactly in this order) to understand
> what is to be optimized.
>
> But this talk is touching the gnuradio scheduler area which is an area of
> its own and it brings me to one question: what happen with GRAS?
>
> Thanks,
> Bogdan
>
>
>   On Sunday, May 25, 2014 10:14 PM, Marcus Müller <mar...@hostalia.de>
> wrote:
>
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi Bogdan,
>
> thanks for your comment :)
>
> Such an optimizer would be really, really fancy.
>
> In a way, though, GNU Radio already does this when running a flow
> graph: It just asks blocks to compute a reasonable amount of items to
> fill up the downstream buffer. This actually (conceptually simple)
> approach is one great strength, because it just keeps the computer
> "busy" as much as possible.
>
> There might be space for optimization, though, I agree: Maybe it would
> be better for some blocks just to wait longer (and thus, not utilize
> the CPU) if it was computationally beneficial to work on larger
> chunks, as long as there are enough other blocks competing for CPU power.
>
> However, this leads to the problem of balancing average throughput
> with latency.
>
> What the GNU Radio infrastructure does to approach this is actually
> quite simple:
> 1. Although it might be "fastest" to process all data at once, buffer
> lengths set a natural limit to the chunk size, and thus latency. So we
> have an upper boundary.
> 2. It is best to be closest possible to that upper boundary. To
> achieve that, block developers are always encouraged to consume as
> many input items and produce as much output as possible, even if the
> overhead of having multiple (general_)work calls is minute. This
> ensures that adjacent blocks don't get asked to produce / consume
> small item chunks (which will happen if they were in a waiting state
> and a small number of items was produced or a small amount of output
> buffer was marked as read).
>
> Optimizing this will be hard. Maybe one could profile the same
> flowgraph with a lot of different settings of per-block maximum output
> chunk sizes, but I do believe this will only give as little more
> information than what the block developer already knew when he
> optimized the block in the first place. If he didn't optimize, his
> main interest will be if his block poses a problem at at all; for
> that, standard settings should be employed.
>
> To give developers an API to inform the runtime of item amount
> preference, different methods exist, however. I'll give a short
> rundown of them.
>
> 1. Most notable are the ``fixed_rate properties`` of ``gr::block``, as
> implemented in ``sync_block``, and the ``decimator`` and
> ``interpolator`` block types
> 2. If your block will only produce a multiples of a certain number of
> items, the ``set_output_multiple`` is a method that will potentially
> decrease overhead introduced by pointless calls to ``forecast`` and/or
> ``work``.
> 3. In hardware optimization, alignment is often the performance
> critical factor. To account for that, set_alignment was introduced.
> It's working very similar to ``set_output_multiple``, but does not
> *enforce* the multiples, but sets an unaligned flag if non-multiple
> consumption occurred. The runtime will always try to achieve that the
> start of your current item chunk is memory-aligned to a certain item
> multiple. If however less was produced, your block might still be
> called, to keep the data flowing.
>
> To properly apply these flags, you'll basically need a human
> understanding of what the block does. It may, nevertheless, be very
> helpful to understand how well your block performs with different item
> chunk sizes. To realize that, some mechanism to change scheduling
> behavior
>
> I will look into that; I think it should be possible to manipulate the
> ``block_executors`` to manipulate them into changing their
> forecasting/work calling behavior at runtime, but I'm quite sure that
> this will bring new code into the main tree[1].
>
> All in all, right now I'm really stuck with what I actually want to
> improve with the performance analysis of GNU Radio flowgraphs offered
> by performance counters/gr-perf-monitorx, because they address many of
> these issues already. Your execution-per-item over chunk size idea is
> excellent!
>
> So long,
> Greetings,
> Marcus
>
> [1] I'll really have to take a deeeep look at block_executor and the
> tpb scheduler to tell; if I decide to add functionality that
> introduces significant runtime overhead or changes too much of
> internal behaviour, noone will be pleased, so I might take this slow
> and will have to discuss it with experienced core developers. I'm not
> very hesitant when it comes to fiddling with in-tree source code, but
> my workings almost never make it to the public, because I always
> figure they don't address a problem properly or break too much in
> comparison to what they can possibly improve.
>
> On 25.05.2014 19:34, Bogdan Diaconescu wrote:
> > Hi Marcus,
> >
> > I like the approach you take by looking at what real life users
> > will want from gnuradio when transitioning from an academic
> > perspective to realtime system. Measurements are always not enough
> > to understand the specifics of your system so I'm looking forward
> > to see how your project provides measurements to the gnuradio
> > user.
> >
> >
> > Building on block computing performance measurements there is one
> > thing I would like to see in gnuradio and that is a flowgraph
> > optimizer.
> >
> >
> > To be more specific, a flowgraph optimizer would try to adapt the
> > parameters of the blocks (e.g. the data chunk passed to each block)
> > in order to optimize one/more parameter(s) of a flowgraph (e.g.
> > overall processing time). In a normal way this optimizer should be
> > run just once to determine the optimum parameters that will be used
> > subsequently. If we see the problem to solve from a general
> > perspective the optimizer would fall in the category of
> > multi-objective optimization which has a numerous solutions and has
> > been thoroughly discussed in the academia and industry (gaming is
> > usualy doing multi-bjective optimization through AI). Another
> > real-life example would be the optimizer in the 4Nec2 antenna
> > simulation program that uses AI to optimize the antenna when a set
> > of objectives (variables) is set by the user, e.g. minimum SWR, Z
> > close to a value, etc.
> >
> > In my opinion gnuradio will really benefit from such an optimizer
> > as the values of block parameters can provide quite different end
> > results.
> >
> > Not sure if this can be part of your GSOC project but I thought it
> > worth mentioning to you and gnuradio users on this list. Maybe can
> > be part of the next GSOC.
> >
> > Thanks, Bogdan
> >
> >
> >
> >
> >
> >
> >
> > On Thursday, May 22, 2014 7:49 PM, Marcus Müller
> > <mar...@hostalia.de> wrote:
> >
> >
> >
> > Hi, GR community!
> >
> > I was elected to do a Google Summer of Code project. Thanks for
> > all the constructive feedback on my proposal, and all the support,
> > ideas and hints I got the last weeks!
> >
> > As I just finished setting up my blog, I'm now happy to announce
> > the beginning of the GNU Radio Measurement Toolbox.
> >
> > Its purposes are basically two-fold: 1. Ease the process of
> > gathering data through changing flowgraph characteristics to get
> > things like BER curves out of GNU Radio, and 2. Help optimizing GNU
> > Radio and VOLK by offering the same automated data gathering for
> > performance data.
> >
> > This covers generating a few measurement blocks, writing a
> > framework to let developers run their flowgraphs through a
> > pre-defined set of parametrizations, evaluating performance
> > counters, dealing with the gathered data, visualization and
> > automated task distribution.
> >
> > To not bore you to death here on the mailing list, I've made an
> > introductory blog entry [1]. You may find it on
> > http://gsoc.hostalia.de
> >
> > Then, there will be code; you will find that on my github page
> > [2].
> >
> > Looking forward to a load of criticism, and even more fun hacking,
> >
> > Greetings, Marcus
> >
> >
> > [1]
> >
> http://gsoc.hostalia.de/posts/a-measurement-toolbox-for-gnu-radio-my-google-summer-of-code-project.html
> >
> >  _______________________________________________ Discuss-gnuradio
> > mailing list Discuss-gnuradio@gnu.org
> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
> >
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iQEcBAEBAgAGBQJTgkEuAAoJEBQ6EdjyzlHtM54H/0cXRJiq7y0qdrm7N0jdeHVj
> vu9Tjbl6XfvPUwHnPejfi/OPskQVTfTF+3sMDtQ3QWXW5K+HBPob7ci7xpTOob3z
> zmkHBzXK+7X3Uvgfo0zV7zp1cnMWwCsnIdzK7aOelusK7unGZps5Zh7kUoSbqcto
> Dajf5RfG4YbCCzkv30Ykg5i3tqSPWtqDKqWsZnEC1wIBR7eLS9UgCn98CawhJYhB
> ittApa73nNcPtJl8Q6REzWufXRqa6asmxdZwXYqFguQrYUueqxUAtphwv1Sy4Ync
> BXAEyj48saXsvzmL2li0S4A8CC7dydPwAJnwTczS0cAlwuS2/c/J9BtwdOappUM=
> =A0bm
>
> -----END PGP SIGNATURE-----
>
>
>
> _______________________________________________
> Discuss-gnuradio mailing list
> Discuss-gnuradio@gnu.org
> https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to