@@ -171,6 +171,37 @@ mod tests {
171
171
assert_eq ! ( result, expected) ;
172
172
}
173
173
174
+ #[ test]
175
+ fn test_single_threaded_matmul_4x4 ( ) {
176
+ let m = 4 ;
177
+ let k = 4 ;
178
+ let n = 4 ;
179
+
180
+ // Define matrix `a` (4x4) in row-major order
181
+ let a = vec ! [
182
+ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 , 7.0 , 8.0 , 9.0 , 10.0 , 11.0 , 12.0 , 13.0 , 14.0 , 15.0 , 16.0 ,
183
+ ] ;
184
+
185
+ // Define matrix `b` (4x4) in row-major order
186
+ let b = vec ! [
187
+ 17.0 , 18.0 , 19.0 , 20.0 , 21.0 , 22.0 , 23.0 , 24.0 , 25.0 , 26.0 , 27.0 , 28.0 , 29.0 , 30.0 ,
188
+ 31.0 , 32.0 ,
189
+ ] ;
190
+
191
+ // Expected result (4x4) after multiplying `a` and `b`
192
+ let expected = vec ! [
193
+ 250.0 , 260.0 , 270.0 , 280.0 , 618.0 , 644.0 , 670.0 , 696.0 , 986.0 , 1028.0 , 1070.0 , 1112.0 ,
194
+ 1354.0 , 1412.0 , 1470.0 , 1528.0 ,
195
+ ] ;
196
+
197
+ let variant = crate :: variants:: Isomorphic ;
198
+ let matrix_multiplier = futures:: executor:: block_on ( SingleThreadedMatMul :: new ( variant) ) ;
199
+
200
+ let result = matrix_multiplier. multiply ( & a, & b, m, k, n) ;
201
+
202
+ assert_eq ! ( result, expected) ;
203
+ }
204
+
174
205
#[ test]
175
206
fn test_multithreaded_matmul_2x1x1 ( ) {
176
207
let m = 2 ;
0 commit comments