Friday, July 19, 2024

GNURadio Companion: Tools Option: “View Flowgraph Complexity”

Have you ever noticed the option under “tools” in GNU Radio Companion that is titled “View Flowgraph Complexity”? If you checked it, you will notice a little gray label under the “Options” block that says something like: “Complexity: 303ubal”

Figure 1 - If you set “View Flowgraph Complexity” to true in the GNURadio Companion “Tools” menu you will see this text show up under the “Options” Block of your flowgraph. The ‘u’ in ‘ubal’ is actually an engineering notation for mico-bal, as the base complexity calculation unit is the ‘bal’.

 

What Does It All Mean?

If you look in the code that calculates the complexity, you will see that it tries to calculate some figure of merit based on the inputs and outputs of the various blocks in the flowgraph. It looks to be trying to mimic some metric based on the well known Cyclomatic Complexity Ratio that is sometimes used in Software Engineering. It is clearly not looking into the blocks and, for instance: calculating the number of taps a filter has, latency, memory usage, CPU time, or anything like that.

Since the ‘Complexity’ metric doesn’t get a lot of press or discussion on the web, it would seem to be a neat thing to try, but perhaps of limited usefulness.

A flowgraph isn’t like pure code. It isn’t like you can poorly code a flowgraph to have more inputs or outputs than you need, resulting in an overly complex solution. You will probably always land on the minimum number of IO ports to begin with.

That being said - if you want to impress your friends with the “Minimum Complexity” then have a look at the calculation code and have at it.

https://github.com/gnuradio/gnuradio/blob/main/grc/core/utils/flow_graph_complexity.py

Perhaps you can come up with a “Drinking Game” to see who can come up with the minimum complexity flowgraph to receive NASA signals from Earth as you “while away the months” on that trip to Mars or something. What else will you have to do, anyway?

Bonus

There is one post on the web about the history of the "Flowgraph Complexity" - you can read it below,


 

 

No comments:

Post a Comment