Beispiel #1
0
def test_google_v2_supremacy_circuit():
    circuit = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_grid(
        n_rows=4, n_cols=5, cz_depth=9, seed=0)
    # We check that is exactly circuit inst_4x5_10_0
    # in github.com/sboixo/GRCS cz_v2
    assert len(circuit) == 11
    assert len(list(circuit.findall_operations_with_gate_type(
        ops.CZPowGate))) == 35
    assert len(list(circuit.findall_operations_with_gate_type(
        ops.XPowGate))) == 15
    assert len(list(circuit.findall_operations_with_gate_type(
        ops.YPowGate))) == 23
    assert len(list(circuit.findall_operations_with_gate_type(
        ops.ZPowGate))) == 32
    assert len(list(circuit.findall_operations_with_gate_type(
        ops.HPowGate))) == 40
    qubits = [GridQubit(i, j) for i in range(4) for j in range(5)]
    assert isinstance(circuit.operation_at(qubits[0], 2).gate, ops.YPowGate)
    assert isinstance(circuit.operation_at(qubits[1], 2).gate, ops.YPowGate)
    assert isinstance(circuit.operation_at(qubits[8], 2).gate, ops.XPowGate)
    assert circuit.operation_at(qubits[0], 1).gate == ops.CZ
    assert circuit.operation_at(qubits[5], 2).gate == ops.CZ
    assert circuit.operation_at(qubits[8], 3).gate == ops.CZ
    assert circuit.operation_at(qubits[13], 4).gate == ops.CZ
    assert circuit.operation_at(qubits[12], 5).gate == ops.CZ
    assert circuit.operation_at(qubits[13], 6).gate == ops.CZ
    assert circuit.operation_at(qubits[14], 7).gate == ops.CZ
Beispiel #2
0
def test_supremacy_big():
    circuit = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_grid(
        n_rows=7, n_cols=7, cz_depth=6, seed=0)
    qubit_order = circuit.all_qubits()
    q0 = next(iter(qubit_order))
    circuit.append(cirq.measure(q0))

    mps_simulator_1 = ccq.mps_simulator.MPSSimulator(
        simulation_options=ccq.mps_simulator.MPSOptions(cutoff=5e-5))
    result_1 = mps_simulator_1.simulate(circuit,
                                        qubit_order=qubit_order,
                                        initial_state=0)

    assert result_1.final_state.estimation_stats() == {
        'estimated_fidelity': 0.997,
        'memory_bytes': 11008,
        'num_coefs_used': 688,
    }

    mps_simulator_2 = ccq.mps_simulator.MPSSimulator(
        simulation_options=ccq.mps_simulator.MPSOptions(
            method='isvd', max_bond=1, cutoff_mode='sum2'))
    result_2 = mps_simulator_2.simulate(circuit,
                                        qubit_order=qubit_order,
                                        initial_state=0)

    assert result_2.final_state.estimation_stats() == {
        'estimated_fidelity': 1.0,
        'memory_bytes': 1568,
        'num_coefs_used': 98,
    }
Beispiel #3
0
def test_supremacy_big():
    circuit = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_grid(
        n_rows=7, n_cols=7, cz_depth=6, seed=0
    )
    qubit_order = circuit.all_qubits()
    q0 = next(iter(qubit_order))
    circuit.append(cirq.measure(q0))

    mps_simulator = ccq.mps_simulator.MPSSimulator(rsum2_cutoff=5e-5)
    result = mps_simulator.simulate(circuit, qubit_order=qubit_order, initial_state=0)

    assert result.final_state.estimation_stats() == {
        'estimated_fidelity': 0.997,
        'memory_bytes': 11008,
        'num_svd_splits': 64,
        'num_coefs_used': 688,
    }
Beispiel #4
0
def test_supremacy_equal_more_cols():
    circuit = supremacy_v2.generate_boixo_2018_supremacy_circuits_v2_grid(
        n_rows=2, n_cols=3, cz_depth=3, seed=0
    )
    qubits = circuit.all_qubits()
    assert_same_output_as_dense(circuit, qubits)