Avoid useless deepcopy of target with custom pulse gates in transpile #10973
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Improve transpilation time of circuits for a target with custom pulse gates by avoiding unnecessary deepcopy of the target object.
The time to build pulse schedules with circuit instructions is also improved since
transpile
function is internally called for each circuit instruction call.Details and comments
When both
inst_map
andtarget
are supplied,transpile
function internally deepcopy the target object and update calibrations in it with ones ininst_map
only ifinst_map
contains custom calibrations. However, the check was incorrect for the case when only thetarget
(that contains custom calibrations) is supplied. In that case, the target object was deepcopied unnecessarily. This commit avoids it to improve the performance of transpilation with a custom target and hence building pulse schedules with circuit instructions. For instance, building 200 pulse schedules took 2 minutes while it takes 7 seconds with this commit.