Improve performance of pulse.schedule
See original GitHub issueWhat is the expected enhancement?
Construction of Schedule using append should be much faster.
Currently, it takes 34s (273s) for constructing a schedule with 2000 (4000) instructions. Those are measured by create_random_appended_schedule(100, 20) (200, 20) using the following code:
def create_random_appended_schedule(n_instrs_by_channel, n_channels, pulse_size=10):
channels = [pulse.DriveChannel(i) for i in range(n_channels)]
instrs = []
for i in range(n_instrs_by_channel):
command = pulse.SamplePulse(np.random.random(pulse_size))
for chan in channels:
instrs.append(command(chan))
start_time = time.time()
schedule = pulse.Schedule()
for instr in instrs:
schedule += instr
end_time = time.time()
print(end_time-start_time)
For drastic speed up, we may need a lot of refactoring, but I think we can improve the performance somewhat by a small modification.
Issue Analytics
- State:
- Created 4 years ago
- Comments:5 (5 by maintainers)
Top Results From Across the Web
Tuning Pulse Traffic Manager for best performance
This document describes performance-related tuning you may wish to apply to a production Stingray Traffic Manager software, ...
Read more >openpulse - Faster pulse generation in Qiskit
I'm glad to see that you have increased the performance of the pulse path. The scheduler does need to be profiled, but this...
Read more >Improved Compute Performance With Acceldata Pulse 3.0
Improved Dashboard Reporting Capabilities. New reporting capabilities in the Pulse dashboard allow users to schedule, enable, deactivate, and ...
Read more >qiskit.pulse.channels
Schedules are Pulse programs. They describe instruction sequences for the control hardware. The Schedule is one of the most fundamental objects to this...
Read more >Our pulse and scheduling co-optimization approach.
overcome the above problems, we propose co-optimizing pulses and scheduling. As shown in Figure 2, we optimize pulses to implement quantum gates and...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found

Do you think it makes sense to add some pulse benchmarks for cases like this to the asv benchmark suite? https://github.com/Qiskit/qiskit/tree/master/test/benchmarks If so we can track the performance of these operations over time at https://qiskit.github.io/qiskit/
Yes, Closing via #2995.