Skip to content

Conversation

@saksham-gera
Copy link
Contributor

This PR implements ZeroMQ-based communication as a first-class feature in concore, alongside the existing file-sharing and shared-memory communication mechanisms.

Key Contributions:

  • Implemented ZeroMQ-based edges in concore to enable seamless communication between programs.
  • Introduced a consistent labeling scheme for ZeroMQ edges:
  • All ZeroMQ edges start with 0 in their labels, followed by a hexadecimal port, and then an underscore.
  • Example: 0x1234_Y assigns logical Y to port 1234, 0xabcd_U assigns logical U to port abcd.
  • Enabled studies with ZeroMQ edges to appear as single directed hypergraphs in the concore editor, ensuring that ZeroMQ edges are visible and integrated instead of forming separate forests.
  • Achieved seamless execution across local and distributed environments, removing the need to run each hypergraph separately.
  • Ensured interoperability with existing communication approaches (file-sharing and shared-memory), providing a unified experience for users.
  • Demonstrated the feasibility of distributed studies through ZeroMQ message queues.

Additional Notes:

  • Implementation was inspired by the previous osparc-control–based experiment but removes the dependency on osparc-control.
  • Code structure aligns with existing concore communication backends for consistency and maintainability.
  • Primary implementation in Python, with possible extensions for Matlab and C++ in future contributions.

Outcome:
This PR fulfills the expected outcomes of the GSoC project “Making ZeroMQ a first-class feature of concore” by:

  • Establishing ZeroMQ as a native communication backend.
  • Promoting distributed usability of concore studies.
  • Unifying communication modes under a consistent interface in the concore editor.

pradeeban and others added 30 commits May 2, 2025 19:02
Added A zeromq based study and also corrected some existing studies
…es are working fine even after integrating the ZeroMQ with concore.py
Integrated the ZeroMQ with concore.py, I've tested the previous studies(With only file based communication) are working fine even after integrating the ZeroMQ with concore.py
…PORT and PORT_NAME and copy that file from source dir to destination dir
For Port Assignment Based On Edge Label
added a function that will run the copy_with_port_portname script with arguments
Added A function to close all ports of zeromq running for a particular instance of concore
…with that improved copy_port_portname.py as per requirements
…mal port and name, then setting them in the variable names as PORT_[SOURCE_NODE]_[DESTINATION_NODE] and PORT_NAME_[SOURCE_NODE]_[DESTINATION_NODE], these variables can be used in the source files when Ports and Portnames are not decided for zeromq connection, and also the port is accessible through iport and oport files.
…not communicating through file based communication
Added A Functionality to see the ZMQ edge results & Also Added Timeout and Retry Logic for ZeroMQ Connection
Added Measurements folder for Quantifying the improvements after adding ZeroMQ in concore
Corrected Figure Names And Corrected readme.md
replaced the png format with pdf, now all plots will be saved as pdf
@pradeeban pradeeban merged commit 2c9e1fb into ControlCore-Project:main Aug 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants