Skip to content

Commit 11a0c56

Browse files
committed
BENCH: add BLAS level 2 gemv and gbmv
1 parent 400cf9f commit 11a0c56

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

benchmark/pybench/benchmarks/bench_blas.py

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,62 @@ def test_daxpy(benchmark, n, variant):
7373
result = benchmark(run_daxpy, x, y, axpy)
7474

7575

76+
# ### BLAS level 2 ###
77+
78+
gemv_sizes = [100, 1000]
79+
80+
def run_gemv(a, x, y, func):
81+
res = func(1.0, a, x, y=y, overwrite_y=True)
82+
return res
83+
84+
85+
@pytest.mark.parametrize('variant', ['s', 'd', 'c', 'z'])
86+
@pytest.mark.parametrize('n', gemv_sizes)
87+
def test_dgemv(benchmark, n, variant):
88+
rndm = np.random.RandomState(1234)
89+
dtyp = dtype_map[variant]
90+
91+
x = np.array(rndm.uniform(size=(n,)), dtype=dtyp)
92+
y = np.empty(n, dtype=dtyp)
93+
94+
a = np.array(rndm.uniform(size=(n,n)), dtype=dtyp)
95+
x = np.array(rndm.uniform(size=(n,)), dtype=dtyp)
96+
y = np.zeros(n, dtype=dtyp)
97+
98+
gemv = ow.get_func('gemv', variant)
99+
result = benchmark(run_gemv, a, x, y, gemv)
100+
101+
assert result is y
102+
103+
104+
# dgbmv
105+
106+
dgbmv_sizes = [100, 1000]
107+
108+
def run_gbmv(m, n, kl, ku, a, x, y, func):
109+
res = func(m, n, kl, ku, 1.0, a, x, y=y, overwrite_y=True)
110+
return res
111+
112+
113+
114+
@pytest.mark.parametrize('variant', ['s', 'd', 'c', 'z'])
115+
@pytest.mark.parametrize('n', dgbmv_sizes)
116+
@pytest.mark.parametrize('kl', [1])
117+
def test_dgbmv(benchmark, n, kl, variant):
118+
rndm = np.random.RandomState(1234)
119+
dtyp = dtype_map[variant]
120+
121+
x = np.array(rndm.uniform(size=(n,)), dtype=dtyp)
122+
y = np.empty(n, dtype=dtyp)
123+
124+
m = n
125+
126+
a = rndm.uniform(size=(2*kl + 1, n))
127+
a = np.array(a, dtype=dtyp, order='F')
128+
129+
gbmv = ow.get_func('gbmv', variant)
130+
result = benchmark(run_gbmv, m, n, kl, kl, a, x, y, gbmv)
131+
assert result is y
76132

77133

78134
# ### BLAS level 3 ###

0 commit comments

Comments
 (0)