sfc-aqua / quisp

Open source implementation of quantum internet simulation package
BSD 3-Clause "New" or "Revised" License
86 stars 36 forks source link

Rewrite connection level tomography or tomography application request #512

Open Naphann opened 1 year ago

Naphann commented 1 year ago

Current Implementation: Tomography RuleSet or request (the only type of application at the moment) will create a Rule for state tomography between two end nodes. In this Rule, there are two condition clauses

  1. EnoughResourceClause to get qubits for tomography measurement
  2. MeasurementCount clause which checks whether we have enough measurement or not.

And the action is to exchange the result (1 message for 1 measurement) with its tomography partner. There is also another issue that the tomography result is sent to the hardware monitor instead of RuleEngine which should handle the connection level tomography.

There are four issues with this implementation that need to be addressed:

  1. Tomography rule doesn't need to explicitly check for measurement count if the termination condition clause is already checking for this in order to terminate the Ruleset. A little over the specified measurement count should be fine as long as both sides did at least the specified amount.
  2. Sending one message for every measurement isn't efficient. The measurement should be cached and sent at the end. This means we could send the measurement results in one go maybe from the termination condition clause or as another rule with a condition that checks for measurement count and send the result as action.
  3. Tomography message should be sent to RuleEngine.
  4. Since this is a connection-level or one could say that this is an application. The one handling the tomography calculation should be the Application module. If this is a subroutine done to determine the end-to-end fidelity to serve the application, this should be handled in ConnectionManager. In either case, it shouldn't be inside HardwareMonitor.
makotonakai commented 1 year ago

Can I work on this first?