From 354e645b20ec76653e53a003526aaef94724f8ec Mon Sep 17 00:00:00 2001 From: Xavier Spronken Date: Fri, 9 Sep 2022 23:21:49 +0200 Subject: [PATCH 1/2] Testing operation filtering --- benchmarks/test_view.py | 76 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 benchmarks/test_view.py diff --git a/benchmarks/test_view.py b/benchmarks/test_view.py new file mode 100644 index 000000000..266031e62 --- /dev/null +++ b/benchmarks/test_view.py @@ -0,0 +1,76 @@ +import pandas as pd +import pytest +import numpy as np +import benchmarks.view_utilities as view + +def get_params(length): + operations = ['add', 'matmul','qobjevo', 'mcsolve', 'mesolve'] + times = np.linspace(1,length,length,dtype=int) + size = np.logspace(1,length,length, base=2, dtype=int) + density = ["sparse"]*int(length/2)+["dense"]*int(length/2) + model = ["qubit"]*int(length/2)+["cavity"]*int(length/2) + + return (operations, times, size, density, model) + +def get_sum(all_ops, times, filter_ops): + res = 0 + for i, op in enumerate(all_ops): + for filter in filter_ops: + if op == filter: + res += np.sum(times+i*10) + + return res + + +def create_dataframe(params): + + operations, times, size, density, model = params + + result = pd.DataFrame() + + for i , item in enumerate(operations): + tmp_dict = {} + tmp_dict["size"] = size.tolist() + tmp_dict["times"] = (times+i*10).tolist() + tmp_dict["params_operation"] = [item]*len(times) + if "solve" in item: + tmp_dict["model"] = model + else: + tmp_dict["density"] = density + tmp = pd.DataFrame(tmp_dict) + result = pd.concat([result,tmp]) + + return result + +@pytest.fixture(params=np.logspace(1, 8, 8, base=2, dtype=int).tolist()) +def length(request): return request.param + +@pytest.mark.parametrize([ + "filters" +], [ + pytest.param( + (['add'], ['matmul'],['qobjevo'], ['mcsolve'], ['mesolve']), + id="single_filters"), + pytest.param( + (['add', 'matmul'],['qobjevo', 'mcsolve', 'mesolve']), + id="multi_filters") +]) +def test_sort(filters, length): + params = get_params(length) + operations, times, _, _, _ = params + data = create_dataframe(params) + + + for filter in filters: + + test_data = view.sort_ops(data,filter) + ref_time = get_sum(operations, times, filter) + + test_time = 0 + for _, value in test_data.items(): + test_time += value["times"].sum() + + + + assert filter == list(test_data.keys()) + assert test_time == ref_time From 739420feca0acf26e72026bc4e55f4cc13a91f30 Mon Sep 17 00:00:00 2001 From: Xavier Spronken Date: Fri, 9 Sep 2022 23:28:12 +0200 Subject: [PATCH 2/2] black reformat --- benchmarks/test_view.py | 61 ++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/benchmarks/test_view.py b/benchmarks/test_view.py index 266031e62..8c98859de 100644 --- a/benchmarks/test_view.py +++ b/benchmarks/test_view.py @@ -3,21 +3,23 @@ import numpy as np import benchmarks.view_utilities as view -def get_params(length): - operations = ['add', 'matmul','qobjevo', 'mcsolve', 'mesolve'] - times = np.linspace(1,length,length,dtype=int) - size = np.logspace(1,length,length, base=2, dtype=int) - density = ["sparse"]*int(length/2)+["dense"]*int(length/2) - model = ["qubit"]*int(length/2)+["cavity"]*int(length/2) - return (operations, times, size, density, model) +def get_params(length): + operations = ["add", "matmul", "qobjevo", "mcsolve", "mesolve"] + times = np.linspace(1, length, length, dtype=int) + size = np.logspace(1, length, length, base=2, dtype=int) + density = ["sparse"] * int(length / 2) + ["dense"] * int(length / 2) + model = ["qubit"] * int(length / 2) + ["cavity"] * int(length / 2) + + return (operations, times, size, density, model) + def get_sum(all_ops, times, filter_ops): res = 0 for i, op in enumerate(all_ops): for filter in filter_ops: if op == filter: - res += np.sum(times+i*10) + res += np.sum(times + i * 10) return res @@ -28,49 +30,52 @@ def create_dataframe(params): result = pd.DataFrame() - for i , item in enumerate(operations): + for i, item in enumerate(operations): tmp_dict = {} tmp_dict["size"] = size.tolist() - tmp_dict["times"] = (times+i*10).tolist() - tmp_dict["params_operation"] = [item]*len(times) + tmp_dict["times"] = (times + i * 10).tolist() + tmp_dict["params_operation"] = [item] * len(times) if "solve" in item: tmp_dict["model"] = model else: tmp_dict["density"] = density tmp = pd.DataFrame(tmp_dict) - result = pd.concat([result,tmp]) + result = pd.concat([result, tmp]) return result + @pytest.fixture(params=np.logspace(1, 8, 8, base=2, dtype=int).tolist()) -def length(request): return request.param - -@pytest.mark.parametrize([ - "filters" -], [ - pytest.param( - (['add'], ['matmul'],['qobjevo'], ['mcsolve'], ['mesolve']), - id="single_filters"), - pytest.param( - (['add', 'matmul'],['qobjevo', 'mcsolve', 'mesolve']), - id="multi_filters") -]) +def length(request): + return request.param + + +@pytest.mark.parametrize( + ["filters"], + [ + pytest.param( + (["add"], ["matmul"], ["qobjevo"], ["mcsolve"], ["mesolve"]), + id="single_filters", + ), + pytest.param( + (["add", "matmul"], ["qobjevo", "mcsolve", "mesolve"]), + id="multi_filters", + ), + ], +) def test_sort(filters, length): params = get_params(length) operations, times, _, _, _ = params data = create_dataframe(params) - for filter in filters: - test_data = view.sort_ops(data,filter) + test_data = view.sort_ops(data, filter) ref_time = get_sum(operations, times, filter) test_time = 0 for _, value in test_data.items(): test_time += value["times"].sum() - - assert filter == list(test_data.keys()) assert test_time == ref_time