示例#1
0
def run(multi_circuit_components, xtalk_path=None, reservation=False):
    """ 
    Args: 
        multi_circuit_components : benchmarking circuits 
    """

    # define backend
    backend_name = 'ibmq_toronto'
    IBMQ.load_account()
    if reservation:
        provider = IBMQ.get_provider(hub='ibm-q-keio',
                                     group='keio-internal',
                                     project='reservations')
    else:
        provider = IBMQ.get_provider(hub='ibm-q-keio',
                                     group='keio-internal',
                                     project='keio-students')
    backend = provider.get_backend(backend_name)

    #  crosstalk prop
    if xtalk_path is None:
        epc_path = "/Users/Yasuhiro/Documents/aqua/gp/errors_information/toronto_from20200903/xtalk_data_daily/epc/2020-10-11.pickle"
        epc_dict = pickle_load(epc_path)
        crosstalk_prop = value_to_ratio(epc_dict)
    else:
        crosstalk_prop = pickle_load(xtalk_path)

    jobfile_dir = "/Users/Yasuhiro/Documents/aqua/gp/experiments/jobfiles/ibmq_toronto/2020-10-12/"
    circ = run_experiments(jobfile_dir,
                           multi_circuit_components=multi_circuit_components,
                           backend=backend,
                           crosstalk_prop=crosstalk_prop,
                           shots=8192)
示例#2
0
def get_result(jobfile_path, backend, provider=None, jobfile_dict=None):

    # define backend if backend is just a name of device
    if isinstance(backend, str) and provider is not None:
        backend = provider.get_backend(backend)
    elif isinstance(backend, str) and provider is None:
        raise ProviderUndefinedError('provider is undefined')

    # if jobfile_dict is None:
    #     # open job datum
    #     jobfile_dict = pickle_load(jobfile_path)

    ###############################################
    res_dict = pickle_load(jobfile_path)
    print("############################################")
    print("############################################")
    print(res_dict['qiskit']['job'].job_id())
    print("############################################")
    print("############################################")
    ###############################################

    # qiskit transpiler
    qiskit_job_dict = jobfile_dict['qiskit']
    qiskit_counts, qiskit_each_counts = _get_roe_mitigated_counts(
        qiskit_job_dict, backend)

    # xtalk adaptive transpiler
    xa_job_dict = jobfile_dict['xtalk_aware']
    xa_counts, xa_each_counts = _get_roe_mitigated_counts(xa_job_dict, backend)

    # simulator
    IBMQ.load_account()
    sim_provider = IBMQ.get_provider(hub='ibm-q-keio',
                                     group='keio-internal',
                                     project='keio-students')
    simulator = sim_provider.get_backend('ibmq_qasm_simulator')
    sim_job_dict = jobfile_dict['simulator']
    sim_job_id = sim_job_dict['job'].job_id()
    sim_job = simulator.retrieve_job(sim_job_id)
    sim_counts = sim_job.result().get_counts()
    sim_each_counts = _count_each(sim_job.result().get_counts())

    res_dict = {
        'qiskit': {
            'counts': qiskit_counts,
            'each_counts': qiskit_each_counts,
        },
        'xtalk_aware': {
            'counts': xa_counts,
            'each_counts': xa_each_counts,
        },
        'simulator': {
            'counts': sim_counts,
            'each_counts': sim_each_counts,
            'circuit': sim_job_dict['circuit']
        },
    }

    return res_dict
示例#3
0
def plot():
    output_path = "/Users/Yasuhiro/Documents/aqua/gp/experiments/data/ibmq_toronto/jsd_num.png"
    path = "/Users/Yasuhiro/Documents/aqua/gp/experiments/data/ibmq_toronto/jsd.pickle"
    jsd_dict = pickle_load(path)

    xlabels = []
    uniform_jsd = []
    qiskit_jsd = []
    xtalk_jsd = []

    label_y = ['Uniform', 'Qiskit transpiler', 'Crosstalk aware']
    for name, jsd_list in jsd_dict.items():
        colors = ['#dc143c', '#87cefa', '#000080']
        xlabels.append(name)
        uniform_jsd.append(np.sqrt(jsd_list[0]))
        qiskit_jsd.append(np.sqrt(jsd_list[1]))
        xtalk_jsd.append(np.sqrt(jsd_list[2]))

    x_pos = np.arange(len(xlabels))
    w = 0.2

    uni = plt.bar(x_pos - w,
                  uniform_jsd,
                  align='center',
                  width=0.2,
                  label=label_y[0],
                  color=colors[0])
    qis = plt.bar(x_pos,
                  qiskit_jsd,
                  align='center',
                  width=0.2,
                  label=label_y[1],
                  color=colors[1])
    xa = plt.bar(x_pos + w,
                 xtalk_jsd,
                 align='center',
                 width=0.2,
                 label=label_y[2],
                 color=colors[2])

    plt.ylabel('JS-Divergence', fontsize=18)
    plt.legend(handles=[uni, qis, xa], loc='best', shadow=True, fontsize=14)
    xlabels = ["Ⅰ", "Ⅱ", "Ⅲ", "Ⅳ", "Ⅴ", "Ⅵ", "Ⅶ", "Ⅷ", "Ⅸ", "Ⅹ", "Ⅺ", "Ⅻ"]
    plt.xticks([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], xlabels, fontsize=16)

    plt.savefig(output_path, dpi=200, bbox_inches="tight", pad_inches=0.1)
示例#4
0
def run():
    name = "ToffoliSWAP_QAOA4"
    IBMQ.load_account()
    provider = IBMQ.get_provider(hub='ibm-q-keio',
                                 group='keio-internal',
                                 project='reservations')
    backend = provider.get_backend('ibmq_toronto')
    jobfile_path = "/Users/Yasuhiro/Documents/aqua/gp/experiments/jobfiles/ibmq_toronto/2020-09-13T12:40:29_Toffoli_SWAP-1_QAOA_4-1.pickle"

    # result_dict = get_result(jobfile_path, backend)
    ################################################################
    job_dictdict = pickle_load(jobfile_path)
    jobfile_dict = {
        'qiskit': {
            'job': "5f5d94903e7dd000197b369f",
            'circuit': job_dictdict['qiskit']['circuit'],
            'job_cal': job_dictdict['qiskit']['job_cal'],
            'state_labels': job_dictdict['qiskit']['state_labels'],
        },
        'xtalk_aware': {
            'job': "5f5d949a3e7dd000197b36a0",
            'circuit': job_dictdict['xtalk_aware']['circuit'],
            'job_cal': job_dictdict['xtalk_aware']['job_cal'],
            'state_labels': job_dictdict['xtalk_aware']['state_labels'],
        },
        'simulator': {
            'job': job_dictdict['simulator']['job'],
            'circuit': job_dictdict['simulator']['circuit']
        }
    }
    result_dict = get_result(jobfile_path, backend, jobfile_dict=jobfile_dict)

    ################################################################
    qiskit_dict = result_dict['qiskit']
    xa_dict = result_dict['xtalk_aware']
    sim_dict = result_dict['simulator']

    # analyse whole result
    print("################################################################")
    print(qiskit_dict['counts'])
    print(xa_dict['counts'])
    print(sim_dict['counts'])
    print("################################################################")
    js1_total, js2_total, js_uni_total = analyse(
        _sort_by_key(qiskit_dict['counts']),
        _sort_by_key(xa_dict['counts']),
        _sort_by_key(sim_dict['counts']),
        num_bit=6)
    output_path = "/Users/Yasuhiro/Documents/aqua/gp/experiments/data/ibmq_toronto/plot/" + name + ".png"
    plot([[js_uni_total, js1_total, js2_total]], output_path)

    # analyse each results in multi-programming
    js_list = []
    num_bit_list = [4, 3]
    for qis, xa, sim, num_bit in zip(qiskit_dict['each_counts'],
                                     xa_dict['each_counts'],
                                     sim_dict['each_counts'], num_bit_list):
        js1_i, js2_i, js_uni_i = analyse(_sort_by_key(qis),
                                         _sort_by_key(xa),
                                         _sort_by_key(sim),
                                         num_bit=num_bit)
        js_list.append([js1_i, js2_i, js_uni_i])
    output_path = "/Users/Yasuhiro/Documents/aqua/gp/experiments/data/ibmq_toronto/plot/" + name + "_each.png"
    plot(listlist=js_list, output_path=output_path)

    res_path = "/Users/Yasuhiro/Documents/aqua/gp/experiments/data/ibmq_toronto/jsd.pickle"
    try:
        res = pickle_load(res_path)
    except:
        res = {}
    res[name] = [js_uni_total, js1_total, js2_total]
    pickle_dump(res, res_path)
示例#5
0
def run():
    name = "QFT3_Toffoli"
    IBMQ.load_account()
    provider = IBMQ.get_provider(hub='ibm-q-keio',
                                 group='keio-internal',
                                 project='reservations')
    backend = provider.get_backend('ibmq_toronto')
    jobfile_path = "/Users/Yasuhiro/Documents/aqua/gp/experiments/jobfiles/ibmq_toronto/2020-09-13T11:54:25_QFT_3-1_Toffoli-1.pickle"

    # result_dict = get_result(jobfile_path, backend)
    ################################################################
    job_dictdict = pickle_load(jobfile_path)
    jobfile_dict = {
        'qiskit': {
            'job': "5f5d89c7e554e3001bad25f9",
            'circuit': job_dictdict['qiskit']['circuit'],
            'job_cal': job_dictdict['qiskit']['job_cal'],
            'state_labels': job_dictdict['qiskit']['state_labels'],
        },
        'xtalk_aware': {
            'job': "5f5d89cfebc63a001994b05d",
            'circuit': job_dictdict['xtalk_aware']['circuit'],
            'job_cal': job_dictdict['xtalk_aware']['job_cal'],
            'state_labels': job_dictdict['xtalk_aware']['state_labels'],
        },
        'simulator': {
            'job': job_dictdict['simulator']['job'],
            'circuit': job_dictdict['simulator']['circuit']
        }
    }
    result_dict = get_result(jobfile_path, backend, jobfile_dict=jobfile_dict)

    ################################################################
    qiskit_dict = result_dict['qiskit']
    xa_dict = result_dict['xtalk_aware']
    sim_dict = result_dict['simulator']

    # analyse whole result
    print("################################################################")
    print(qiskit_dict['counts'])
    print(xa_dict['counts'])
    print(sim_dict['counts'])
    print("################################################################")
    js1, js2, js_uni = analyse(_sort_by_key(qiskit_dict['counts']),
                               _sort_by_key(xa_dict['counts']),
                               _sort_by_key(sim_dict['counts']),
                               num_bit=6)
    print(js1, js2, js_uni)
    output_path = "/Users/Yasuhiro/Documents/aqua/gp/experiments/data/ibmq_toronto/plot/" + name + ".png"
    plot([[js_uni, js1, js2]], output_path)

    # analyse each results in multi-programming
    js_list = []
    num_bit_list = [3, 3]
    for qis, xa, sim, num_bit in zip(qiskit_dict['each_counts'],
                                     xa_dict['each_counts'],
                                     sim_dict['each_counts'], num_bit_list):
        js1, js2, js_uni = analyse(_sort_by_key(qis),
                                   _sort_by_key(xa),
                                   _sort_by_key(sim),
                                   num_bit=num_bit)
        print(js1, js2, js_uni)
        js_list.append([js_uni, js1, js2])
    output_path = "/Users/Yasuhiro/Documents/aqua/gp/experiments/data/ibmq_toronto/plot/" + name + "_each.png"
    plot(listlist=js_list, output_path=output_path)