From 733ab0df076abb050967357b15d2ee9910a420e4 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 20 Jul 2023 15:27:08 -0400 Subject: [PATCH 01/29] Add metriq API install and client hello world --- scripts/postprocessing.py | 13 +++++++++++++ tox.ini | 6 +++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 scripts/postprocessing.py diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py new file mode 100644 index 0000000..9daf2f2 --- /dev/null +++ b/scripts/postprocessing.py @@ -0,0 +1,13 @@ + +import os +from metriq import MetriqClient +from metriq.models.result import ResultCreateRequest + +METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") + +def hello_metriq(): + client = MetriqClient(token=METRIQ_TOKEN) + print(client.hello()) + # >>> {'status': 'API is working', 'message': 'This is the Metriq public REST API.'} + +hello_metriq() \ No newline at end of file diff --git a/tox.ini b/tox.ini index cd1d7a7..023bbb4 100644 --- a/tox.ini +++ b/tox.ini @@ -11,5 +11,9 @@ deps = qiskit-terra requests pyzx -commands = + tea-client==0.0.7 + tea-console==0.0.5 + typer==0.3.2 +commands = + pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/master python {toxinidir}/scripts/circuit_depth_and_gate_count.py From e4e9c7547289b1bbab0614b3c3ec7780bbaa0a8c Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Fri, 21 Jul 2023 18:30:44 -0400 Subject: [PATCH 02/29] Read files from results folder --- scripts/postprocessing.py | 44 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 9daf2f2..b788b9a 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -10,4 +10,46 @@ def hello_metriq(): print(client.hello()) # >>> {'status': 'API is working', 'message': 'This is the Metriq public REST API.'} -hello_metriq() \ No newline at end of file +# hello_metriq() + +def process_results(): + folder_path = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "results")) + filenames = os.listdir(folder_path) + for filename in filenames: + with open(os.path.join(folder_path, filename), "r") as file: + content = file.read() + print(content) + print("-" * 25) + + # TODO: + # 2. compute ave and std for each file (one for each architecture) + # 3. create result item and add to client + # 4. create metriq submission item + # 5. submit item though metriq API + + # client = MetriqClient(token=METRIQ_TOKEN) + # methods = client.method_names_get() + # print(*methods, sep = "\n") + + # print(client.task_names_get()) #400: Request validation error + # print(client.task_get("26")) #ex1_226.qasm (Aspen) #400: Request validation error + # print(client.task_get("27")) #ex1_226.qasm (Rochester) #400: Request validation error + + # Result attributes from https://github.com/unitaryfund/metriq-client/blob/development/metriq/models/result.py + # Create result item + + # result = ResultCreateRequest() + # result.task = "26" #ex1_226.qasm (Aspen) + # result.method = "Qiskit compilation" + # result.metricName = "gate count" + # result.metricValue = "" + # result.evaluatedAt = "" + # result.isHigherBetter = "false" + # result.sampleSize = SAMPLE_SIZE + # result.notes = f"qiskit-terra version: {VERSION}, optimization level {OPTIMIZATION_LEVEL}, gate count stdev: {gate_count_stdev}" + + # client.result_add(result) + # result = client.result_metric_names() + # print(result) + +process_results() \ No newline at end of file From 8e24e5f6e3518fccc0ddc8d0f74d0aeed64f000c Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Mon, 24 Jul 2023 17:46:14 -0400 Subject: [PATCH 03/29] Get children tasks info from API --- scripts/postprocessing.py | 42 +++++++++++++++++++++++---------------- tox.ini | 7 ++++--- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index b788b9a..34e9592 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -1,7 +1,8 @@ import os +# import json from metriq import MetriqClient -from metriq.models.result import ResultCreateRequest +# from metriq.models.result import ResultCreateRequest METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") @@ -27,29 +28,36 @@ def process_results(): # 4. create metriq submission item # 5. submit item though metriq API - # client = MetriqClient(token=METRIQ_TOKEN) - # methods = client.method_names_get() - # print(*methods, sep = "\n") + client = MetriqClient(token=METRIQ_TOKEN) + print(client.hello()) + + # PLATFORM ENDPOINT + # client.http.get(f"/platform/") #HttpClientError 200 - # print(client.task_names_get()) #400: Request validation error - # print(client.task_get("26")) #ex1_226.qasm (Aspen) #400: Request validation error - # print(client.task_get("27")) #ex1_226.qasm (Rochester) #400: Request validation error + # TASK ENDPOINTS + # response = client.http.get(f"/task/names/") + # print(response["message"]) + # print(*response["data"], sep = "\n") + # {'id': 26, 'name': 'ex1_226.qasm (Aspen)', 'top': 0} + # {'id': 27, 'name': 'ex1_226.qasm (Rochester)', 'top': 0} - # Result attributes from https://github.com/unitaryfund/metriq-client/blob/development/metriq/models/result.py - # Create result item + # response = client.http.get(f"/task/26/") + # print(response["message"]) + # print(json.dumps(response["data"], indent=4)) + # TODO: Create result item # result = ResultCreateRequest() - # result.task = "26" #ex1_226.qasm (Aspen) + # result.task = "ex1_226.qasm (Aspen)" + # result.platform = "Rigetti 16Q Aspen-1" # result.method = "Qiskit compilation" - # result.metricName = "gate count" - # result.metricValue = "" - # result.evaluatedAt = "" - # result.isHigherBetter = "false" + # result.metricName = "Circuit depth" + # result.metricValue = + # result.evaluatedAt = "Rigetti 16Q Aspen-1" + # result.isHigherBetter = false # result.sampleSize = SAMPLE_SIZE - # result.notes = f"qiskit-terra version: {VERSION}, optimization level {OPTIMIZATION_LEVEL}, gate count stdev: {gate_count_stdev}" + # result.notes = "" # client.result_add(result) - # result = client.result_metric_names() - # print(result) + # print(client.result_metric_names()) process_results() \ No newline at end of file diff --git a/tox.ini b/tox.ini index 023bbb4..bfee5e1 100644 --- a/tox.ini +++ b/tox.ini @@ -1,8 +1,8 @@ [tox] minversion = 3.8 -envlist = {python3.8}-terra{13,14,15} +envlist = py38,{py3.8}-terra{13,14,15} [testenv] -description = run benchmark task file +description = run circuit benchmark deps = terra13: qiskit-terra==0.13.0 terra14: qiskit-terra==0.14.2 @@ -16,4 +16,5 @@ deps = typer==0.3.2 commands = pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/master - python {toxinidir}/scripts/circuit_depth_and_gate_count.py + ; python {toxinidir}/scripts/circuit_depth_and_gate_count.py + python {toxinidir}/scripts/postprocessing.py \ No newline at end of file From 06df3d151cedf76c0710003b01b926288fe80853 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Mon, 24 Jul 2023 17:46:40 -0400 Subject: [PATCH 04/29] Add qiskit version note --- scripts/qiskit_versions.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/qiskit_versions.py b/scripts/qiskit_versions.py index 74ba725..c63d9d6 100644 --- a/scripts/qiskit_versions.py +++ b/scripts/qiskit_versions.py @@ -50,9 +50,9 @@ def get_qiskit_versions_info() -> []: return filtered_releases # Uncomment lines alone to test this file output on its own -# versions_info = get_qiskit_versions_info() -# print('Qiskit Terra versions:') -# print(*versions_info, sep='\n') +versions_info = get_qiskit_versions_info() +print('Qiskit Terra versions:') +print(*versions_info, sep='\n') """ Qiskit Terra versions: @@ -67,5 +67,5 @@ def get_qiskit_versions_info() -> []: {'version': '0.21.2', 'date': '2022-08-23T21:07:29', 'python_version': '>=3.7'} {'version': '0.22.4', 'date': '2023-01-17T13:01:47', 'python_version': '>=3.7'} {'version': '0.23.3', 'date': '2023-03-21T19:16:16', 'python_version': '>=3.7'} -{'version': '0.24.0', 'date': '2023-05-04T19:14:05', 'python_version': '>=3.7'} +{'version': '0.24.2', 'date': '2023-07-19T18:23:22', 'python_version': '>=3.7'} => TODO: Update v0.24 results using this release """ From 8a87687e7bedab56980242a7343b273c15e476cf Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 27 Jul 2023 14:58:14 -0400 Subject: [PATCH 05/29] Pass env var to tox Investigate task endpoints and metriq version --- scripts/postprocessing.py | 25 ++++++++++++++++--------- tox.ini | 5 ++++- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 34e9592..0f89bc4 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -3,24 +3,29 @@ # import json from metriq import MetriqClient # from metriq.models.result import ResultCreateRequest +from metriq.version import __version__ +print("metriq-client version: ", __version__) #0.1.2 +# from paperswithcode.version import __version__ +# print("paperswithcode version: ", __version__) #0.1.2 + METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") +print("token", METRIQ_TOKEN) def hello_metriq(): client = MetriqClient(token=METRIQ_TOKEN) print(client.hello()) # >>> {'status': 'API is working', 'message': 'This is the Metriq public REST API.'} - # hello_metriq() def process_results(): - folder_path = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "results")) - filenames = os.listdir(folder_path) - for filename in filenames: - with open(os.path.join(folder_path, filename), "r") as file: - content = file.read() - print(content) - print("-" * 25) + # folder_path = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "results")) + # filenames = os.listdir(folder_path) + # for filename in filenames: + # with open(os.path.join(folder_path, filename), "r") as file: + # content = file.read() + # print(content) + # print("-" * 25) # TODO: # 2. compute ave and std for each file (one for each architecture) @@ -35,12 +40,14 @@ def process_results(): # client.http.get(f"/platform/") #HttpClientError 200 # TASK ENDPOINTS + print(client.task_names_get()) # ValidationError(400: Request validation error.) + # print(client.task_get("26")) # ValidationError(400: Request validation error.) + # Workaround: # response = client.http.get(f"/task/names/") # print(response["message"]) # print(*response["data"], sep = "\n") # {'id': 26, 'name': 'ex1_226.qasm (Aspen)', 'top': 0} # {'id': 27, 'name': 'ex1_226.qasm (Rochester)', 'top': 0} - # response = client.http.get(f"/task/26/") # print(response["message"]) # print(json.dumps(response["data"], indent=4)) diff --git a/tox.ini b/tox.ini index bfee5e1..c3a5032 100644 --- a/tox.ini +++ b/tox.ini @@ -12,9 +12,12 @@ deps = requests pyzx tea-client==0.0.7 - tea-console==0.0.5 + tea-console==0.0.6 typer==0.3.2 +passenv = METRIQ_TOKEN commands = pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/master + ; pip install --upgrade https://github.com/unitaryfund/metriq-client/releases/tag/v0.2.0 + ; pip install -e git://github.com/unitaryfund/metriq-client.git@0.2.0#egg=metriq-client ; python {toxinidir}/scripts/circuit_depth_and_gate_count.py python {toxinidir}/scripts/postprocessing.py \ No newline at end of file From d505d285c32ade2eae252d4b4a5fdae9e2ff549e Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 27 Jul 2023 15:26:47 -0400 Subject: [PATCH 06/29] Fix metriq-client install --- tox.ini | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tox.ini b/tox.ini index d7394d0..ef28772 100644 --- a/tox.ini +++ b/tox.ini @@ -17,8 +17,6 @@ deps = typer==0.3.2 passenv = METRIQ_TOKEN commands = - pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/master - ; pip install --upgrade https://github.com/unitaryfund/metriq-client/releases/tag/v0.2.0 - ; pip install -e git://github.com/unitaryfund/metriq-client.git@0.2.0#egg=metriq-client + pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/development ; python {toxinidir}/scripts/circuit_depth_and_gate_count.py python {toxinidir}/scripts/postprocessing.py From 83de4fbb3fbfaf3139feb8154b417a93b93edbf6 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Tue, 1 Aug 2023 10:36:59 -0400 Subject: [PATCH 07/29] Read csv cleanup --- scripts/postprocessing.py | 39 ++++++++++++--------------------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 0f89bc4..5f19a0a 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -1,34 +1,25 @@ import os -# import json +import pandas as pd from metriq import MetriqClient # from metriq.models.result import ResultCreateRequest -from metriq.version import __version__ -print("metriq-client version: ", __version__) #0.1.2 -# from paperswithcode.version import __version__ -# print("paperswithcode version: ", __version__) #0.1.2 - METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") -print("token", METRIQ_TOKEN) - -def hello_metriq(): - client = MetriqClient(token=METRIQ_TOKEN) - print(client.hello()) - # >>> {'status': 'API is working', 'message': 'This is the Metriq public REST API.'} -# hello_metriq() +RESULTS_PATH = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results")) def process_results(): - # folder_path = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "results")) - # filenames = os.listdir(folder_path) - # for filename in filenames: - # with open(os.path.join(folder_path, filename), "r") as file: - # content = file.read() - # print(content) - # print("-" * 25) + filenames = os.listdir(RESULTS_PATH) + for filename in filenames: + file_path = os.path.join(RESULTS_PATH, f"{filename}") + df = pd.read_csv(file_path) + #Get columns + # print(df.keys()) + + # compute ave and std for each file (one for each architecture) + # circuit_depth_mean = df["Circuit depth"].mean() #KeyError: 'Circuit depth' + # print("Circuit depth mean: ", circuit_depth_mean) # TODO: - # 2. compute ave and std for each file (one for each architecture) # 3. create result item and add to client # 4. create metriq submission item # 5. submit item though metriq API @@ -40,17 +31,11 @@ def process_results(): # client.http.get(f"/platform/") #HttpClientError 200 # TASK ENDPOINTS - print(client.task_names_get()) # ValidationError(400: Request validation error.) - # print(client.task_get("26")) # ValidationError(400: Request validation error.) - # Workaround: # response = client.http.get(f"/task/names/") # print(response["message"]) # print(*response["data"], sep = "\n") # {'id': 26, 'name': 'ex1_226.qasm (Aspen)', 'top': 0} # {'id': 27, 'name': 'ex1_226.qasm (Rochester)', 'top': 0} - # response = client.http.get(f"/task/26/") - # print(response["message"]) - # print(json.dumps(response["data"], indent=4)) # TODO: Create result item # result = ResultCreateRequest() From 55aeeafc34c554773ad5992bd7d31f0b1a95578e Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Tue, 1 Aug 2023 16:50:40 -0400 Subject: [PATCH 08/29] Calculate dataframe mean Fix csv column read --- scripts/postprocessing.py | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 5f19a0a..08785ff 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -7,25 +7,28 @@ METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") RESULTS_PATH = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results")) -def process_results(): +def submit_all(): filenames = os.listdir(RESULTS_PATH) for filename in filenames: file_path = os.path.join(RESULTS_PATH, f"{filename}") - df = pd.read_csv(file_path) - #Get columns - # print(df.keys()) + df = pd.read_csv(file_path, sep='|') + process_results(df) - # compute ave and std for each file (one for each architecture) - # circuit_depth_mean = df["Circuit depth"].mean() #KeyError: 'Circuit depth' - # print("Circuit depth mean: ", circuit_depth_mean) +def process_results(dataframe): + # columns = dataframe.columns.tolist() + # print(columns) + # Compute ave and std for each file (one for each architecture) + circuit_depth_mean = dataframe["Circuit depth"].mean() #KeyError: 'Circuit depth' + print("Circuit depth mean: ", circuit_depth_mean) # TODO: - # 3. create result item and add to client + # 3. create result item + # 4. add result item client # 4. create metriq submission item # 5. submit item though metriq API - client = MetriqClient(token=METRIQ_TOKEN) - print(client.hello()) + # client = MetriqClient(token=METRIQ_TOKEN) + # print(client.hello()) # PLATFORM ENDPOINT # client.http.get(f"/platform/") #HttpClientError 200 @@ -52,4 +55,4 @@ def process_results(): # client.result_add(result) # print(client.result_metric_names()) -process_results() \ No newline at end of file +submit_all() \ No newline at end of file From d079b6fa3e913f46b6327746f9f08b8cd86872d1 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Tue, 1 Aug 2023 17:28:34 -0400 Subject: [PATCH 09/29] Calculate metrics ave and std from csv --- scripts/postprocessing.py | 58 ++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 08785ff..4affbe8 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -6,41 +6,37 @@ METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") RESULTS_PATH = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results")) +TASKS = {"25": "ex1_226.qasm", "26": "ex1_226.qasm (Aspen)", "27": "ex1_226.qasm (Rochester)"} -def submit_all(): +def submit_all(task): filenames = os.listdir(RESULTS_PATH) - for filename in filenames: - file_path = os.path.join(RESULTS_PATH, f"{filename}") - df = pd.read_csv(file_path, sep='|') - process_results(df) -def process_results(dataframe): - # columns = dataframe.columns.tolist() - # print(columns) - # Compute ave and std for each file (one for each architecture) - circuit_depth_mean = dataframe["Circuit depth"].mean() #KeyError: 'Circuit depth' - print("Circuit depth mean: ", circuit_depth_mean) + for filename in filenames: + architectures = ["aspen", "rochester"] + for arch in architectures: + if arch in filename and arch in task.lower(): + print(arch) + file_path = os.path.join(RESULTS_PATH, f"{filename}") + df = pd.read_csv(file_path, sep='|') + process_results(df, task) + +def process_results(dataframe, task): + metrics = ["Circuit depth", "Gate count"] + for metric in metrics: + print(metric,"ave: ", dataframe[metric].mean()) + print(metric,"std: ", dataframe[metric].std()) + print("---") # TODO: - # 3. create result item - # 4. add result item client - # 4. create metriq submission item - # 5. submit item though metriq API - - # client = MetriqClient(token=METRIQ_TOKEN) - # print(client.hello()) - - # PLATFORM ENDPOINT - # client.http.get(f"/platform/") #HttpClientError 200 - - # TASK ENDPOINTS - # response = client.http.get(f"/task/names/") - # print(response["message"]) - # print(*response["data"], sep = "\n") - # {'id': 26, 'name': 'ex1_226.qasm (Aspen)', 'top': 0} - # {'id': 27, 'name': 'ex1_226.qasm (Rochester)', 'top': 0} - - # TODO: Create result item + # - Gather relevant results from csv + # - create result item + # - add result item client + # - create metriq submission item + # - submit item though metriq API + + client = MetriqClient(token=METRIQ_TOKEN) + print(client.hello()) + # result = ResultCreateRequest() # result.task = "ex1_226.qasm (Aspen)" # result.platform = "Rigetti 16Q Aspen-1" @@ -55,4 +51,4 @@ def process_results(dataframe): # client.result_add(result) # print(client.result_metric_names()) -submit_all() \ No newline at end of file +submit_all(TASKS["26"]) \ No newline at end of file From 5bf237e59abb5d71e41e379f722692ba0b4f5dfe Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 3 Aug 2023 11:24:57 -0400 Subject: [PATCH 10/29] Create result item and populate with processed data --- scripts/postprocessing.py | 43 +++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 4affbe8..258beac 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -2,7 +2,7 @@ import os import pandas as pd from metriq import MetriqClient -# from metriq.models.result import ResultCreateRequest +from metriq.models.result import ResultCreateRequest METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") RESULTS_PATH = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results")) @@ -15,40 +15,39 @@ def submit_all(task): architectures = ["aspen", "rochester"] for arch in architectures: if arch in filename and arch in task.lower(): - print(arch) file_path = os.path.join(RESULTS_PATH, f"{filename}") df = pd.read_csv(file_path, sep='|') process_results(df, task) def process_results(dataframe, task): + client = MetriqClient(token=METRIQ_TOKEN) + # print(client.hello()) + metrics = ["Circuit depth", "Gate count"] for metric in metrics: - print(metric,"ave: ", dataframe[metric].mean()) - print(metric,"std: ", dataframe[metric].std()) - print("---") + result = ResultCreateRequest() + result.task = task + result.platform = dataframe["Platform"].iloc[0] + result.method = "Qiskit compilation" + result.metricName = metric + result.metricValue = dataframe[metric].mean() + result.evaluatedAt = dataframe["Date"].iloc[0] + result.isHigherBetter = False + # result.sampleSize = len(dataframe.index) object has no field "sampleSize" + + # Get extra info and add to notes + sample_size = len(dataframe.index) + metric_std = dataframe[metric].std() + opt_level = dataframe["Opt level"].iloc[0] + version = dataframe["Method"].iloc[0].split(" ")[1] + result.notes = f"Stdev: {round(metric_std,3)}, Optimization level:{opt_level}, qiskit-terra version:{version}, sample size: {sample_size}" # TODO: - # - Gather relevant results from csv - # - create result item # - add result item client # - create metriq submission item # - submit item though metriq API - client = MetriqClient(token=METRIQ_TOKEN) - print(client.hello()) - - # result = ResultCreateRequest() - # result.task = "ex1_226.qasm (Aspen)" - # result.platform = "Rigetti 16Q Aspen-1" - # result.method = "Qiskit compilation" - # result.metricName = "Circuit depth" - # result.metricValue = - # result.evaluatedAt = "Rigetti 16Q Aspen-1" - # result.isHigherBetter = false - # result.sampleSize = SAMPLE_SIZE - # result.notes = "" - - # client.result_add(result) + # client.result_add(result) #missing 1 required positional argument: 'submission_id' # print(client.result_metric_names()) submit_all(TASKS["26"]) \ No newline at end of file From 465953f280b87d8c23cdd062cf1758a248e5ddec Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 3 Aug 2023 11:44:01 -0400 Subject: [PATCH 11/29] Fix result param type --- scripts/postprocessing.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 258beac..6f457dd 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -32,7 +32,7 @@ def process_results(dataframe, task): result.metricName = metric result.metricValue = dataframe[metric].mean() result.evaluatedAt = dataframe["Date"].iloc[0] - result.isHigherBetter = False + result.isHigherBetter = "false" # result.sampleSize = len(dataframe.index) object has no field "sampleSize" # Get extra info and add to notes From ace59c64df0e42288db20c79dbc5e547311474f0 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Wed, 9 Aug 2023 14:01:05 -0400 Subject: [PATCH 12/29] Create submission --- scripts/postprocessing.py | 54 ++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 6f457dd..53c975d 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -3,51 +3,59 @@ import pandas as pd from metriq import MetriqClient from metriq.models.result import ResultCreateRequest +from metriq.models.submission import (Submission, SubmissionCreateRequest) +CONTENT_URL = "https://github.com/qiskit-community/submit-metriq" METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") RESULTS_PATH = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results")) TASKS = {"25": "ex1_226.qasm", "26": "ex1_226.qasm (Aspen)", "27": "ex1_226.qasm (Rochester)"} -def submit_all(task): +def submit_all(task_name: str): + client = MetriqClient(token=METRIQ_TOKEN) + # print(client.hello()) + submission = create_submission(client,task_name) filenames = os.listdir(RESULTS_PATH) for filename in filenames: architectures = ["aspen", "rochester"] for arch in architectures: - if arch in filename and arch in task.lower(): + if arch in filename and arch in task_name.lower(): file_path = os.path.join(RESULTS_PATH, f"{filename}") df = pd.read_csv(file_path, sep='|') - process_results(df, task) + process_results(df, task_name, client, submission.id) -def process_results(dataframe, task): - client = MetriqClient(token=METRIQ_TOKEN) - # print(client.hello()) +def create_submission(client: MetriqClient, task_name: str) -> Submission: + submission_req = SubmissionCreateRequest() + submission_req.name = task_name + submission_req.contentUrl = CONTENT_URL + submission_req.description = f"Qiskit compilation for the {task_name} benchmark circuit" + + #TODO: Add submission tags, tasks and methods + + return client.submission_add(submission_req) + +def process_results(dataframe, task_name: str, client: MetriqClient, submission_id: str): metrics = ["Circuit depth", "Gate count"] for metric in metrics: - result = ResultCreateRequest() - result.task = task - result.platform = dataframe["Platform"].iloc[0] - result.method = "Qiskit compilation" - result.metricName = metric - result.metricValue = dataframe[metric].mean() - result.evaluatedAt = dataframe["Date"].iloc[0] - result.isHigherBetter = "false" - # result.sampleSize = len(dataframe.index) object has no field "sampleSize" + result_item = ResultCreateRequest() + result_item.task = task_name + result_item.platform = dataframe["Platform"].iloc[0] + result_item.method = "Qiskit compilation" + result_item.metricName = metric + result_item.metricValue = round(dataframe[metric].mean()) + result_item.evaluatedAt = dataframe["Date"].iloc[0] + result_item.isHigherBetter = "false" + # result.sampleSize = len(dataframe.index) #object has no field "sampleSize" # Get extra info and add to notes sample_size = len(dataframe.index) metric_std = dataframe[metric].std() opt_level = dataframe["Opt level"].iloc[0] version = dataframe["Method"].iloc[0].split(" ")[1] - result.notes = f"Stdev: {round(metric_std,3)}, Optimization level:{opt_level}, qiskit-terra version:{version}, sample size: {sample_size}" - - # TODO: - # - add result item client - # - create metriq submission item - # - submit item though metriq API + result_item.notes = f"Stdev: {round(metric_std,3)}, Optimization level:{opt_level}, qiskit-terra version:{version}, sample size: {sample_size}" + # print(result_item) - # client.result_add(result) #missing 1 required positional argument: 'submission_id' - # print(client.result_metric_names()) + client.result_add(result_item, submission_id) submit_all(TASKS["26"]) \ No newline at end of file From 974b5babcdacd3de634ddfb8f88bb95a12b1bf74 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Wed, 9 Aug 2023 14:08:43 -0400 Subject: [PATCH 13/29] Add submission params --- scripts/postprocessing.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 53c975d..5fa4d94 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -9,6 +9,7 @@ METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") RESULTS_PATH = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results")) TASKS = {"25": "ex1_226.qasm", "26": "ex1_226.qasm (Aspen)", "27": "ex1_226.qasm (Rochester)"} +METHOD = "Qiskit compilation" def submit_all(task_name: str): client = MetriqClient(token=METRIQ_TOKEN) @@ -30,9 +31,10 @@ def create_submission(client: MetriqClient, task_name: str) -> Submission: submission_req.name = task_name submission_req.contentUrl = CONTENT_URL submission_req.description = f"Qiskit compilation for the {task_name} benchmark circuit" + submission_req.tasks = [task_name] + submission_req.methods = [METHOD] + submission_req.tags = ["quantum circuits", "compiler", "compilation", "ibm qiskit"] - #TODO: Add submission tags, tasks and methods - return client.submission_add(submission_req) def process_results(dataframe, task_name: str, client: MetriqClient, submission_id: str): @@ -41,7 +43,7 @@ def process_results(dataframe, task_name: str, client: MetriqClient, submission_ result_item = ResultCreateRequest() result_item.task = task_name result_item.platform = dataframe["Platform"].iloc[0] - result_item.method = "Qiskit compilation" + result_item.method = METHOD result_item.metricName = metric result_item.metricValue = round(dataframe[metric].mean()) result_item.evaluatedAt = dataframe["Date"].iloc[0] From 24dee02d2e8fa680461795dab20b0e048a700da8 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Wed, 9 Aug 2023 15:34:43 -0400 Subject: [PATCH 14/29] Adjust submission params Cleanup --- scripts/circuit_depth_and_gate_count.py | 22 ---------------------- scripts/postprocessing.py | 17 +++++++++-------- 2 files changed, 9 insertions(+), 30 deletions(-) diff --git a/scripts/circuit_depth_and_gate_count.py b/scripts/circuit_depth_and_gate_count.py index 9875cbc..9af5444 100644 --- a/scripts/circuit_depth_and_gate_count.py +++ b/scripts/circuit_depth_and_gate_count.py @@ -42,28 +42,6 @@ def run_task(qasm_id: str): output_path = os.path.abspath(os.path.join(os.path.dirname( __file__ ),"..","benchmarking","results",f"{qasm_id}-qiskit{VERSION}-{arch}.csv")) df.to_csv(output_path, sep="|") - # Calc ave + stdev using pandas and send results for metriq submission - # TODO: Move it to a post processing script that reads from generated csv files - # metriq_results1 = { - # "Name":[f"{qasm_id}.qasm circuit benchmark"], - # "Method" :[METHOD], - # "Date":[DATE], - # "Sample Size":[SAMPLE_SIZE], - # "Platform":[arch], - # "Metric Name":["Circuit depth"], - # "Metric Value":[round(df["Circuit depth"].mean())], - # "Notes":[f"Seed:{i}, Version:{VERSION}, Opt Level:{OPTIMIZATION_LEVEL}, Stdev: {round(df['Circuit depth'].std(),3)}"] - # } - # metriq_results2 = { - # "Name":[f"{qasm_id}.qasm circuit benchmark"], - # "Method" :[METHOD], - # "Date":[DATE], - # "Sample Size":[SAMPLE_SIZE], - # "Platform":[arch], - # "Metric Name":["Gate count"], - # "Metric Value":[round(df["Gate count"].mean())], - # "Notes":[f"Seed:{i}, Version:{VERSION}, Opt Level:{OPTIMIZATION_LEVEL}, Stdev: {round(df['Gate count'].std(),3)}"] - # } print(f"{arch}\n", f"- Circuit depth - ave: {round(df['Circuit depth'].mean())} | stdev: {round(df['Circuit depth'].std(),3)}\n", f"- Gate count - ave: {round(df['Gate count'].mean())} | stdev: {round(df['Gate count'].std(),3)}") diff --git a/scripts/postprocessing.py b/scripts/postprocessing.py index 5fa4d94..227d7bc 100644 --- a/scripts/postprocessing.py +++ b/scripts/postprocessing.py @@ -14,9 +14,13 @@ def submit_all(task_name: str): client = MetriqClient(token=METRIQ_TOKEN) # print(client.hello()) + submission = create_submission(client,task_name) - filenames = os.listdir(RESULTS_PATH) + submission.tasks = [task_name] + submission.methods = [METHOD] + submission.tags = ["quantum circuits", "compiler", "compilation", "ibm qiskit"] + filenames = os.listdir(RESULTS_PATH) for filename in filenames: architectures = ["aspen", "rochester"] for arch in architectures: @@ -30,12 +34,8 @@ def create_submission(client: MetriqClient, task_name: str) -> Submission: submission_req = SubmissionCreateRequest() submission_req.name = task_name submission_req.contentUrl = CONTENT_URL - submission_req.description = f"Qiskit compilation for the {task_name} benchmark circuit" - submission_req.tasks = [task_name] - submission_req.methods = [METHOD] - submission_req.tags = ["quantum circuits", "compiler", "compilation", "ibm qiskit"] - - return client.submission_add(submission_req) + submission_req.description = f"Qiskit compilation for {task_name} benchmark circuit" + return client.submission_add(submission_req) #tea_client.errors.HttpClientError: HttpClientError(401: Unauthorized) def process_results(dataframe, task_name: str, client: MetriqClient, submission_id: str): metrics = ["Circuit depth", "Gate count"] @@ -60,4 +60,5 @@ def process_results(dataframe, task_name: str, client: MetriqClient, submission_ client.result_add(result_item, submission_id) -submit_all(TASKS["26"]) \ No newline at end of file +submit_all(TASKS["26"]) +submit_all(TASKS["27"]) \ No newline at end of file From 82f716938a1843e9b80282c6195d7e4a58f52b58 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Wed, 16 Aug 2023 17:03:28 -0400 Subject: [PATCH 15/29] Create boxplot visualizations --- .../visualizations/boxplot-aspen_depth.png | Bin 0 -> 35685 bytes .../visualizations/boxplot-aspen_gates.png | Bin 0 -> 35798 bytes .../boxplot-rochester_depth.png | Bin 0 -> 33802 bytes .../boxplot-rochester_gates.png | Bin 0 -> 34457 bytes scripts/data_visualization_example.py | 77 ++++++++++++++++++ 5 files changed, 77 insertions(+) create mode 100644 benchmarking/results/visualizations/boxplot-aspen_depth.png create mode 100644 benchmarking/results/visualizations/boxplot-aspen_gates.png create mode 100644 benchmarking/results/visualizations/boxplot-rochester_depth.png create mode 100644 benchmarking/results/visualizations/boxplot-rochester_gates.png create mode 100644 scripts/data_visualization_example.py diff --git a/benchmarking/results/visualizations/boxplot-aspen_depth.png b/benchmarking/results/visualizations/boxplot-aspen_depth.png new file mode 100644 index 0000000000000000000000000000000000000000..b40f8264dfb873efba1caada64e52ac4a26461f9 GIT binary patch literal 35685 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 RQ>bK`4I5{AV#o~t{{hjYPO|_2 literal 0 HcmV?d00001 diff --git a/benchmarking/results/visualizations/boxplot-aspen_gates.png b/benchmarking/results/visualizations/boxplot-aspen_gates.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b86b9b4ca7c5a2d4fa62120d16c0b179896436 GIT binary patch literal 35798 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 LOo$yfcf)@H_uAB; literal 0 HcmV?d00001 diff --git a/benchmarking/results/visualizations/boxplot-rochester_depth.png b/benchmarking/results/visualizations/boxplot-rochester_depth.png new file mode 100644 index 0000000000000000000000000000000000000000..405ae1649466e518f9a48b225602f02464d5d64a GIT binary patch literal 33802 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%0DkQ)6c<;6RAYJL@j(&4Uat|c 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 NyY=b1{fiNE{uj)|#Nhw{ literal 0 HcmV?d00001 diff --git a/scripts/data_visualization_example.py b/scripts/data_visualization_example.py new file mode 100644 index 0000000..973af6c --- /dev/null +++ b/scripts/data_visualization_example.py @@ -0,0 +1,77 @@ +import os +import pandas as pd +import seaborn as sns +import matplotlib.pyplot as plt +import glob + +# All results +csv_files = glob.glob(os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results", "*.csv"))) + +# Filter by architecture +architectures = {"aspen" : "rigetti_16q_aspen", "rochester" : "ibm_rochester"} +aspen_files = [file for file in csv_files if architectures["aspen"] in file] +rochester_files = [file for file in csv_files if architectures["rochester"] in file] + +# Store dataframes by architecture +aspen_dataframes = [] +rochester_dataframes = [] + +# For each architecture, read each file and store its dataframe +for csv_file_path in aspen_files: + df = pd.read_csv(csv_file_path, sep="|") + aspen_dataframes.append(df) + +for csv_file_path in rochester_files: + df = pd.read_csv(csv_file_path, sep="|") + rochester_dataframes.append(df) + +# Concatenate all dataframes by architecture +aspen_combined_df = pd.concat(aspen_dataframes, ignore_index=True) +rochester_combined_df = pd.concat(rochester_dataframes, ignore_index=True) + +# Get data columns for plotting chart +date_col = "Date" +circuit_depth_col = "Circuit depth" +gate_count_col = "Gate count" + +# Sort dataframes by date +aspen_combined_df.sort_values(by=date_col, inplace=True) +rochester_combined_df.sort_values(by=date_col, inplace=True) + +# Enable grid lines +sns.set(style="whitegrid") + +# Create boxplots for aspen architecture +# Circuit depth +plt.figure(figsize=(10,6)) +sns.boxplot(data=aspen_combined_df,x=date_col,y=circuit_depth_col) +plt.title(f"{circuit_depth_col} distribution of Qiskit compilation for {architectures['aspen']}") +plt.xticks(rotation=90) +plt.tight_layout() +plt.show() +# Gate count +plt.figure(figsize=(10,6)) +sns.boxplot(data=aspen_combined_df,x=date_col,y=gate_count_col) +plt.title(f"{gate_count_col} distribution of Qiskit compilation for {architectures['aspen']}") +plt.xticks(rotation=90) +plt.tight_layout() +plt.show() + +# Create boxplots for rochester architecture +# Circuit depth +plt.figure(figsize=(10,6)) +sns.boxplot(data=rochester_combined_df,x=date_col,y=circuit_depth_col) +plt.title(f"{circuit_depth_col} distribution of Qiskit compilation for {architectures['rochester']}") +plt.xticks(rotation=90) +plt.tight_layout() +plt.show() +# Gate count +plt.figure(figsize=(10,6)) +sns.boxplot(data=rochester_combined_df,x=date_col,y=gate_count_col) +plt.title(f"{gate_count_col} distribution of Qiskit compilation for {architectures['rochester']}") +plt.xticks(rotation=90) +plt.tight_layout() +plt.show() + + + From 78cae35c6b35a541db3b0d0e3664d189bdd17a04 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Wed, 16 Aug 2023 17:30:26 -0400 Subject: [PATCH 16/29] Rename folder --- .../circuit_depth_and_gate_count.py | 0 .../data_visualization_example.py | 0 {scripts => src}/postprocessing.py | 0 {scripts => src}/qiskit_versions.py | 29 +++++++++++++------ {scripts => src}/run_tox_envs.py | 2 +- tox.ini | 4 +-- 6 files changed, 23 insertions(+), 12 deletions(-) rename {scripts => src}/circuit_depth_and_gate_count.py (100%) rename {scripts => src}/data_visualization_example.py (100%) rename {scripts => src}/postprocessing.py (100%) rename {scripts => src}/qiskit_versions.py (78%) rename {scripts => src}/run_tox_envs.py (94%) diff --git a/scripts/circuit_depth_and_gate_count.py b/src/circuit_depth_and_gate_count.py similarity index 100% rename from scripts/circuit_depth_and_gate_count.py rename to src/circuit_depth_and_gate_count.py diff --git a/scripts/data_visualization_example.py b/src/data_visualization_example.py similarity index 100% rename from scripts/data_visualization_example.py rename to src/data_visualization_example.py diff --git a/scripts/postprocessing.py b/src/postprocessing.py similarity index 100% rename from scripts/postprocessing.py rename to src/postprocessing.py diff --git a/scripts/qiskit_versions.py b/src/qiskit_versions.py similarity index 78% rename from scripts/qiskit_versions.py rename to src/qiskit_versions.py index 6e1c62d..3f916c5 100644 --- a/scripts/qiskit_versions.py +++ b/src/qiskit_versions.py @@ -1,11 +1,18 @@ +import os import requests import json from datetime import datetime +PACKAGE_NAME = "qiskit-terra" +VERSIONS_PATH = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "qiskit_versions.json")) + def get_qiskit_releases_data() -> dict: - response = requests.get("https://pypi.org/pypi/qiskit-terra/json") - data = response.json() - return data["releases"].items() + response = requests.get(f"https://pypi.org/pypi/{PACKAGE_NAME}/json") + + if response.status_code == 200: + data = response.json() + return data["releases"].items() + return None def get_qiskit_versions_info() -> []: data_items = get_qiskit_releases_data() @@ -19,22 +26,21 @@ def get_qiskit_versions_info() -> []: if "rc" in release: continue - # Filter releases starting from 2020-03 date_str = release_info[0]["upload_time"] date_format = "%Y-%m-%dT%H:%M:%S" date_time_obj = datetime.strptime(date_str, date_format) year = date_time_obj.year month = date_time_obj.month + # Filter releases starting from 2020-03 if (year == 2020 and month < 3) or year < 2020: continue python_version = release_info[0]["requires_python"] # Parse the release string of format "x.y.z" into a list of "x","y","z" - dot_char = "." - major_minor_patch_list = release.split(dot_char) - major_minor = dot_char.join(major_minor_patch_list[:2]) + major_minor_patch_list = release.split(".") + major_minor = ".".join(major_minor_patch_list[:2]) # Get latest patch patch_number = int(major_minor_patch_list[2]) @@ -63,10 +69,14 @@ def get_release_date(input_version:str) -> str: return date_time.split('T', 1)[0] return "Invalid version" +def write_versions_to_file(versions, filename=VERSIONS_PATH): + with open(filename,"w") as file: + json.dump(versions, file, indent=4) + # Uncomment lines alone to test this file output on its own versions_info = get_qiskit_versions_info() -print('Qiskit Terra versions:') -print(*versions_info, sep='\n') +write_versions_to_file(versions_info) +# print(*versions_info, sep='\n') """ Qiskit Terra versions: @@ -82,4 +92,5 @@ def get_release_date(input_version:str) -> str: {'version': '0.22.4', 'date': '2023-01-17T13:01:47', 'python_version': '>=3.7'} {'version': '0.23.3', 'date': '2023-03-21T19:16:16', 'python_version': '>=3.7'} {'version': '0.24.2', 'date': '2023-07-19T18:23:22', 'python_version': '>=3.7'} => TODO: Update v0.24 results using this release +{'version': '0.25.0', 'date': '2023-07-27T22:01:11', 'python_version': '>=3.8'} => TODO: Update v0.25 results using this release """ diff --git a/scripts/run_tox_envs.py b/src/run_tox_envs.py similarity index 94% rename from scripts/run_tox_envs.py rename to src/run_tox_envs.py index 9219460..66476dd 100644 --- a/scripts/run_tox_envs.py +++ b/src/run_tox_envs.py @@ -10,7 +10,7 @@ python_version = "3.8" qiskit_version = info["version"] env_name = "q_v" + qiskit_version - run_task_command = f"python {{toxinidir}}/scripts/circuit_depth_and_gate_count.py" + run_task_command = f"python {{toxinidir}}/src/circuit_depth_and_gate_count.py" numpy_version = "numpy<1.20" tox_config = f"""[tox] minversion = {python_version} diff --git a/tox.ini b/tox.ini index ef28772..f9d8c8d 100644 --- a/tox.ini +++ b/tox.ini @@ -18,5 +18,5 @@ deps = passenv = METRIQ_TOKEN commands = pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/development - ; python {toxinidir}/scripts/circuit_depth_and_gate_count.py - python {toxinidir}/scripts/postprocessing.py + ; python {toxinidir}/src/circuit_depth_and_gate_count.py + python {toxinidir}/src/postprocessing.py From d43e875bb8f8d395d74dbd534759f14332b5f69b Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Wed, 16 Aug 2023 17:31:09 -0400 Subject: [PATCH 17/29] Add qiskit versions file --- benchmarking/qiskit_versions.json | 67 +++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 benchmarking/qiskit_versions.json diff --git a/benchmarking/qiskit_versions.json b/benchmarking/qiskit_versions.json new file mode 100644 index 0000000..63813ab --- /dev/null +++ b/benchmarking/qiskit_versions.json @@ -0,0 +1,67 @@ +[ + { + "version": "0.13.0", + "date": "2020-04-09T21:22:39", + "python_version": ">=3.5" + }, + { + "version": "0.14.2", + "date": "2020-06-15T21:02:04", + "python_version": ">=3.5" + }, + { + "version": "0.15.2", + "date": "2020-09-08T18:01:48", + "python_version": ">=3.5" + }, + { + "version": "0.16.4", + "date": "2021-02-08T17:16:48", + "python_version": ">=3.6" + }, + { + "version": "0.17.4", + "date": "2021-05-18T21:24:27", + "python_version": ">=3.6" + }, + { + "version": "0.18.3", + "date": "2021-09-29T11:57:07", + "python_version": ">=3.6" + }, + { + "version": "0.19.2", + "date": "2022-02-02T14:03:42", + "python_version": ">=3.6" + }, + { + "version": "0.20.2", + "date": "2022-05-18T15:29:49", + "python_version": ">=3.7" + }, + { + "version": "0.21.2", + "date": "2022-08-23T21:07:29", + "python_version": ">=3.7" + }, + { + "version": "0.22.4", + "date": "2023-01-17T13:01:47", + "python_version": ">=3.7" + }, + { + "version": "0.23.3", + "date": "2023-03-21T19:16:16", + "python_version": ">=3.7" + }, + { + "version": "0.24.2", + "date": "2023-07-19T18:23:22", + "python_version": ">=3.7" + }, + { + "version": "0.25.0", + "date": "2023-07-27T22:01:11", + "python_version": ">=3.8" + } +] \ No newline at end of file From c5c55538dfae20a5ed2ba728746848a69e284e62 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 17 Aug 2023 12:27:16 -0400 Subject: [PATCH 18/29] Track runs based on qiskit version --- src/run_tox_envs.py | 34 ++++++++++++++++++++++++++++------ tox.ini | 18 ++++++++---------- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/src/run_tox_envs.py b/src/run_tox_envs.py index 66476dd..a38edc7 100644 --- a/src/run_tox_envs.py +++ b/src/run_tox_envs.py @@ -1,16 +1,31 @@ import os from qiskit_versions import * +RESULTS_PATH = os.listdir(os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results"))) versions_info = get_qiskit_versions_info() +def search_results(qiskit_version: str): + # Check if qiskit_version already has a result + for filename in RESULTS_PATH: + if qiskit_version in filename: + return True + return False + # Create a tox env for each qiskit version for info in versions_info: + qiskit_version = info["version"] + + # Skip running the experiment if there are alredy results associated with that version + if search_results(qiskit_version): + continue + # TODO Pass python version to tox env setup # Using 3.8 for now as it is compatible with all qiskit-terra versions python_version = "3.8" - qiskit_version = info["version"] env_name = "q_v" + qiskit_version - run_task_command = f"python {{toxinidir}}/src/circuit_depth_and_gate_count.py" + run_experiment_command = f"python {{toxinidir}}/src/circuit_depth_and_gate_count.py" + install_metriq_client_command = "pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/development" + submit_data_command = f"python {{toxinidir}}/src/postprocessing.py" numpy_version = "numpy<1.20" tox_config = f"""[tox] minversion = {python_version} @@ -20,17 +35,24 @@ deps = qiskit-terra=={qiskit_version} %s - requests - pyzx pandas + pyzx + qiskit-terra + requests + tea-client==0.0.7 + tea-console==0.0.6 + typer==0.3.2 +passenv = METRIQ_TOKEN commands = - {run_task_command} + {run_experiment_command} + ;{install_metriq_client_command} + ;{submit_data_command} """ %(numpy_version if qiskit_version in ["0.13.0", "0.14.2", "0.15.2"] else "") absolute_path = os.path.abspath(os.path.join(os.path.dirname( __file__ ), "..")) filename = absolute_path + "/tox.ini" run_tox_command = "tox -vre " + env_name - # Create tox config file + #Create tox config file with open(filename, 'w') as f: f.write(tox_config) diff --git a/tox.ini b/tox.ini index f9d8c8d..a9127a2 100644 --- a/tox.ini +++ b/tox.ini @@ -1,13 +1,11 @@ [tox] minversion = 3.8 -envlist = py38,{py38}-terra{13,14,15} +envlist = q_v0.25.0 [testenv] -description = run circuit benchmark +usedevelop = True deps = - terra13: qiskit-terra==0.13.0 - terra14: qiskit-terra==0.14.2 - terra15: qiskit-terra==0.15.2 - terra13,terra14,terra15: numpy<1.20 + qiskit-terra==0.25.0 + pandas pyzx qiskit-terra @@ -16,7 +14,7 @@ deps = tea-console==0.0.6 typer==0.3.2 passenv = METRIQ_TOKEN -commands = - pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/development - ; python {toxinidir}/src/circuit_depth_and_gate_count.py - python {toxinidir}/src/postprocessing.py +commands = + python {toxinidir}/src/circuit_depth_and_gate_count.py + ;pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/development + ;python {toxinidir}/src/postprocessing.py From 538874a7988e798566a6d74ba8d1a58c7d0b34ab Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 17 Aug 2023 12:28:29 -0400 Subject: [PATCH 19/29] Calculate results for qiskit v0.24.2 --- .../ex1_226-qiskit0.24.2-ibm_rochester.csv | 101 ++++++++++++++++++ ...ex1_226-qiskit0.24.2-rigetti_16q_aspen.csv | 101 ++++++++++++++++++ 2 files changed, 202 insertions(+) create mode 100644 benchmarking/results/ex1_226-qiskit0.24.2-ibm_rochester.csv create mode 100644 benchmarking/results/ex1_226-qiskit0.24.2-rigetti_16q_aspen.csv diff --git a/benchmarking/results/ex1_226-qiskit0.24.2-ibm_rochester.csv b/benchmarking/results/ex1_226-qiskit0.24.2-ibm_rochester.csv new file mode 100644 index 0000000..8266ff4 --- /dev/null +++ b/benchmarking/results/ex1_226-qiskit0.24.2-ibm_rochester.csv @@ -0,0 +1,101 @@ +|Qasm file|Method|Date|Opt level|Platform|Seed|Circuit depth|Gate count +0|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|0|11|15 +1|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|1|11|16 +2|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|2|9|17 +3|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|3|8|12 +4|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|4|11|16 +5|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|5|10|15 +6|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|6|11|15 +7|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|7|13|20 +8|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|8|9|13 +9|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|9|10|17 +10|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|10|11|15 +11|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|11|10|17 +12|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|12|9|13 +13|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|13|9|12 +14|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|14|11|17 +15|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|15|12|22 +16|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|16|11|17 +17|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|17|11|16 +18|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|18|12|20 +19|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|19|10|16 +20|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|20|11|18 +21|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|21|8|12 +22|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|22|9|17 +23|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|23|10|17 +24|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|24|11|18 +25|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|25|11|16 +26|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|26|10|17 +27|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|27|10|16 +28|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|28|13|19 +29|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|29|13|19 +30|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|30|11|17 +31|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|31|11|15 +32|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|32|9|13 +33|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|33|11|16 +34|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|34|10|17 +35|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|35|13|21 +36|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|36|11|16 +37|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|37|10|16 +38|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|38|13|22 +39|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|39|11|17 +40|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|40|11|16 +41|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|41|10|17 +42|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|42|10|17 +43|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|43|9|13 +44|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|44|13|18 +45|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|45|8|13 +46|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|46|13|18 +47|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|47|11|17 +48|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|48|9|17 +49|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|49|11|18 +50|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|50|8|12 +51|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|51|11|15 +52|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|52|8|12 +53|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|53|10|16 +54|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|54|7|13 +55|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|55|10|17 +56|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|56|11|16 +57|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|57|10|16 +58|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|58|9|17 +59|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|59|13|19 +60|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|60|9|13 +61|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|61|11|15 +62|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|62|10|17 +63|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|63|10|17 +64|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|64|10|17 +65|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|65|9|12 +66|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|66|11|15 +67|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|67|10|15 +68|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|68|9|17 +69|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|69|10|17 +70|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|70|8|12 +71|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|71|9|17 +72|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|72|11|16 +73|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|73|10|17 +74|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|74|9|12 +75|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|75|11|17 +76|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|76|11|17 +77|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|77|8|12 +78|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|78|11|16 +79|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|79|11|15 +80|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|80|9|17 +81|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|81|12|21 +82|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|82|10|15 +83|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|83|9|17 +84|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|84|11|17 +85|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|85|13|20 +86|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|86|12|21 +87|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|87|11|16 +88|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|88|13|19 +89|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|89|11|16 +90|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|90|11|16 +91|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|91|9|17 +92|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|92|13|19 +93|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|93|13|22 +94|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|94|13|19 +95|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|95|9|12 +96|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|96|9|17 +97|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|97|9|17 +98|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|98|7|12 +99|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|ibm_rochester|99|11|15 diff --git a/benchmarking/results/ex1_226-qiskit0.24.2-rigetti_16q_aspen.csv b/benchmarking/results/ex1_226-qiskit0.24.2-rigetti_16q_aspen.csv new file mode 100644 index 0000000..aef4c24 --- /dev/null +++ b/benchmarking/results/ex1_226-qiskit0.24.2-rigetti_16q_aspen.csv @@ -0,0 +1,101 @@ +|Qasm file|Method|Date|Opt level|Platform|Seed|Circuit depth|Gate count +0|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|0|8|16 +1|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|1|10|16 +2|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|2|9|13 +3|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|3|10|15 +4|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|4|8|14 +5|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|5|9|13 +6|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|6|8|16 +7|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|7|8|13 +8|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|8|8|12 +9|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|9|10|18 +10|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|10|8|14 +11|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|11|9|14 +12|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|12|8|15 +13|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|13|10|19 +14|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|14|8|14 +15|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|15|10|16 +16|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|16|8|11 +17|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|17|10|18 +18|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|18|8|13 +19|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|19|8|11 +20|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|20|8|11 +21|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|21|10|16 +22|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|22|8|14 +23|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|23|8|11 +24|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|24|10|16 +25|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|25|10|16 +26|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|26|9|17 +27|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|27|8|16 +28|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|28|10|19 +29|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|29|6|9 +30|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|30|10|19 +31|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|31|8|11 +32|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|32|13|19 +33|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|33|13|22 +34|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|34|10|17 +35|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|35|10|16 +36|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|36|8|11 +37|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|37|8|12 +38|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|38|11|20 +39|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|39|10|16 +40|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|40|10|15 +41|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|41|13|20 +42|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|42|9|19 +43|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|43|10|18 +44|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|44|10|17 +45|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|45|8|13 +46|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|46|8|12 +47|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|47|10|16 +48|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|48|8|12 +49|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|49|10|17 +50|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|50|10|16 +51|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|51|10|16 +52|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|52|10|19 +53|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|53|8|16 +54|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|54|10|19 +55|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|55|10|16 +56|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|56|8|14 +57|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|57|10|19 +58|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|58|8|11 +59|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|59|8|15 +60|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|60|10|19 +61|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|61|10|18 +62|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|62|10|17 +63|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|63|10|19 +64|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|64|10|19 +65|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|65|8|11 +66|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|66|11|20 +67|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|67|8|15 +68|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|68|8|11 +69|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|69|10|19 +70|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|70|8|12 +71|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|71|10|16 +72|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|72|8|14 +73|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|73|8|12 +74|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|74|11|16 +75|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|75|10|16 +76|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|76|11|16 +77|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|77|10|16 +78|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|78|8|15 +79|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|79|10|18 +80|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|80|8|15 +81|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|81|8|13 +82|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|82|10|19 +83|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|83|8|14 +84|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|84|8|11 +85|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|85|10|19 +86|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|86|8|14 +87|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|87|8|11 +88|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|88|8|14 +89|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|89|10|16 +90|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|90|8|14 +91|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|91|8|15 +92|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|92|10|18 +93|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|93|10|15 +94|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|94|10|16 +95|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|95|8|11 +96|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|96|10|16 +97|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|97|8|11 +98|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|98|8|15 +99|ex1_226.qasm|Qiskit 0.24.2 compilation|2023-07-19|3|rigetti_16q_aspen|99|8|15 From 078cdcb88866c57da19be857d2d2d482d323fd7c Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 17 Aug 2023 14:41:11 -0400 Subject: [PATCH 20/29] Fix qiskit-terra v0.25.0 imcompatible modules --- src/circuit_depth_and_gate_count.py | 2 +- src/qiskit_versions.py | 2 +- src/run_tox_envs.py | 1 - tox.ini | 22 +++++++++++++--------- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/circuit_depth_and_gate_count.py b/src/circuit_depth_and_gate_count.py index 9af5444..c6bf048 100644 --- a/src/circuit_depth_and_gate_count.py +++ b/src/circuit_depth_and_gate_count.py @@ -2,7 +2,7 @@ import os import statistics from pyzx import routing -from qiskit import qiskit +import qiskit from qiskit import QuantumCircuit from qiskit import transpile from qiskit.transpiler import CouplingMap, TranspilerError diff --git a/src/qiskit_versions.py b/src/qiskit_versions.py index 3f916c5..fafded5 100644 --- a/src/qiskit_versions.py +++ b/src/qiskit_versions.py @@ -91,6 +91,6 @@ def write_versions_to_file(versions, filename=VERSIONS_PATH): {'version': '0.21.2', 'date': '2022-08-23T21:07:29', 'python_version': '>=3.7'} {'version': '0.22.4', 'date': '2023-01-17T13:01:47', 'python_version': '>=3.7'} {'version': '0.23.3', 'date': '2023-03-21T19:16:16', 'python_version': '>=3.7'} -{'version': '0.24.2', 'date': '2023-07-19T18:23:22', 'python_version': '>=3.7'} => TODO: Update v0.24 results using this release +{'version': '0.24.2', 'date': '2023-07-19T18:23:22', 'python_version': '>=3.7'} {'version': '0.25.0', 'date': '2023-07-27T22:01:11', 'python_version': '>=3.8'} => TODO: Update v0.25 results using this release """ diff --git a/src/run_tox_envs.py b/src/run_tox_envs.py index a38edc7..e971767 100644 --- a/src/run_tox_envs.py +++ b/src/run_tox_envs.py @@ -37,7 +37,6 @@ def search_results(qiskit_version: str): %s pandas pyzx - qiskit-terra requests tea-client==0.0.7 tea-console==0.0.6 diff --git a/tox.ini b/tox.ini index a9127a2..7e3066e 100644 --- a/tox.ini +++ b/tox.ini @@ -1,20 +1,24 @@ [tox] minversion = 3.8 -envlist = q_v0.25.0 +envlist = py38,{py38}-terra{13,14,15,25} [testenv] -usedevelop = True +description = run circuit benchmark deps = - qiskit-terra==0.25.0 - - pandas - pyzx + terra13: qiskit-terra==0.13.0 + terra14: qiskit-terra==0.14.2 + terra15: qiskit-terra==0.15.2 + terra25: qiskit-terra==0.25.0 + terra13,terra14,terra15: numpy<1.20 + terra25: qiskit==0.44.0 qiskit-terra requests + pyzx + pandas tea-client==0.0.7 - tea-console==0.0.6 + tea-console==0.0.5 typer==0.3.2 passenv = METRIQ_TOKEN -commands = +commands = python {toxinidir}/src/circuit_depth_and_gate_count.py ;pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/development - ;python {toxinidir}/src/postprocessing.py + ;python {toxinidir}/src/postprocessing.py \ No newline at end of file From 96a1630a7d5a2fc0a15dc3d50055c4d465c19c8a Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 17 Aug 2023 14:42:36 -0400 Subject: [PATCH 21/29] Calculate results for qiskit-terra v0.25.0 --- .../ex1_226-qiskit0.25.0-ibm_rochester.csv | 101 ++++++++++++++++++ ...ex1_226-qiskit0.25.0-rigetti_16q_aspen.csv | 101 ++++++++++++++++++ 2 files changed, 202 insertions(+) create mode 100644 benchmarking/results/ex1_226-qiskit0.25.0-ibm_rochester.csv create mode 100644 benchmarking/results/ex1_226-qiskit0.25.0-rigetti_16q_aspen.csv diff --git a/benchmarking/results/ex1_226-qiskit0.25.0-ibm_rochester.csv b/benchmarking/results/ex1_226-qiskit0.25.0-ibm_rochester.csv new file mode 100644 index 0000000..a2e6482 --- /dev/null +++ b/benchmarking/results/ex1_226-qiskit0.25.0-ibm_rochester.csv @@ -0,0 +1,101 @@ +|Qasm file|Method|Date|Opt level|Platform|Seed|Circuit depth|Gate count +0|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|0|11|15 +1|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|1|11|16 +2|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|2|9|17 +3|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|3|8|12 +4|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|4|11|16 +5|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|5|10|15 +6|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|6|11|15 +7|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|7|13|20 +8|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|8|9|13 +9|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|9|10|17 +10|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|10|11|15 +11|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|11|10|17 +12|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|12|9|13 +13|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|13|9|12 +14|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|14|11|17 +15|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|15|12|22 +16|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|16|11|17 +17|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|17|11|16 +18|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|18|12|20 +19|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|19|10|16 +20|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|20|11|18 +21|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|21|8|12 +22|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|22|9|17 +23|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|23|10|17 +24|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|24|11|18 +25|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|25|11|16 +26|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|26|10|17 +27|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|27|10|16 +28|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|28|13|19 +29|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|29|13|19 +30|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|30|11|17 +31|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|31|11|15 +32|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|32|9|13 +33|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|33|11|16 +34|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|34|10|17 +35|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|35|13|21 +36|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|36|11|16 +37|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|37|10|16 +38|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|38|13|22 +39|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|39|11|17 +40|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|40|11|16 +41|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|41|10|17 +42|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|42|10|17 +43|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|43|9|13 +44|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|44|13|18 +45|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|45|8|13 +46|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|46|13|18 +47|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|47|11|17 +48|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|48|9|17 +49|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|49|11|18 +50|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|50|8|12 +51|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|51|11|15 +52|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|52|8|12 +53|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|53|10|16 +54|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|54|7|13 +55|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|55|10|17 +56|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|56|11|16 +57|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|57|10|16 +58|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|58|9|17 +59|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|59|13|19 +60|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|60|9|13 +61|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|61|11|15 +62|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|62|10|17 +63|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|63|10|17 +64|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|64|10|17 +65|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|65|9|12 +66|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|66|11|15 +67|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|67|10|15 +68|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|68|9|17 +69|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|69|10|17 +70|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|70|8|12 +71|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|71|9|17 +72|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|72|11|16 +73|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|73|10|17 +74|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|74|9|12 +75|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|75|11|17 +76|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|76|11|17 +77|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|77|8|12 +78|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|78|11|16 +79|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|79|11|15 +80|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|80|9|17 +81|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|81|12|21 +82|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|82|10|15 +83|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|83|9|17 +84|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|84|11|17 +85|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|85|13|20 +86|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|86|12|21 +87|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|87|11|16 +88|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|88|13|19 +89|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|89|11|16 +90|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|90|11|16 +91|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|91|9|17 +92|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|92|13|19 +93|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|93|13|22 +94|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|94|13|19 +95|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|95|9|12 +96|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|96|9|17 +97|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|97|9|17 +98|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|98|7|12 +99|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|ibm_rochester|99|11|15 diff --git a/benchmarking/results/ex1_226-qiskit0.25.0-rigetti_16q_aspen.csv b/benchmarking/results/ex1_226-qiskit0.25.0-rigetti_16q_aspen.csv new file mode 100644 index 0000000..81eb37b --- /dev/null +++ b/benchmarking/results/ex1_226-qiskit0.25.0-rigetti_16q_aspen.csv @@ -0,0 +1,101 @@ +|Qasm file|Method|Date|Opt level|Platform|Seed|Circuit depth|Gate count +0|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|0|8|16 +1|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|1|10|16 +2|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|2|9|13 +3|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|3|10|15 +4|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|4|8|14 +5|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|5|9|13 +6|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|6|8|16 +7|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|7|8|13 +8|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|8|8|12 +9|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|9|10|18 +10|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|10|8|14 +11|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|11|9|14 +12|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|12|8|15 +13|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|13|10|19 +14|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|14|8|14 +15|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|15|10|16 +16|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|16|8|11 +17|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|17|10|18 +18|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|18|8|13 +19|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|19|8|11 +20|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|20|8|11 +21|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|21|10|16 +22|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|22|8|14 +23|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|23|8|11 +24|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|24|10|16 +25|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|25|10|16 +26|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|26|9|17 +27|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|27|8|16 +28|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|28|10|19 +29|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|29|6|9 +30|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|30|10|19 +31|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|31|8|11 +32|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|32|13|19 +33|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|33|13|22 +34|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|34|10|17 +35|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|35|10|16 +36|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|36|8|11 +37|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|37|8|12 +38|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|38|11|20 +39|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|39|10|16 +40|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|40|10|15 +41|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|41|13|20 +42|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|42|9|19 +43|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|43|10|18 +44|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|44|10|17 +45|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|45|8|13 +46|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|46|8|12 +47|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|47|10|16 +48|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|48|8|12 +49|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|49|10|17 +50|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|50|10|16 +51|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|51|10|16 +52|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|52|10|19 +53|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|53|8|16 +54|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|54|10|19 +55|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|55|10|16 +56|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|56|8|14 +57|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|57|10|19 +58|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|58|8|11 +59|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|59|8|15 +60|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|60|10|19 +61|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|61|10|18 +62|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|62|10|17 +63|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|63|10|19 +64|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|64|10|19 +65|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|65|8|11 +66|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|66|11|20 +67|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|67|8|15 +68|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|68|8|11 +69|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|69|10|19 +70|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|70|8|12 +71|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|71|10|16 +72|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|72|8|14 +73|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|73|8|12 +74|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|74|11|16 +75|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|75|10|16 +76|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|76|11|16 +77|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|77|10|16 +78|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|78|8|15 +79|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|79|10|18 +80|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|80|8|15 +81|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|81|8|13 +82|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|82|10|19 +83|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|83|8|14 +84|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|84|8|11 +85|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|85|10|19 +86|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|86|8|14 +87|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|87|8|11 +88|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|88|8|14 +89|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|89|10|16 +90|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|90|8|14 +91|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|91|8|15 +92|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|92|10|18 +93|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|93|10|15 +94|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|94|10|16 +95|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|95|8|11 +96|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|96|10|16 +97|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|97|8|11 +98|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|98|8|15 +99|ex1_226.qasm|Qiskit 0.25.0 compilation|2023-07-27|3|rigetti_16q_aspen|99|8|15 From f884ab6ecdd83b18a326e40bf0c8e9267be5188a Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 17 Aug 2023 14:46:39 -0400 Subject: [PATCH 22/29] Update charts with latest results --- .../visualizations/boxplot-aspen_depth.png | Bin 35685 -> 36766 bytes .../visualizations/boxplot-aspen_gates.png | Bin 35798 -> 36786 bytes .../boxplot-rochester_depth.png | Bin 33802 -> 34889 bytes .../boxplot-rochester_gates.png | Bin 34457 -> 35565 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/benchmarking/results/visualizations/boxplot-aspen_depth.png b/benchmarking/results/visualizations/boxplot-aspen_depth.png index b40f8264dfb873efba1caada64e52ac4a26461f9..c66565ec814513e25cc32cda9a3450285edc6343 100644 GIT binary patch literal 36766 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 W`wq|Ql$xYlV6NMwo4MBR*na`6l|z&O literal 35685 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 RQ>bK`4I5{AV#o~t{{hjYPO|_2 diff --git a/benchmarking/results/visualizations/boxplot-aspen_gates.png b/benchmarking/results/visualizations/boxplot-aspen_gates.png index e5b86b9b4ca7c5a2d4fa62120d16c0b179896436..0479b19f7a75c470c6c10606d55013ff588f8932 100644 GIT binary patch literal 36786 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 T>R_o)8n66`un literal 35798 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 LOo$yfcf)@H_uAB; diff --git a/benchmarking/results/visualizations/boxplot-rochester_depth.png b/benchmarking/results/visualizations/boxplot-rochester_depth.png index 405ae1649466e518f9a48b225602f02464d5d64a..270f8bb02095e7f750afc6575b060a3b326703f3 100644 GIT binary patch literal 34889 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 literal 33802 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 literal 34457 zcmdqKcT`pBvMo+)t8IcdM?eKcQ9)5uvKh7rC{aW}MMOk0NDgWX1{B=}L z*yb{1_bIWlO>JUhn{xDz>G(@G*JnQbN7QovQA=f$GnUpT&Gp#iPgg-VAQ zu(7#LXYAXpV&mObVe75XKa$ZsD0${}=ib;?B9}Mo%IO&D%0DkQ)6c<;6RAYJL@j(&4Uat|c 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 NyY=b1{fiNE{uj)|#Nhw{ From ad9b5d2f147754d7cce303d89063a471626fa563 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 17 Aug 2023 14:52:03 -0400 Subject: [PATCH 23/29] Cleanup --- src/qiskit_versions.py | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/src/qiskit_versions.py b/src/qiskit_versions.py index fafded5..cff1f17 100644 --- a/src/qiskit_versions.py +++ b/src/qiskit_versions.py @@ -74,23 +74,6 @@ def write_versions_to_file(versions, filename=VERSIONS_PATH): json.dump(versions, file, indent=4) # Uncomment lines alone to test this file output on its own -versions_info = get_qiskit_versions_info() -write_versions_to_file(versions_info) -# print(*versions_info, sep='\n') - -""" -Qiskit Terra versions: -{'version': '0.13.0', 'date': '2020-04-09T21:22:39', 'python_version': '>=3.5'} -{'version': '0.14.2', 'date': '2020-06-15T21:02:04', 'python_version': '>=3.5'} -{'version': '0.15.2', 'date': '2020-09-08T18:01:48', 'python_version': '>=3.5'} -{'version': '0.16.4', 'date': '2021-02-08T17:16:48', 'python_version': '>=3.6'} -{'version': '0.17.4', 'date': '2021-05-18T21:24:27', 'python_version': '>=3.6'} -{'version': '0.18.3', 'date': '2021-09-29T11:57:07', 'python_version': '>=3.6'} -{'version': '0.19.2', 'date': '2022-02-02T14:03:42', 'python_version': '>=3.6'} -{'version': '0.20.2', 'date': '2022-05-18T15:29:49', 'python_version': '>=3.7'} -{'version': '0.21.2', 'date': '2022-08-23T21:07:29', 'python_version': '>=3.7'} -{'version': '0.22.4', 'date': '2023-01-17T13:01:47', 'python_version': '>=3.7'} -{'version': '0.23.3', 'date': '2023-03-21T19:16:16', 'python_version': '>=3.7'} -{'version': '0.24.2', 'date': '2023-07-19T18:23:22', 'python_version': '>=3.7'} -{'version': '0.25.0', 'date': '2023-07-27T22:01:11', 'python_version': '>=3.8'} => TODO: Update v0.25 results using this release -""" +# versions_info = get_qiskit_versions_info() +# write_versions_to_file(versions_info) +# print(*versions_info, sep='\n') \ No newline at end of file From df2ceb4c902a9559dcd3991ece89710cd91bd4c7 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Tue, 22 Aug 2023 17:48:44 -0400 Subject: [PATCH 24/29] Check for results to be replaced for latest qiskit version --- src/circuit_depth_and_gate_count.py | 6 ++--- src/run_tox_envs.py | 41 ++++++++++++++++++++++++----- tox.ini | 6 ++--- 3 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/circuit_depth_and_gate_count.py b/src/circuit_depth_and_gate_count.py index c6bf048..6089569 100644 --- a/src/circuit_depth_and_gate_count.py +++ b/src/circuit_depth_and_gate_count.py @@ -16,12 +16,10 @@ METHOD = f"Qiskit {VERSION} compilation" def run_task(qasm_id: str): + print(f"\nRunning {METHOD} batch on {qasm_id}\n") + qasm_file_path = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking",f"{qasm_id}.qasm")) circuit = QuantumCircuit.from_qasm_file(qasm_file_path) - - print(METHOD) - print("Sample Size: ",SAMPLE_SIZE) - # Transpile for each architecture using pyzx for arch in ARCHITECTURES: architecture = routing.create_architecture(arch) diff --git a/src/run_tox_envs.py b/src/run_tox_envs.py index e971767..bcdcdb8 100644 --- a/src/run_tox_envs.py +++ b/src/run_tox_envs.py @@ -1,16 +1,32 @@ import os from qiskit_versions import * -RESULTS_PATH = os.listdir(os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results"))) +RESULTS_PATH = os.path.abspath(os.path.join(os.path.dirname( __file__ ),"..", "benchmarking", "results")) +METRIQ_CLIENT_URL = "https://github.com/unitaryfund/metriq-client/tarball/development" +EXPERIMENT = "circuit_depth_and_gate_count" versions_info = get_qiskit_versions_info() +# Check if qiskit_version already has a result def search_results(qiskit_version: str): - # Check if qiskit_version already has a result - for filename in RESULTS_PATH: + for filename in os.listdir(RESULTS_PATH): if qiskit_version in filename: return True return False +# Check for matching major-minor version results to be replaced with latest +def replace_with_latest(qiskit_version: str) -> [str]: + replace_files = [] + for filename in os.listdir(RESULTS_PATH): + if "csv" in filename: + filename_major_minor_patch = filename.split("-")[1].replace("qiskit","").split(".") + input_major_minor_patch = qiskit_version.split(".") + + if (filename_major_minor_patch[0] == input_major_minor_patch[0] + and filename_major_minor_patch[1] == input_major_minor_patch[1] + and filename_major_minor_patch[2] < input_major_minor_patch[2]): + replace_files.append(filename) + return replace_files + # Create a tox env for each qiskit version for info in versions_info: qiskit_version = info["version"] @@ -18,13 +34,24 @@ def search_results(qiskit_version: str): # Skip running the experiment if there are alredy results associated with that version if search_results(qiskit_version): continue + + replace_results = replace_with_latest(qiskit_version) + if replace_results: + for filename in replace_results: + # Remove from folder + os.remove(os.path.join(RESULTS_PATH,filename)) + # Update json file + write_versions_to_file(versions_info) + + print("\nRun experiment for qiskit-terra version ", qiskit_version,"...\n") + + # TODO Pass python version and qasm file to tox env setup - # TODO Pass python version to tox env setup # Using 3.8 for now as it is compatible with all qiskit-terra versions python_version = "3.8" env_name = "q_v" + qiskit_version - run_experiment_command = f"python {{toxinidir}}/src/circuit_depth_and_gate_count.py" - install_metriq_client_command = "pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/development" + run_experiment_command = f"python {{toxinidir}}/src/{{EXPERIMENT}}.py" + install_metriq_client_command = f"pip install --upgrade {{METRIQ_CLIENT_URL}}" submit_data_command = f"python {{toxinidir}}/src/postprocessing.py" numpy_version = "numpy<1.20" tox_config = f"""[tox] @@ -66,4 +93,4 @@ def search_results(qiskit_version: str): # tox -e q_0.20.0 -- pip install qiskit-terra==0.20.0 # tox -e q_0.20.0 --force-dep qiskit-terra==0.20.0 # tox -e q_0.20.0 --force-dep qiskit-terra==0.20.0 -""" \ No newline at end of file +""" diff --git a/tox.ini b/tox.ini index 7e3066e..42beccb 100644 --- a/tox.ini +++ b/tox.ini @@ -15,10 +15,10 @@ deps = pyzx pandas tea-client==0.0.7 - tea-console==0.0.5 + tea-console==0.0.6 typer==0.3.2 passenv = METRIQ_TOKEN commands = python {toxinidir}/src/circuit_depth_and_gate_count.py - ;pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/development - ;python {toxinidir}/src/postprocessing.py \ No newline at end of file + pip install --upgrade https://github.com/unitaryfund/metriq-client/tarball/development + python {toxinidir}/src/postprocessing.py \ No newline at end of file From 09c11fcac875dba1dc6ccb5f772fa262f5e93cfa Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Wed, 23 Aug 2023 16:10:39 -0400 Subject: [PATCH 25/29] State --- src/postprocessing.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/postprocessing.py b/src/postprocessing.py index 227d7bc..2f1a1e0 100644 --- a/src/postprocessing.py +++ b/src/postprocessing.py @@ -13,8 +13,6 @@ def submit_all(task_name: str): client = MetriqClient(token=METRIQ_TOKEN) - # print(client.hello()) - submission = create_submission(client,task_name) submission.tasks = [task_name] submission.methods = [METHOD] @@ -35,7 +33,7 @@ def create_submission(client: MetriqClient, task_name: str) -> Submission: submission_req.name = task_name submission_req.contentUrl = CONTENT_URL submission_req.description = f"Qiskit compilation for {task_name} benchmark circuit" - return client.submission_add(submission_req) #tea_client.errors.HttpClientError: HttpClientError(401: Unauthorized) + return client.submission_add(submission_req) # tea_client.errors.HttpClientError: HttpClientError(500: You broke it!!!) def process_results(dataframe, task_name: str, client: MetriqClient, submission_id: str): metrics = ["Circuit depth", "Gate count"] @@ -61,4 +59,4 @@ def process_results(dataframe, task_name: str, client: MetriqClient, submission_ client.result_add(result_item, submission_id) submit_all(TASKS["26"]) -submit_all(TASKS["27"]) \ No newline at end of file +# submit_all(TASKS["27"]) \ No newline at end of file From 4c3d7a9430746496dc0c35c56a0bd744b96239f8 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Thu, 24 Aug 2023 17:45:24 -0400 Subject: [PATCH 26/29] Fix submission parameters update calls --- src/postprocessing.py | 58 +++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/src/postprocessing.py b/src/postprocessing.py index 2f1a1e0..0b46dae 100644 --- a/src/postprocessing.py +++ b/src/postprocessing.py @@ -6,34 +6,53 @@ from metriq.models.submission import (Submission, SubmissionCreateRequest) CONTENT_URL = "https://github.com/qiskit-community/submit-metriq" +THUMBNAIL_URL = "https://avatars.githubusercontent.com/u/30696987?s=200&v=4" METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") RESULTS_PATH = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results")) TASKS = {"25": "ex1_226.qasm", "26": "ex1_226.qasm (Aspen)", "27": "ex1_226.qasm (Rochester)"} METHOD = "Qiskit compilation" +TAGS = ["quantum circuits", "compiler", "compilation", "ibm qiskit"] -def submit_all(task_name: str): +def get_method_id(client: MetriqClient, method_name: str) -> str: + # all_methods = client.method_get_names() # ERROR: AttributeError: 'MetriqClient' object has no attribute 'method_get_names' + all_methods = client.http.get("/method/names/")["data"] + for method in all_methods: + if method["name"] == method_name: + return method["id"] + +def submit_all(task_name: str, submission_id: str): client = MetriqClient(token=METRIQ_TOKEN) - submission = create_submission(client,task_name) - submission.tasks = [task_name] - submission.methods = [METHOD] - submission.tags = ["quantum circuits", "compiler", "compilation", "ibm qiskit"] + # submission = create_submission(client,task_name) # TODO Uncomment this line when historical data for taska 26-27 are finalized + # submission = client.submisson_get(submission_id) + method_id = get_method_id(client, METHOD) + task_id = list(TASKS.keys())[list(TASKS.values()).index(task_name)] + client.submission_add_task(submission_id, task_id) + client.submission_add_method(submission_id, method_id) - filenames = os.listdir(RESULTS_PATH) - for filename in filenames: - architectures = ["aspen", "rochester"] - for arch in architectures: - if arch in filename and arch in task_name.lower(): - file_path = os.path.join(RESULTS_PATH, f"{filename}") - df = pd.read_csv(file_path, sep='|') - process_results(df, task_name, client, submission.id) + for tag in TAGS: + client.submission_add_tag(submission_id, tag) + # TODO Need to find a way to to update params below (open issues in metriq-client) + # submission.codeUrl + # submission.platform + + # Process results and add them to submission + # filenames = os.listdir(RESULTS_PATH) + # for filename in filenames: + # architectures = ["aspen", "rochester"] + # for arch in architectures: + # if arch in filename and arch in task_name.lower(): + # file_path = os.path.join(RESULTS_PATH, f"{filename}") + # df = pd.read_csv(file_path, sep='|') + # process_results(df, task_name, client, submission_id) def create_submission(client: MetriqClient, task_name: str) -> Submission: submission_req = SubmissionCreateRequest() submission_req.name = task_name submission_req.contentUrl = CONTENT_URL + submission_req.thumbnailUrl = THUMBNAIL_URL submission_req.description = f"Qiskit compilation for {task_name} benchmark circuit" - return client.submission_add(submission_req) # tea_client.errors.HttpClientError: HttpClientError(500: You broke it!!!) + return client.submission_add(submission_req) def process_results(dataframe, task_name: str, client: MetriqClient, submission_id: str): metrics = ["Circuit depth", "Gate count"] @@ -46,7 +65,7 @@ def process_results(dataframe, task_name: str, client: MetriqClient, submission_ result_item.metricValue = round(dataframe[metric].mean()) result_item.evaluatedAt = dataframe["Date"].iloc[0] result_item.isHigherBetter = "false" - # result.sampleSize = len(dataframe.index) #object has no field "sampleSize" + # result_item.sampleSize = len(dataframe.index) # ERROR: object has no field "sampleSize" # Get extra info and add to notes sample_size = len(dataframe.index) @@ -54,9 +73,10 @@ def process_results(dataframe, task_name: str, client: MetriqClient, submission_ opt_level = dataframe["Opt level"].iloc[0] version = dataframe["Method"].iloc[0].split(" ")[1] result_item.notes = f"Stdev: {round(metric_std,3)}, Optimization level:{opt_level}, qiskit-terra version:{version}, sample size: {sample_size}" - # print(result_item) + print("result_item:") + print(result_item) - client.result_add(result_item, submission_id) + client.result_add(result_item, submission_id) # ERROR: tea_client.errors.HttpClientError: HttpClientError(500: You broke it!!!) -submit_all(TASKS["26"]) -# submit_all(TASKS["27"]) \ No newline at end of file +submit_all(TASKS["26"], "661") # submission #661 +submit_all(TASKS["27"], "662") # submission #662 \ No newline at end of file From 238eb5af56015128c37d92e37ab732232196a845 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Fri, 25 Aug 2023 13:54:27 -0400 Subject: [PATCH 27/29] Use ids in result parameters Misc notes --- src/postprocessing.py | 109 ++++++++++++++++++++++++++---------------- 1 file changed, 69 insertions(+), 40 deletions(-) diff --git a/src/postprocessing.py b/src/postprocessing.py index 0b46dae..8ef1430 100644 --- a/src/postprocessing.py +++ b/src/postprocessing.py @@ -5,78 +5,107 @@ from metriq.models.result import ResultCreateRequest from metriq.models.submission import (Submission, SubmissionCreateRequest) -CONTENT_URL = "https://github.com/qiskit-community/submit-metriq" -THUMBNAIL_URL = "https://avatars.githubusercontent.com/u/30696987?s=200&v=4" METRIQ_TOKEN = os.getenv("METRIQ_TOKEN") RESULTS_PATH = os.path.abspath(os.path.join( os.path.dirname( __file__ ),"..", "benchmarking", "results")) -TASKS = {"25": "ex1_226.qasm", "26": "ex1_226.qasm (Aspen)", "27": "ex1_226.qasm (Rochester)"} -METHOD = "Qiskit compilation" + +CONTENT_URL = "https://github.com/qiskit-community/submit-metriq" +THUMBNAIL_URL = "https://avatars.githubusercontent.com/u/30696987?s=200&v=4" + +# Metriq API parameters and associated ids +METHOD = {"8": "Qiskit compilation"} +PLATFORMS = {"64": "Rigetti 16Q Aspen-1 ", "69": "ibmq-rochester"} TAGS = ["quantum circuits", "compiler", "compilation", "ibm qiskit"] +TASKS = {"25": "ex1_226.qasm", "26": "ex1_226.qasm (Aspen)", "27": "ex1_226.qasm (Rochester)"} -def get_method_id(client: MetriqClient, method_name: str) -> str: - # all_methods = client.method_get_names() # ERROR: AttributeError: 'MetriqClient' object has no attribute 'method_get_names' - all_methods = client.http.get("/method/names/")["data"] - for method in all_methods: - if method["name"] == method_name: - return method["id"] +def get_id(param_list: dict, param_name: str) -> str: + # Return key from value + return list(param_list.keys())[list(param_list.values()).index(param_name)] -def submit_all(task_name: str, submission_id: str): +def get_platform_id(keywork: str) -> str: + norm_keyword = keywork.lower() + for key, value in PLATFORMS.items(): + norm_value = value.lower() + if norm_keyword in norm_value: + return key + return None + +# TODO Keep track of results already submitted and prepare automation pipeline +def submit_all(task_name: str, submission_id: str = None): client = MetriqClient(token=METRIQ_TOKEN) - # submission = create_submission(client,task_name) # TODO Uncomment this line when historical data for taska 26-27 are finalized - # submission = client.submisson_get(submission_id) - method_id = get_method_id(client, METHOD) - task_id = list(TASKS.keys())[list(TASKS.values()).index(task_name)] + + if not submission_id: + create_new_submission(client,task_name) + + # Populate submission parameters + # Task + task_id = get_id(TASKS, task_name) client.submission_add_task(submission_id, task_id) + + # Method + method_id = get_id(METHOD, "Qiskit compilation") client.submission_add_method(submission_id, method_id) + # Tags for tag in TAGS: client.submission_add_tag(submission_id, tag) - # TODO Need to find a way to to update params below (open issues in metriq-client) + # TODO Find a way to to update params below using the API # submission.codeUrl # submission.platform # Process results and add them to submission - # filenames = os.listdir(RESULTS_PATH) - # for filename in filenames: - # architectures = ["aspen", "rochester"] - # for arch in architectures: - # if arch in filename and arch in task_name.lower(): - # file_path = os.path.join(RESULTS_PATH, f"{filename}") - # df = pd.read_csv(file_path, sep='|') - # process_results(df, task_name, client, submission_id) - -def create_submission(client: MetriqClient, task_name: str) -> Submission: + filenames = os.listdir(RESULTS_PATH) + for filename in filenames: + architectures = ["aspen", "rochester"] + for arch in architectures: + if arch in filename and arch in task_name.lower(): + print(f"*** Processing {arch} results from {filename}") + file_path = os.path.join(RESULTS_PATH, f"{filename}") + df = pd.read_csv(file_path, sep='|') + process_results(df, client, task_id, method_id, submission_id) + +def create_new_submission(client: MetriqClient, task_name: str): submission_req = SubmissionCreateRequest() submission_req.name = task_name submission_req.contentUrl = CONTENT_URL submission_req.thumbnailUrl = THUMBNAIL_URL submission_req.description = f"Qiskit compilation for {task_name} benchmark circuit" - return client.submission_add(submission_req) + client.submission_add(submission_req) -def process_results(dataframe, task_name: str, client: MetriqClient, submission_id: str): +def process_results(dataframe, client: MetriqClient, task_id: str, method_id: str, submission_id: str): metrics = ["Circuit depth", "Gate count"] for metric in metrics: result_item = ResultCreateRequest() - result_item.task = task_name - result_item.platform = dataframe["Platform"].iloc[0] - result_item.method = METHOD + result_item.task = task_id # Must be id + result_item.method = method_id # Must be id result_item.metricName = metric - result_item.metricValue = round(dataframe[metric].mean()) + result_item.metricValue = str(round(dataframe[metric].mean())) # Must be a string result_item.evaluatedAt = dataframe["Date"].iloc[0] result_item.isHigherBetter = "false" - # result_item.sampleSize = len(dataframe.index) # ERROR: object has no field "sampleSize" + + platform_name = dataframe["Platform"].iloc[0] # This is not an exact match with metriq platform names + # Get last word and find it in PLATFORMS + platform_keyword = platform_name.rsplit('_', 1)[-1] + platform_id = get_platform_id(platform_keyword) + result_item.platform = platform_id # Must be id + + # TODO: Update sample size + # sample_size = len(dataframe.index) + # result_item.sampleSize = sample_size # ERROR: object has no field "sampleSize" # Get extra info and add to notes - sample_size = len(dataframe.index) metric_std = dataframe[metric].std() opt_level = dataframe["Opt level"].iloc[0] version = dataframe["Method"].iloc[0].split(" ")[1] - result_item.notes = f"Stdev: {round(metric_std,3)}, Optimization level:{opt_level}, qiskit-terra version:{version}, sample size: {sample_size}" - print("result_item:") - print(result_item) + result_item.notes = f"Stdev: {round(metric_std,3)}, Optimization level:{opt_level}, qiskit-terra version:{version}" + + client.result_add(result_item, submission_id) - client.result_add(result_item, submission_id) # ERROR: tea_client.errors.HttpClientError: HttpClientError(500: You broke it!!!) +# TODO Get submission ids from client +# submit_all(TASKS["26"], "661") +# submit_all(TASKS["27"], "662") -submit_all(TASKS["26"], "661") # submission #661 -submit_all(TASKS["27"], "662") # submission #662 \ No newline at end of file +# TODO open issues for API errors below +# all_methods = client.method_get_names() # ERROR: AttributeError: 'MetriqClient' object has no attribute 'method_get_names' +# all_platforms = client.platform_get_names() # ERROR: AttributeError: 'MetriqClient' object has no attribute 'platform_get_names' +# platform "Rigetti 16Q Aspen-1 " has trailing space \ No newline at end of file From 00ad50acbe9a229f967b4b257459a80568091752 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Mon, 28 Aug 2023 17:31:23 -0400 Subject: [PATCH 28/29] Update README --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 48802ce..8d613dc 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,23 @@ -# Circuit benchmark task +# Qiskit compilation benchmark for Quantum circuits -Execute quantum circuit compilation [benchmark task 25](https://metriq.info/Task/25) and submit performance results for each version of Qiskit to metriq.info. +Execute quantum circuit compilation [benchmark task 25](https://metriq.info/Task/25) and submit performance results for each version of Qiskit to [metriq.info](https://metriq.info/), a community-driven platform for hosting quantum benchmarks. ## Archictecture -Tox environments, with different Qiskit versions installed, execute [circuit benchmark tasks](https://github.com/qiskit-community/submit-metriq/blob/main/scripts/circuit_depth_and_gate_count.py), compiled for the `IBM-Q Rochester` and `Rigetti 16Q Aspen-1` architecture platforms. +This project creates a tox environment for each qiskit-terra version, starting from v0.13.0 to [latest](https://github.com/Qiskit/qiskit/releases). + +The benchmark circuit compilation is batch processed, and the results are submitted to [metriq.info](https://metriq.info/). + +Benchmark tasks for quantum computer compilers: +- ex1_226.qasm benchmark circuit + - [Task 25](https://metriq.info/Task/25) + - [Task 26](https://metriq.info/Task/26) - Aspen architecture + - [Task 27](https://metriq.info/Task/27) - IBMQ Rochester architecture ## Requirements * [tox](https://pypi.org/project/tox/) * Python 3.8+ - ## Run locally ### To run benchmark task using the current stable version of `qiskit-terra`: ```bash @@ -22,9 +29,3 @@ Versions >=0.13,<=0.15 require numpy<1.20. You can run the tox environments `ter ```bash tox -e py8-terra13 ``` - -### Create historical data using previous versions of `qiskit-terra` since last update to Metriq: - -```bash -python scripts/run_tox_envs.py -``` From 04f2ceca70c69d43a505e8faf05d33801a0dba98 Mon Sep 17 00:00:00 2001 From: Karla Spuldaro Date: Wed, 30 Aug 2023 12:16:35 -0400 Subject: [PATCH 29/29] Add results to README --- README.md | 17 +++++++++++++++++ src/postprocessing.py | 5 ----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8d613dc..e438f67 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,23 @@ Benchmark tasks for quantum computer compilers: - [Task 26](https://metriq.info/Task/26) - Aspen architecture - [Task 27](https://metriq.info/Task/27) - IBMQ Rochester architecture +## Results +**Circuit depth distribution** + +Compiled for the Rigetti 16Q Aspen architecture +![Circuit depth-Aspen](benchmarking/results/visualizations/boxplot-aspen_depth.png) + +Compiled for the IBMQ Rochester architecture +![Circuit depth-Rochester](benchmarking/results/visualizations/boxplot-rochester_depth.png) + +**Gate count distribution** + +Compiled for the Rigetti 16Q Aspen architecture +![Circuit depth-Aspen](benchmarking/results/visualizations/boxplot-aspen_gates.png) + +Compiled for the IBMQ Rochester architecture +![Circuit depth-Rochester](benchmarking/results/visualizations/boxplot-rochester_gates.png) + ## Requirements * [tox](https://pypi.org/project/tox/) * Python 3.8+ diff --git a/src/postprocessing.py b/src/postprocessing.py index 8ef1430..f9adf6c 100644 --- a/src/postprocessing.py +++ b/src/postprocessing.py @@ -104,8 +104,3 @@ def process_results(dataframe, client: MetriqClient, task_id: str, method_id: st # TODO Get submission ids from client # submit_all(TASKS["26"], "661") # submit_all(TASKS["27"], "662") - -# TODO open issues for API errors below -# all_methods = client.method_get_names() # ERROR: AttributeError: 'MetriqClient' object has no attribute 'method_get_names' -# all_platforms = client.platform_get_names() # ERROR: AttributeError: 'MetriqClient' object has no attribute 'platform_get_names' -# platform "Rigetti 16Q Aspen-1 " has trailing space \ No newline at end of file