Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge latest from master, some benchmarks have main arguments added #497

Merged
merged 9 commits into from
Jun 10, 2024
47 changes: 46 additions & 1 deletion amplitude-estimation/qiskit/ae_benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -330,5 +330,50 @@ def execution_handler(qc, result, num_qubits, s_int, num_shots):
metrics.plot_metrics(f"Benchmark Results - {benchmark_name} - Qiskit")


#######################
# MAIN

import argparse
def get_args():
parser = argparse.ArgumentParser(description="Bernstei-Vazirani Benchmark")
#parser.add_argument("--api", "-a", default=None, help="Programming API", type=str)
#parser.add_argument("--target", "-t", default=None, help="Target Backend", type=str)
parser.add_argument("--backend_id", "-b", default=None, help="Backend Identifier", type=str)
parser.add_argument("--num_shots", "-s", default=100, help="Number of shots", type=int)
parser.add_argument("--num_qubits", "-n", default=0, help="Number of qubits", type=int)
parser.add_argument("--min_qubits", "-min", default=3, help="Minimum number of qubits", type=int)
parser.add_argument("--max_qubits", "-max", default=8, help="Maximum number of qubits", type=int)
parser.add_argument("--skip_qubits", "-k", default=1, help="Number of qubits to skip", type=int)
parser.add_argument("--max_circuits", "-c", default=3, help="Maximum circuit repetitions", type=int)
parser.add_argument("--method", "-m", default=1, help="Algorithm Method", type=int)
parser.add_argument("--num_state_qubits", "-nsq", default=0.0, help="Number of State Qubits", type=int)
parser.add_argument("--nonoise", "-non", action="store_true", help="Use Noiseless Simulator")
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose")
return parser.parse_args()

# if main, execute method
if __name__ == '__main__': run()
if __name__ == '__main__':
args = get_args()

# configure the QED-C Benchmark package for use with the given API
# (done here so we can set verbose for now)
#AmplitudeEstimation, kernel_draw = qedc_benchmarks_init(args.api)

# special argument handling
ex.verbose = args.verbose
verbose = args.verbose

if args.num_qubits > 0: args.min_qubits = args.max_qubits = args.num_qubits

# execute benchmark program
run(min_qubits=args.min_qubits, max_qubits=args.max_qubits,
skip_qubits=args.skip_qubits, max_circuits=args.max_circuits,
num_shots=args.num_shots,
#method=args.method,
num_state_qubits=args.num_state_qubits,
backend_id=args.backend_id,
exec_options = {"noise_model" : None} if args.nonoise else {},
#api=args.api
)


10 changes: 7 additions & 3 deletions bernstein-vazirani/bv_benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,16 +156,16 @@ def execution_handler (qc, result, num_qubits, s_int, num_shots):
if 2**(input_size) <= max_circuits:
s_range = list(range(num_circuits))
else:
# create selection larger than needed and remove duplicates (faster than random.choice())
s_range = np.random.randint(1, 2**(input_size), num_circuits + 10)
# create selection larger than needed and remove duplicates
s_range = np.random.randint(1, 2**(input_size), num_circuits + 2)
s_range = list(set(s_range))[0:max_circuits]

# loop over limited # of secret strings for this
for s_int in s_range:
s_int = int(s_int)

# if user specifies input_value, use it instead
# DEVNOTE: if max_circuits used, this will generate multiple bars per width
# DEVNOTE: if max_circuits used, this will generate separate bar for each num_circuits
if input_value is not None:
s_int = input_value

Expand Down Expand Up @@ -217,6 +217,7 @@ def get_args():
parser.add_argument("--max_circuits", "-c", default=3, help="Maximum circuit repetitions", type=int)
parser.add_argument("--method", "-m", default=1, help="Algorithm Method", type=int)
parser.add_argument("--input_value", "-i", default=None, help="Fixed Input Value", type=int)
parser.add_argument("--nonoise", "-non", action="store_true", help="Use Noiseless Simulator")
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose")
return parser.parse_args()

Expand All @@ -230,6 +231,8 @@ def get_args():

# special argument handling
ex.verbose = args.verbose
verbose = args.verbose

if args.num_qubits > 0: args.min_qubits = args.max_qubits = args.num_qubits

# execute benchmark program
Expand All @@ -239,6 +242,7 @@ def get_args():
method=args.method,
input_value=args.input_value,
backend_id=args.backend_id,
exec_options = {"noise_model" : None} if args.nonoise else {},
api=args.api
)

10 changes: 7 additions & 3 deletions bernstein-vazirani/qiskit/bv_benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,16 +139,16 @@ def execution_handler (qc, result, num_qubits, s_int, num_shots):
if 2**(input_size) <= max_circuits:
s_range = list(range(num_circuits))
else:
# create selection larger than needed and remove duplicates (faster than random.choice())
s_range = np.random.randint(1, 2**(input_size), num_circuits + 10)
# create selection larger than needed and remove duplicates
s_range = np.random.randint(1, 2**(input_size), num_circuits + 2)
s_range = list(set(s_range))[0:max_circuits]

# loop over limited # of secret strings for this
for s_int in s_range:
s_int = int(s_int)

# if user specifies input_value, use it instead
# DEVNOTE: if max_circuits used, this will generate multiple bars per width
# DEVNOTE: if max_circuits used, this will generate separate bar for each num_circuits
if input_value is not None:
s_int = input_value

Expand Down Expand Up @@ -200,6 +200,7 @@ def get_args():
parser.add_argument("--max_circuits", "-c", default=3, help="Maximum circuit repetitions", type=int)
parser.add_argument("--method", "-m", default=1, help="Algorithm Method", type=int)
parser.add_argument("--input_value", "-i", default=None, help="Fixed Input Value", type=int)
parser.add_argument("--nonoise", "-non", action="store_true", help="Use Noiseless Simulator")
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose")
return parser.parse_args()

Expand All @@ -213,6 +214,8 @@ def get_args():

# special argument handling
ex.verbose = args.verbose
verbose = args.verbose

if args.num_qubits > 0: args.min_qubits = args.max_qubits = args.num_qubits

# execute benchmark program
Expand All @@ -222,6 +225,7 @@ def get_args():
method=args.method,
input_value=args.input_value,
backend_id=args.backend_id,
exec_options = {"noise_model" : None} if args.nonoise else {},
#api=args.api
)

45 changes: 44 additions & 1 deletion deutsch-jozsa/qiskit/dj_benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,5 +226,48 @@ def execution_handler (qc, result, num_qubits, type, num_shots):
# Plot metrics for all circuit sizes
metrics.plot_metrics(f"Benchmark Results - {benchmark_name} - Qiskit")


#######################
# MAIN

import argparse
def get_args():
parser = argparse.ArgumentParser(description="Bernstei-Vazirani Benchmark")
#parser.add_argument("--api", "-a", default=None, help="Programming API", type=str)
#parser.add_argument("--target", "-t", default=None, help="Target Backend", type=str)
parser.add_argument("--backend_id", "-b", default=None, help="Backend Identifier", type=str)
parser.add_argument("--num_shots", "-s", default=100, help="Number of shots", type=int)
parser.add_argument("--num_qubits", "-n", default=0, help="Number of qubits", type=int)
parser.add_argument("--min_qubits", "-min", default=3, help="Minimum number of qubits", type=int)
parser.add_argument("--max_qubits", "-max", default=8, help="Maximum number of qubits", type=int)
parser.add_argument("--skip_qubits", "-k", default=1, help="Number of qubits to skip", type=int)
parser.add_argument("--max_circuits", "-c", default=3, help="Maximum circuit repetitions", type=int)
#parser.add_argument("--method", "-m", default=1, help="Algorithm Method", type=int)
parser.add_argument("--nonoise", "-non", action="store_true", help="Use Noiseless Simulator")
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose")
return parser.parse_args()

# if main, execute method
if __name__ == '__main__': run()
if __name__ == '__main__':
args = get_args()

# configure the QED-C Benchmark package for use with the given API
# (done here so we can set verbose for now)
#BersteinVazirani, kernel_draw = qedc_benchmarks_init(args.api)

# special argument handling
ex.verbose = args.verbose
verbose = args.verbose

if args.num_qubits > 0: args.min_qubits = args.max_qubits = args.num_qubits

# execute benchmark program
run(min_qubits=args.min_qubits, max_qubits=args.max_qubits,
skip_qubits=args.skip_qubits, max_circuits=args.max_circuits,
num_shots=args.num_shots,
#method=args.method,
backend_id=args.backend_id,
exec_options = {"noise_model" : None} if args.nonoise else {},
#api=args.api
)

4 changes: 4 additions & 0 deletions grovers/qiskit/grovers_benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,7 @@ def get_args():
parser.add_argument("--method", "-m", default=1, help="Algorithm Method", type=int)
#parser.add_argument("--input_value", "-i", default=None, help="Fixed Input Value", type=int)
parser.add_argument("--use_mcx_shim", action="store_true", help="Use MCX Shim")
parser.add_argument("--nonoise", "-non", action="store_true", help="Use Noiseless Simulator")
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose")
return parser.parse_args()

Expand All @@ -186,6 +187,8 @@ def get_args():

# special argument handling
ex.verbose = args.verbose
verbose = args.verbose

if args.num_qubits > 0: args.min_qubits = args.max_qubits = args.num_qubits

# execute benchmark program
Expand All @@ -195,6 +198,7 @@ def get_args():
#method=args.method, # not used currently
use_mcx_shim=args.use_mcx_shim,
backend_id=args.backend_id,
exec_options = {"noise_model" : None} if args.nonoise else {},
#api=args.api
)

4 changes: 4 additions & 0 deletions hidden-shift/qiskit/hs_benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ def get_args():
parser.add_argument("--max_circuits", "-c", default=3, help="Maximum circuit repetitions", type=int)
parser.add_argument("--method", "-m", default=1, help="Algorithm Method", type=int)
#parser.add_argument("--input_value", "-i", default=None, help="Fixed Input Value", type=int)
parser.add_argument("--nonoise", "-non", action="store_true", help="Use Noiseless Simulator")
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose")
return parser.parse_args()

Expand All @@ -158,6 +159,8 @@ def get_args():

# special argument handling
ex.verbose = args.verbose
verbose = args.verbose

if args.num_qubits > 0: args.min_qubits = args.max_qubits = args.num_qubits

# execute benchmark program
Expand All @@ -167,6 +170,7 @@ def get_args():
#method=args.method, # not used currently
#input_value=args.input_value, # not used currently
backend_id=args.backend_id,
exec_options = {"noise_model" : None} if args.nonoise else {},
#api=args.api
)

Expand Down
47 changes: 46 additions & 1 deletion monte-carlo/qiskit/mc_benchmark.py
Original file line number Diff line number Diff line change
Expand Up @@ -489,5 +489,50 @@ def execution_handler(qc, result, num_qubits, mu, num_shots):
metrics.plot_metrics(f"Benchmark Results - {benchmark_name} ({method}) - Qiskit")


#######################
# MAIN

import argparse
def get_args():
parser = argparse.ArgumentParser(description="Bernstei-Vazirani Benchmark")
#parser.add_argument("--api", "-a", default=None, help="Programming API", type=str)
#parser.add_argument("--target", "-t", default=None, help="Target Backend", type=str)
parser.add_argument("--backend_id", "-b", default=None, help="Backend Identifier", type=str)
parser.add_argument("--num_shots", "-s", default=100, help="Number of shots", type=int)
parser.add_argument("--num_qubits", "-n", default=0, help="Number of qubits", type=int)
parser.add_argument("--min_qubits", "-min", default=3, help="Minimum number of qubits", type=int)
parser.add_argument("--max_qubits", "-max", default=8, help="Maximum number of qubits", type=int)
parser.add_argument("--skip_qubits", "-k", default=1, help="Number of qubits to skip", type=int)
parser.add_argument("--max_circuits", "-c", default=3, help="Maximum circuit repetitions", type=int)
parser.add_argument("--method", "-m", default=1, help="Algorithm Method", type=int)
parser.add_argument("--num_state_qubits", "-nsq", default=0.0, help="Number of State Qubits", type=int)
parser.add_argument("--nonoise", "-non", action="store_true", help="Use Noiseless Simulator")
parser.add_argument("--verbose", "-v", action="store_true", help="Verbose")
return parser.parse_args()

# if main, execute method
if __name__ == '__main__': run()
if __name__ == '__main__':
args = get_args()

# configure the QED-C Benchmark package for use with the given API
# (done here so we can set verbose for now)
#MonteCarloSampling, kernel_draw = qedc_benchmarks_init(args.api)

# special argument handling
ex.verbose = args.verbose
verbose = args.verbose

if args.num_qubits > 0: args.min_qubits = args.max_qubits = args.num_qubits

# execute benchmark program
run(min_qubits=args.min_qubits, max_qubits=args.max_qubits,
skip_qubits=args.skip_qubits, max_circuits=args.max_circuits,
num_shots=args.num_shots,
#method=args.method,
num_state_qubits=args.num_state_qubits,
backend_id=args.backend_id,
exec_options = {"noise_model" : None} if args.nonoise else {},
#api=args.api
)


Loading
Loading