@@ -73,6 +73,62 @@ def test_daxpy(benchmark, n, variant):
73
73
result = benchmark (run_daxpy , x , y , axpy )
74
74
75
75
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
76
132
77
133
78
134
# ### BLAS level 3 ###
0 commit comments