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)
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
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)
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)
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)