Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[8SP;6SP] Improve Nested/Sub-Graph Integration (formerly 'hier-blocks') #184

Open
5 tasks
RalphSteinhagen opened this issue Jun 2, 2024 · 2 comments
Open
5 tasks
Assignees
Labels
documentation Improvements or additions to documentation enhancement New feature or request

Comments

@RalphSteinhagen
Copy link
Member

RalphSteinhagen commented Jun 2, 2024

This issue tracks the integration of nested or sub-graphs, previously referred to as 'hier-blocks' in GNU Radio 3.x, into GNU Radio 4.0. The aim is to reduce cognitive complexity, streamline reuse, and enhance modularity through a cleaner design that supports both unmanaged and managed sub-graphs.

Motivation and Use Cases

  1. Reduction of Cognitive Complexity
    Group recurring topologies (e.g., filter cascades) into reusable sub-graphs. These sub-graphs can be instantiated within a top-level graph, simplifying development by reducing duplication and promoting better organisation.

    Proposed Actions:

    • Unmanaged Nested Graph in YAML-definition
      Store nested graphs as template-style sub-graphs in the same YAML file as the top-level graph. This approach minimises changes to the grc-loader and uses the same syntax for the sub-graph as for the top-level graph, except for a templated name.

    • Managed Nested Graph with Scheduler Integration
      Implement a structured approach where a domain-specific scheduler is associated with each sub-graph. This allows for optimisation strategies based on latency vs. throughput or computational domains like FPGA and GPUs. The scheduler is instantiated with the nested graph and passed as a Block for higher-level usage.

  2. Composing New Block Functionalities from Existing Basic Blocks
    Facilitate the creation of new block functionalities by combining existing blocks (typically C++-based) within the same or other top-level graphs.

    Proposed Actions:

    • Dedicated YAML-based Nested Graph Definitions
      Implement dedicated YAML files for nested graph definitions, stored in the block registry, to be reused across different graphs. The implementation will leverage the grc-loader and its YAML-parsing capabilities.

    • Plugin-like Extensions for User-Defined Nested Graphs
      Introduce a plugin-style extension that allows users to browse and load nested graph definitions from user-specified directories, enhancing flexibility and modularity.

    • Plugin-like Extensions for External Graph Sources
      Expand the plugin architecture to support sources beyond local files, including databases or community-driven repositories via HTTP(S). This allows nested graph YAML definitions to be queried dynamically from websites or other HTTPS-based repositories.

Deprecating yaml-cpp in Favour of pmt-lib

To streamline dependencies, we aim to remove the old yaml-cpp dependency and transition to a new pmt-lib-based YAML parser/writer implementation. This change ensures feature equivalence and backward compatibility with existing functionality. The migration to pmt-lib is a prerequisite for the new nested graph functionalities to minimise duplication of work

@RalphSteinhagen RalphSteinhagen added documentation Improvements or additions to documentation enhancement New feature or request labels Jun 2, 2024
@RalphSteinhagen RalphSteinhagen self-assigned this Jun 2, 2024
@RalphSteinhagen RalphSteinhagen moved this to 🏗 In progress in Digitizer Reimplementation Jun 2, 2024
@RalphSteinhagen RalphSteinhagen changed the title Investigate how to store nested graph in Yaml Improve Nested/Sub-Graph Integration in GNU Radio 4.0 (formerly 'hier-blocks') Sep 12, 2024
@RalphSteinhagen RalphSteinhagen changed the title Improve Nested/Sub-Graph Integration in GNU Radio 4.0 (formerly 'hier-blocks') Improve Nested/Sub-Graph Integration (formerly 'hier-blocks') Sep 12, 2024
@RalphSteinhagen RalphSteinhagen removed their assignment Sep 12, 2024
@RalphSteinhagen RalphSteinhagen moved this from 🏗 In progress to 🔖 Selected (3) in Digitizer Reimplementation Sep 12, 2024
@RalphSteinhagen RalphSteinhagen changed the title Improve Nested/Sub-Graph Integration (formerly 'hier-blocks') [8SP] Improve Nested/Sub-Graph Integration (formerly 'hier-blocks') Nov 25, 2024
@ivan-cukic
Copy link
Contributor

ivan-cukic commented Nov 25, 2024

Additionally:

  • Messages for grouping blocks into a managed or unmanaged group (by default, exported ports are what was previously connected to the out world)
  • Messages for duplicating blocks / groups (for UI to define blocks)
  • Messages for exporting ports from groups

@ivan-cukic
Copy link
Contributor

@ivan-cukic ivan-cukic changed the title [8SP] Improve Nested/Sub-Graph Integration (formerly 'hier-blocks') [8SP;6SP] Improve Nested/Sub-Graph Integration (formerly 'hier-blocks') Dec 7, 2024
@ivan-cukic ivan-cukic moved this from 🏗 In progress to Finished Implementation (2) in Digitizer Reimplementation Dec 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
Status: Finished Implementation (2)
Development

No branches or pull requests

2 participants