quantum-compiler / quartz

The Quartz Quantum Compiler
Apache License 2.0
76 stars 19 forks source link

[Simulator] A new ILP algorithm #148

Closed xumingkuan closed 9 months ago

xumingkuan commented 9 months ago

Related PR = #147

This PR changes

std::vector<std::vector<int>>
compute_qubit_layout_with_ilp(const CircuitSeq &sequence, int num_local_qubits,
                              int num_regional_qubits, Context *ctx,
                              PythonInterpreter *interpreter,
                              int num_global_stages_start_with = 1);

and

std::vector<Schedule> get_schedules_with_ilp(
    const CircuitSeq &sequence, int num_local_qubits, int num_regional_qubits,
    const KernelCost &kernel_cost, Context *ctx, PythonInterpreter *interpreter,
    bool attach_single_qubit_gates, int use_simple_dp_times = 0,
    const std::string &cache_file_name_prefix = "", int answer_start_with = 1);

to use a new ILP algorithm. Now the local qubit swap pairs should not intersect with each other and the number of stages is minimized.

Also prints the local qubit swap information in benchmark_dp.