@@ -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