Params:
- num_a_rows=1000
- num_a_cols=30
- num_b_rows=5
- num_ops=200
- num_runs=10
- dtype=<dtype: 'float32'>

Running tests:
--> reduction: on_gpu=False, a_shape=(1000, 30), b_shape=(5, 30)
--> reduction: on_gpu=True, a_shape=(1000, 30), b_shape=(5, 30)
--> matmul: on_gpu=False, a_shape=(1000, 30), b_shape=(5, 30)
--> matmul: on_gpu=True, a_shape=(1000, 30), b_shape=(5, 30)
--> reduction_by_matmul: on_gpu=False, a_shape=(1000, 30), b_shape=(5, 30)
--> reduction_by_matmul: on_gpu=True, a_shape=(1000, 30), b_shape=(5, 30)
--> reduction: on_gpu=False, a_shape=(1000, 30), b_shape=(1000, 5, 30)
--> reduction: on_gpu=True, a_shape=(1000, 30), b_shape=(1000, 5, 30)
--> matmul: on_gpu=False, a_shape=(1000, 30), b_shape=(1000, 5, 30)
--> matmul: on_gpu=True, a_shape=(1000, 30), b_shape=(1000, 5, 30)
--> reduction_by_matmul: on_gpu=False, a_shape=(1000, 30), b_shape=(1000, 5, 30)
--> reduction_by_matmul: on_gpu=True, a_shape=(1000, 30), b_shape=(1000, 5, 30)

-----------------------
case1_2d (simulate multiplication with weights)
-----------------------
CPU          op:  size  setup_time  first_run_time  rest_run_time    correct
         matmul:   801      239.15           41.45           5.28       True
      reduction:  1601      559.44          251.36         169.91       True
reduction_by_matmul:  3601     1253.72          446.94         219.88       True
GPU          op:  size  setup_time  first_run_time  rest_run_time    correct
         matmul:   801      239.25          158.12           1.95       True
      reduction:  1601      574.83          209.55          18.24       True
reduction_by_matmul:  3601     1292.11          641.22         378.50       True

-----------------------
case2_3d (simulate multiplication with IVs)
-----------------------
CPU          op:  size  setup_time  first_run_time  rest_run_time    correct
         matmul:  1401      422.01           88.20          24.36       True
      reduction:  1601      520.77          247.34         173.02       True
reduction_by_matmul:  3601     1207.89          414.57         231.67       True
GPU          op:  size  setup_time  first_run_time  rest_run_time    correct
         matmul:  1401      503.04          447.36         367.94       True
      reduction:  1601      574.33           98.41          16.65       True
reduction_by_matmul:  3601     1299.55          613.47         379.90       True
