Skip to content

Commit 32ab23d

Browse files
authored
Merge pull request #891 from prady0t/making-benchmarking-deterministic
Making benchmarking tests deterministic
2 parents d27f795 + 17d04f4 commit 32ab23d

File tree

4 files changed

+13
-22
lines changed

4 files changed

+13
-22
lines changed

benchmarks/conftest.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import pytest
22

3+
import numpy as np
34

4-
@pytest.fixture
5-
def seed(scope="session"):
6-
return 42
5+
6+
@pytest.fixture(scope="function")
7+
def rng():
8+
return np.random.default_rng(seed=42)
79

810

911
@pytest.fixture

benchmarks/test_benchmark_coo.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
import pytest
77

8-
import numpy as np
9-
108
DENSITY = 0.01
119

1210

@@ -15,13 +13,12 @@ def format_id(format):
1513

1614

1715
@pytest.mark.parametrize("format", ["coo", "gcxs"])
18-
def test_matmul(benchmark, sides, format, seed, max_size, ids=format_id):
16+
def test_matmul(benchmark, sides, format, rng, max_size, ids=format_id):
1917
m, n, p = sides
2018

2119
if m * n >= max_size or n * p >= max_size:
2220
pytest.skip()
2321

24-
rng = np.random.default_rng(seed=seed)
2522
x = sparse.random((m, n), density=DENSITY, format=format, random_state=rng)
2623
y = sparse.random((n, p), density=DENSITY, format=format, random_state=rng)
2724

@@ -38,11 +35,10 @@ def get_test_id(params):
3835

3936

4037
@pytest.fixture(params=itertools.product([100, 500, 1000], [1, 2, 3, 4], ["coo", "gcxs"]), ids=get_test_id)
41-
def elemwise_args(request, seed, max_size):
38+
def elemwise_args(request, rng, max_size):
4239
side, rank, format = request.param
4340
if side**rank >= max_size:
4441
pytest.skip()
45-
rng = np.random.default_rng(seed=seed)
4642
shape = (side,) * rank
4743
x = sparse.random(shape, density=DENSITY, format=format, random_state=rng)
4844
y = sparse.random(shape, density=DENSITY, format=format, random_state=rng)
@@ -65,11 +61,10 @@ def get_elemwise_ids(params):
6561

6662

6763
@pytest.fixture(params=itertools.product([100, 500, 1000], ["coo", "gcxs"]), ids=get_elemwise_ids)
68-
def elemwise_broadcast_args(request, seed, max_size):
64+
def elemwise_broadcast_args(request, rng, max_size):
6965
side, format = request.param
7066
if side**2 >= max_size:
7167
pytest.skip()
72-
rng = np.random.default_rng(seed=seed)
7368
x = sparse.random((side, 1, side), density=DENSITY, format=format, random_state=rng)
7469
y = sparse.random((side, side), density=DENSITY, format=format, random_state=rng)
7570
return x, y
@@ -86,11 +81,10 @@ def bench():
8681

8782

8883
@pytest.fixture(params=itertools.product([100, 500, 1000], [1, 2, 3], ["coo", "gcxs"]), ids=get_test_id)
89-
def indexing_args(request, seed, max_size):
84+
def indexing_args(request, rng, max_size):
9085
side, rank, format = request.param
9186
if side**rank >= max_size:
9287
pytest.skip()
93-
rng = np.random.default_rng(seed=seed)
9488
shape = (side,) * rank
9589

9690
return sparse.random(shape, density=DENSITY, format=format, random_state=rng)
@@ -120,10 +114,9 @@ def bench():
120114
x[(slice(side // 2),) * rank]
121115

122116

123-
def test_index_fancy(benchmark, indexing_args, seed):
117+
def test_index_fancy(benchmark, indexing_args, rng):
124118
x = indexing_args
125119
side = x.shape[0]
126-
rng = np.random.default_rng(seed=seed)
127120
index = rng.integers(0, side, size=(side // 2,))
128121

129122
x[index] # Numba compilation
@@ -145,12 +138,11 @@ def sides(request):
145138

146139

147140
@pytest.fixture(params=([(0, "coo"), (0, "gcxs"), (1, "gcxs")]), ids=["coo", "gcxs-0-axis", "gcxs-1-axis"])
148-
def densemul_args(request, sides, seed, max_size):
141+
def densemul_args(request, sides, rng, max_size):
149142
compressed_axis, format = request.param
150143
m, n, p = sides
151144
if m * n >= max_size or n * p >= max_size:
152145
pytest.skip()
153-
rng = np.random.default_rng(seed=seed)
154146
if format == "coo":
155147
x = sparse.random((m, n), density=DENSITY / 10, format=format, random_state=rng)
156148
else:

benchmarks/test_elemwise.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import pytest
99

10-
import numpy as np
1110
import scipy.sparse as sps
1211

1312
DENSITY = 0.001
@@ -18,11 +17,10 @@ def get_test_id(side):
1817

1918

2019
@pytest.fixture(params=[100, 500, 1000], ids=get_test_id)
21-
def elemwise_args(request, seed, max_size):
20+
def elemwise_args(request, rng, max_size):
2221
side = request.param
2322
if side**2 >= max_size:
2423
pytest.skip()
25-
rng = np.random.default_rng(seed=seed)
2624
s1_sps = sps.random(side, side, format="csr", density=DENSITY, random_state=rng) * 10
2725
s1_sps.sum_duplicates()
2826
s2_sps = sps.random(side, side, format="csr", density=DENSITY, random_state=rng) * 10

benchmarks/test_tensordot.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,11 @@ def get_tensor_ids(param):
3434
ids=get_tensor_ids,
3535
scope="function",
3636
)
37-
def tensordot_args(request, sides, seed, max_size):
37+
def tensordot_args(request, sides, rng, max_size):
3838
m, n, p, q = sides
3939
if m * n * p * q >= max_size:
4040
pytest.skip()
4141
left_index, right_index, left_format, right_format = request.param
42-
rng = np.random.default_rng(seed=seed)
4342

4443
t = rng.random((m, n))
4544

0 commit comments

Comments
 (0)