
======================================================================
LAP Solver Benchmark - Available Solvers
======================================================================
Available Solvers:
------------------------------------------------------------
✓ Scipy                     [pure_python]
✓ ScipyMP8                  [pure_python, batch_parallel, multiprocessing]
✓ BatchedScipyOMP           [cpp, batch_parallel]
                            Features: OpenMP
✓ BatchedScipySequential    [cpp]
✓ Lap1015OMP                [cpp, optimized, intra_matrix_parallel]
                            Features: OpenMP
✓ Lap1015Sequential         [cpp, optimized]
✓ Lap1015OMPNoEps           [cpp, optimized, intra_matrix_parallel, no_epsilon]
                            Features: OpenMP
✓ Lap1015SequentialNoEps    [cpp, optimized, no_epsilon]
✓ Lap1015OMPLambda          [cpp, optimized, intra_matrix_parallel, lambda_cost]
                            Features: OpenMP
✓ Lap1015SequentialLambda   [cpp, optimized, lambda_cost]
✓ Lap1015OMPNoEpsLambda     [cpp, optimized, intra_matrix_parallel, no_epsilon, lambda_cost]
                            Features: OpenMP
✓ Lap1015SequentialNoEpsLambda [cpp, optimized, no_epsilon, lambda_cost]

======================================================================
LAP Solver Benchmark Suite
======================================================================

======================================================================
SINGLE PROBLEM BENCHMARKS (solve_single)
======================================================================

======================================================================
Generator: get_full_square_matrix
Matrix size: (10, 10)
======================================================================
BatchedScipyOMP          :    0.088 ms
BatchedScipySequential   :    0.006 ms
Lap1015                  :    0.012 ms
Lap1015Sequential        :    0.004 ms
Lap1015SequentialLambda  :    0.004 ms
Lap1015SequentialNoEps   :    0.007 ms
Lap1015SequentialNoEpsLambda:    0.003 ms
Scipy                    :    0.022 ms
ScipyMP8                 :    0.004 ms

======================================================================
Generator: get_full_square_matrix
Matrix size: (50, 50)
======================================================================
BatchedScipyOMP          :    0.089 ms
BatchedScipySequential   :    0.044 ms
Lap1015                  :    0.099 ms
Lap1015Sequential        :    0.053 ms
Lap1015SequentialLambda  :    0.039 ms
Lap1015SequentialNoEps   :    0.042 ms
Lap1015SequentialNoEpsLambda:    0.030 ms
Scipy                    :    0.048 ms
ScipyMP8                 :    0.029 ms

======================================================================
Generator: get_full_square_matrix
Matrix size: (100, 100)
======================================================================
BatchedScipyOMP          :    0.231 ms
BatchedScipySequential   :    0.217 ms
Lap1015                  :    0.301 ms
Lap1015Sequential        :    0.285 ms
Lap1015SequentialLambda  :    0.279 ms
Lap1015SequentialNoEps   :    0.276 ms
Lap1015SequentialNoEpsLambda:    0.256 ms
Scipy                    :    0.245 ms
ScipyMP8                 :    0.194 ms

======================================================================
Generator: get_full_square_matrix
Matrix size: (500, 500)
======================================================================
BatchedScipyOMP          :    6.595 ms
BatchedScipySequential   :    6.387 ms
Lap1015                  :    9.094 ms
Lap1015Sequential        :    8.947 ms
Lap1015SequentialLambda  :    8.898 ms
Lap1015SequentialNoEps   :    8.389 ms
Lap1015SequentialNoEpsLambda:    8.102 ms
Scipy                    :    5.971 ms
ScipyMP8                 :    6.580 ms

======================================================================
Generator: get_full_square_matrix
Matrix size: (1000, 1000)
======================================================================
BatchedScipyOMP          :   40.938 ms
BatchedScipySequential   :   38.421 ms
Lap1015                  :   41.171 ms
Lap1015Sequential        :   73.850 ms
Lap1015SequentialLambda  :  102.548 ms
Lap1015SequentialNoEps   :   53.399 ms
Lap1015SequentialNoEpsLambda:   50.734 ms
Scipy                    :   35.096 ms
ScipyMP8                 :   32.736 ms

======================================================================
Generator: get_masked_square_matrix
Matrix size: (50, 50)
Valid size: 33
======================================================================
BatchedScipyOMP          :    0.112 ms
BatchedScipySequential   :    0.051 ms
Lap1015                  :    0.055 ms
Lap1015Sequential        :    0.070 ms
Lap1015SequentialLambda  :    0.047 ms
Lap1015SequentialNoEps   :    0.026 ms
Lap1015SequentialNoEpsLambda:    0.020 ms
Scipy                    :    0.056 ms
ScipyMP8                 :    0.024 ms

======================================================================
Generator: get_masked_square_matrix
Matrix size: (100, 100)
Valid size: 67
======================================================================
BatchedScipyOMP          :    0.160 ms
BatchedScipySequential   :    0.104 ms
Lap1015                  :    0.292 ms
Lap1015Sequential        :    0.261 ms
Lap1015SequentialLambda  :    0.247 ms
Lap1015SequentialNoEps   :    0.121 ms
Lap1015SequentialNoEpsLambda:    0.101 ms
Scipy                    :    0.112 ms
ScipyMP8                 :    0.094 ms

======================================================================
Generator: get_masked_square_matrix
Matrix size: (500, 500)
Valid size: 337
======================================================================
BatchedScipyOMP          :    3.905 ms
BatchedScipySequential   :    3.793 ms
Lap1015                  :    7.360 ms
Lap1015Sequential        :    7.422 ms
Lap1015SequentialLambda  :    7.845 ms
Lap1015SequentialNoEps   :    5.735 ms
Lap1015SequentialNoEpsLambda:    5.059 ms
Scipy                    :    3.794 ms
ScipyMP8                 :    3.825 ms

======================================================================
Generator: get_full_rect_matrix
Matrix size: (10, 15)
======================================================================
BatchedScipyOMP          :    0.067 ms
BatchedScipySequential   :    0.006 ms
Lap1015                  :    0.008 ms
Lap1015Sequential        :    0.006 ms
Lap1015SequentialLambda  :    0.005 ms
Lap1015SequentialNoEps   :    0.003 ms
Lap1015SequentialNoEpsLambda:    0.003 ms
Scipy                    :    0.006 ms
ScipyMP8                 :    0.004 ms

======================================================================
Generator: get_full_rect_matrix
Matrix size: (50, 100)
======================================================================
BatchedScipyOMP          :    0.302 ms
BatchedScipySequential   :    0.033 ms
Lap1015                  :    0.107 ms
Lap1015Sequential        :    0.069 ms
Lap1015SequentialLambda  :    0.065 ms
Lap1015SequentialNoEps   :    0.035 ms
Lap1015SequentialNoEpsLambda:    0.030 ms
Scipy                    :    0.030 ms
ScipyMP8                 :    0.022 ms

======================================================================
Generator: get_full_rect_matrix
Matrix size: (100, 50)
======================================================================
BatchedScipyOMP          :    0.074 ms
BatchedScipySequential   :    0.034 ms
Lap1015                  :    0.084 ms
Lap1015Sequential        :    0.094 ms
Lap1015SequentialLambda  :    0.074 ms
Lap1015SequentialNoEps   :    0.041 ms
Lap1015SequentialNoEpsLambda:    0.037 ms
Scipy                    :    0.033 ms
ScipyMP8                 :    0.025 ms

======================================================================
Generator: get_full_rect_matrix
Matrix size: (100, 200)
======================================================================
BatchedScipyOMP          :    0.122 ms
BatchedScipySequential   :    0.092 ms
Lap1015                  :    0.293 ms
Lap1015Sequential        :    0.279 ms
Lap1015SequentialLambda  :    0.375 ms
Lap1015SequentialNoEps   :    0.140 ms
Lap1015SequentialNoEpsLambda:    0.136 ms
Scipy                    :    0.106 ms
ScipyMP8                 :    0.084 ms

======================================================================
Generator: get_masked_rect_matrix
Matrix size: (100, 100)
Valid size: 50
======================================================================
BatchedScipyOMP          :    0.085 ms
BatchedScipySequential   :    0.030 ms
Lap1015                  :    0.092 ms
Lap1015Sequential        :    0.073 ms
Lap1015SequentialLambda  :    0.066 ms
Lap1015SequentialNoEps   :    0.035 ms
Lap1015SequentialNoEpsLambda:    0.028 ms
Scipy                    :    0.029 ms
ScipyMP8                 :    0.022 ms

======================================================================
Generator: get_masked_rect_matrix
Matrix size: (200, 200)
Valid size: 100
======================================================================
BatchedScipyOMP          :    0.231 ms
BatchedScipySequential   :    0.111 ms
Lap1015                  :    0.367 ms
Lap1015Sequential        :    0.326 ms
Lap1015SequentialLambda  :    0.300 ms
Lap1015SequentialNoEps   :    0.170 ms
Lap1015SequentialNoEpsLambda:    0.133 ms
Scipy                    :    0.100 ms
ScipyMP8                 :    0.087 ms

======================================================================
BATCH SIZE = 1 BENCHMARKS (batch_solve)
======================================================================

======================================================================
Generator: get_full_square_matrix
Matrix size: (50, 50), Batch size: 1
======================================================================
BatchedScipyOMP          :    0.106 ms
BatchedScipySequential   :    0.049 ms
Lap1015                  :    0.070 ms
Lap1015Sequential        :    0.045 ms
Lap1015SequentialLambda  :    0.037 ms
Lap1015SequentialNoEps   :    0.056 ms
Lap1015SequentialNoEpsLambda:    0.042 ms
Scipy                    :    0.050 ms
ScipyMP8                 :  825.032 ms

======================================================================
Generator: get_full_square_matrix
Matrix size: (100, 100), Batch size: 1
======================================================================
BatchedScipyOMP          :    0.226 ms
BatchedScipySequential   :    0.198 ms
Lap1015                  :    0.297 ms
Lap1015Sequential        :    0.285 ms
Lap1015SequentialLambda  :    0.278 ms
Lap1015SequentialNoEps   :    0.234 ms
Lap1015SequentialNoEpsLambda:    0.225 ms
Scipy                    :    0.203 ms
ScipyMP8                 : 3841.426 ms

======================================================================
Generator: get_full_square_matrix
Matrix size: (500, 500), Batch size: 1
======================================================================
BatchedScipyOMP          :    9.504 ms
BatchedScipySequential   :   12.359 ms
Lap1015                  :   23.516 ms
Lap1015Sequential        :   43.441 ms
Lap1015SequentialLambda  :   76.687 ms
Lap1015SequentialNoEps   :  179.049 ms
Lap1015SequentialNoEpsLambda:   13.314 ms
Scipy                    :    9.535 ms
ScipyMP8                 : 3247.957 ms

======================================================================
VARIABLE BATCH SIZE BENCHMARKS
======================================================================

--- Square matrices (50x50) ---

======================================================================
Generator: get_full_square_matrix
Matrix size: (50, 50), Batch size: 5
======================================================================
BatchedScipyOMP          :    0.509 ms  (  9817.6 problems/sec)
BatchedScipySequential   :    0.271 ms  ( 18430.3 problems/sec)
Lap1015                  :    0.414 ms  ( 12091.9 problems/sec)
Lap1015Sequential        :    0.389 ms  ( 12848.0 problems/sec)
Lap1015SequentialLambda  :    0.357 ms  ( 14023.6 problems/sec)
Lap1015SequentialNoEps   :    0.302 ms  ( 16531.2 problems/sec)
Lap1015SequentialNoEpsLambda:    0.300 ms  ( 16694.5 problems/sec)
Scipy                    :    0.270 ms  ( 18487.2 problems/sec)
ScipyMP8                 :  558.152 ms  (     9.0 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (50, 50), Batch size: 10
======================================================================
BatchedScipyOMP          :    0.216 ms  ( 46394.9 problems/sec)
BatchedScipySequential   :    0.630 ms  ( 15861.5 problems/sec)
Lap1015                  :    0.779 ms  ( 12839.0 problems/sec)
Lap1015Sequential        :    0.722 ms  ( 13845.6 problems/sec)
Lap1015SequentialLambda  :    0.720 ms  ( 13880.1 problems/sec)
Lap1015SequentialNoEps   :    0.552 ms  ( 18129.6 problems/sec)
Lap1015SequentialNoEpsLambda:    0.614 ms  ( 16286.6 problems/sec)
Scipy                    :    0.524 ms  ( 19071.9 problems/sec)
ScipyMP8                 :  550.056 ms  (    18.2 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (50, 50), Batch size: 50
======================================================================
BatchedScipyOMP          :    0.533 ms  ( 93816.0 problems/sec)
BatchedScipySequential   :    2.516 ms  ( 19870.5 problems/sec)
Lap1015                  :    4.266 ms  ( 11720.0 problems/sec)
Lap1015Sequential        :    4.064 ms  ( 12302.1 problems/sec)
Lap1015SequentialLambda  :    4.079 ms  ( 12256.8 problems/sec)
Lap1015SequentialNoEps   :    2.881 ms  ( 17355.8 problems/sec)
Lap1015SequentialNoEpsLambda:    2.965 ms  ( 16864.4 problems/sec)
Scipy                    :    2.698 ms  ( 18532.0 problems/sec)
ScipyMP8                 : 1052.785 ms  (    47.5 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (50, 50), Batch size: 100
======================================================================
BatchedScipyOMP          :    1.242 ms  ( 80518.0 problems/sec)
BatchedScipySequential   :    6.222 ms  ( 16071.4 problems/sec)
Lap1015                  :    8.503 ms  ( 11760.6 problems/sec)
Lap1015Sequential        :   10.242 ms  (  9763.6 problems/sec)
Lap1015SequentialLambda  :    8.639 ms  ( 11574.8 problems/sec)
Lap1015SequentialNoEps   :    6.874 ms  ( 14547.0 problems/sec)
Lap1015SequentialNoEpsLambda:    6.424 ms  ( 15566.5 problems/sec)
Scipy                    :    5.769 ms  ( 17333.5 problems/sec)
ScipyMP8                 :  594.795 ms  (   168.1 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (50, 50), Batch size: 1000
======================================================================
BatchedScipyOMP          :    8.711 ms  (114797.9 problems/sec)
BatchedScipySequential   :   51.870 ms  ( 19278.8 problems/sec)
Lap1015                  :   82.760 ms  ( 12083.2 problems/sec)
Lap1015Sequential        :   82.941 ms  ( 12056.7 problems/sec)
Lap1015SequentialLambda  :   82.481 ms  ( 12123.9 problems/sec)
Lap1015SequentialNoEps   :   60.931 ms  ( 16411.9 problems/sec)
Lap1015SequentialNoEpsLambda:   61.065 ms  ( 16376.0 problems/sec)
Scipy                    :   52.611 ms  ( 19007.4 problems/sec)
ScipyMP8                 :  572.819 ms  (  1745.8 problems/sec)

--- Square matrices (100x100) ---

======================================================================
Generator: get_full_square_matrix
Matrix size: (100, 100), Batch size: 5
======================================================================
BatchedScipyOMP          :    0.279 ms  ( 17921.1 problems/sec)
BatchedScipySequential   :    1.008 ms  (  4958.9 problems/sec)
Lap1015                  :    1.403 ms  (  3564.4 problems/sec)
Lap1015Sequential        :    1.397 ms  (  3577.9 problems/sec)
Lap1015SequentialLambda  :    1.846 ms  (  2708.1 problems/sec)
Lap1015SequentialNoEps   :    1.213 ms  (  4121.2 problems/sec)
Lap1015SequentialNoEpsLambda:    1.222 ms  (  4091.0 problems/sec)
Scipy                    :    0.964 ms  (  5186.0 problems/sec)
ScipyMP8                 :  519.352 ms  (     9.6 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (100, 100), Batch size: 10
======================================================================
BatchedScipyOMP          :    0.508 ms  ( 19680.2 problems/sec)
BatchedScipySequential   :    2.055 ms  (  4867.0 problems/sec)
Lap1015                  :    3.247 ms  (  3079.4 problems/sec)
Lap1015Sequential        :    3.047 ms  (  3282.2 problems/sec)
Lap1015SequentialLambda  :    3.127 ms  (  3197.5 problems/sec)
Lap1015SequentialNoEps   :    2.541 ms  (  3935.1 problems/sec)
Lap1015SequentialNoEpsLambda:    2.582 ms  (  3872.3 problems/sec)
Scipy                    :    2.047 ms  (  4886.3 problems/sec)
ScipyMP8                 :  684.887 ms  (    14.6 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (100, 100), Batch size: 50
======================================================================
BatchedScipyOMP          :    3.354 ms  ( 14908.3 problems/sec)
BatchedScipySequential   :   11.963 ms  (  4179.5 problems/sec)
Lap1015                  :   17.240 ms  (  2900.2 problems/sec)
Lap1015Sequential        :   16.559 ms  (  3019.6 problems/sec)
Lap1015SequentialLambda  :   16.369 ms  (  3054.5 problems/sec)
Lap1015SequentialNoEps   :   13.433 ms  (  3722.2 problems/sec)
Lap1015SequentialNoEpsLambda:   13.293 ms  (  3761.3 problems/sec)
Scipy                    :   10.588 ms  (  4722.1 problems/sec)
ScipyMP8                 :  590.745 ms  (    84.6 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (100, 100), Batch size: 100
======================================================================
BatchedScipyOMP          :    4.068 ms  ( 24584.6 problems/sec)
BatchedScipySequential   :   21.217 ms  (  4713.1 problems/sec)
Lap1015                  :   32.913 ms  (  3038.3 problems/sec)
Lap1015Sequential        :   32.783 ms  (  3050.4 problems/sec)
Lap1015SequentialLambda  :   33.430 ms  (  2991.3 problems/sec)
Lap1015SequentialNoEps   :   26.084 ms  (  3833.8 problems/sec)
Lap1015SequentialNoEpsLambda:   25.722 ms  (  3887.6 problems/sec)
Scipy                    :   21.254 ms  (  4704.9 problems/sec)
ScipyMP8                 :  848.720 ms  (   117.8 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (100, 100), Batch size: 1000
======================================================================
BatchedScipyOMP          :   48.856 ms  ( 20468.1 problems/sec)
BatchedScipySequential   :  260.345 ms  (  3841.1 problems/sec)
Lap1015                  :  323.432 ms  (  3091.8 problems/sec)
Lap1015Sequential        :  324.181 ms  (  3084.7 problems/sec)
Lap1015SequentialLambda  :  322.664 ms  (  3099.2 problems/sec)
Lap1015SequentialNoEps   :  260.846 ms  (  3833.7 problems/sec)
Lap1015SequentialNoEpsLambda:  265.058 ms  (  3772.8 problems/sec)
Scipy                    :  212.479 ms  (  4706.4 problems/sec)
ScipyMP8                 :  781.712 ms  (  1279.2 problems/sec)

--- Square matrices (500x500) ---

======================================================================
Generator: get_full_square_matrix
Matrix size: (500, 500), Batch size: 5
======================================================================
BatchedScipyOMP          :    7.502 ms  (   666.5 problems/sec)
BatchedScipySequential   :   31.951 ms  (   156.5 problems/sec)
Lap1015                  :   38.202 ms  (   130.9 problems/sec)
Lap1015Sequential        :   38.824 ms  (   128.8 problems/sec)
Lap1015SequentialLambda  :   38.600 ms  (   129.5 problems/sec)
Lap1015SequentialNoEps   :   42.080 ms  (   118.8 problems/sec)
Lap1015SequentialNoEpsLambda:   42.078 ms  (   118.8 problems/sec)
Scipy                    :   31.232 ms  (   160.1 problems/sec)
ScipyMP8                 :  690.059 ms  (     7.2 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (500, 500), Batch size: 10
======================================================================
BatchedScipyOMP          :   18.827 ms  (   531.2 problems/sec)
BatchedScipySequential   :   81.998 ms  (   122.0 problems/sec)
Lap1015                  :   79.407 ms  (   125.9 problems/sec)
Lap1015Sequential        :   78.044 ms  (   128.1 problems/sec)
Lap1015SequentialLambda  :   83.006 ms  (   120.5 problems/sec)
Lap1015SequentialNoEps   :  243.434 ms  (    41.1 problems/sec)
Lap1015SequentialNoEpsLambda:  146.700 ms  (    68.2 problems/sec)
Scipy                    :   79.330 ms  (   126.1 problems/sec)
ScipyMP8                 : 2374.275 ms  (     4.2 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (500, 500), Batch size: 50
======================================================================
BatchedScipyOMP          :   71.054 ms  (   703.7 problems/sec)
BatchedScipySequential   :  346.263 ms  (   144.4 problems/sec)
Lap1015                  :  425.335 ms  (   117.6 problems/sec)
Lap1015Sequential        :  428.942 ms  (   116.6 problems/sec)
Lap1015SequentialLambda  :  462.669 ms  (   108.1 problems/sec)
Lap1015SequentialNoEps   :  439.799 ms  (   113.7 problems/sec)
Lap1015SequentialNoEpsLambda:  607.932 ms  (    82.2 problems/sec)
Scipy                    :  452.817 ms  (   110.4 problems/sec)
ScipyMP8                 :  794.580 ms  (    62.9 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (500, 500), Batch size: 100
======================================================================
BatchedScipyOMP          :  124.968 ms  (   800.2 problems/sec)
BatchedScipySequential   :  712.313 ms  (   140.4 problems/sec)
Lap1015                  :  989.709 ms  (   101.0 problems/sec)
Lap1015Sequential        :  832.655 ms  (   120.1 problems/sec)
Lap1015SequentialLambda  :  875.639 ms  (   114.2 problems/sec)
Lap1015SequentialNoEps   :  913.334 ms  (   109.5 problems/sec)
Lap1015SequentialNoEpsLambda:  875.677 ms  (   114.2 problems/sec)
Scipy                    :  647.340 ms  (   154.5 problems/sec)
ScipyMP8                 :  825.174 ms  (   121.2 problems/sec)

======================================================================
Generator: get_full_square_matrix
Matrix size: (500, 500), Batch size: 1000
======================================================================
BatchedScipyOMP          : 1475.114 ms  (   677.9 problems/sec)
BatchedScipySequential   : 7540.916 ms  (   132.6 problems/sec)
Lap1015                  : 9574.633 ms  (   104.4 problems/sec)
Lap1015Sequential        : 9768.795 ms  (   102.4 problems/sec)
Lap1015SequentialLambda  : 9225.189 ms  (   108.4 problems/sec)
Lap1015SequentialNoEps   : 9964.585 ms  (   100.4 problems/sec)
Lap1015SequentialNoEpsLambda: 9761.333 ms  (   102.4 problems/sec)
Scipy                    : 7253.303 ms  (   137.9 problems/sec)
ScipyMP8                 : 7565.489 ms  (   132.2 problems/sec)

--- Rectangular matrices (50x100) ---

======================================================================
Generator: get_full_rect_matrix
Matrix size: (50, 100), Batch size: 10
======================================================================
BatchedScipyOMP          :    0.194 ms  ( 51557.3 problems/sec)
BatchedScipySequential   :    0.319 ms  ( 31389.0 problems/sec)
Lap1015                  :    0.830 ms  ( 12043.3 problems/sec)
Lap1015Sequential        :    0.845 ms  ( 11840.7 problems/sec)
Lap1015SequentialLambda  :    0.829 ms  ( 12069.4 problems/sec)
Lap1015SequentialNoEps   :    0.429 ms  ( 23294.2 problems/sec)
Lap1015SequentialNoEpsLambda:    0.431 ms  ( 23228.8 problems/sec)
Scipy                    :    0.365 ms  ( 27412.9 problems/sec)
ScipyMP8                 :  478.344 ms  (    20.9 problems/sec)

======================================================================
Generator: get_full_rect_matrix
Matrix size: (50, 100), Batch size: 50
======================================================================
BatchedScipyOMP          :    0.403 ms  (124133.9 problems/sec)
BatchedScipySequential   :    1.624 ms  ( 30786.6 problems/sec)
Lap1015                  :    4.218 ms  ( 11852.6 problems/sec)
Lap1015Sequential        :    4.024 ms  ( 12424.9 problems/sec)
Lap1015SequentialLambda  :    4.046 ms  ( 12357.0 problems/sec)
Lap1015SequentialNoEps   :    2.215 ms  ( 22577.2 problems/sec)
Lap1015SequentialNoEpsLambda:    2.110 ms  ( 23701.4 problems/sec)
Scipy                    :    1.565 ms  ( 31948.9 problems/sec)
ScipyMP8                 :  460.993 ms  (   108.5 problems/sec)

======================================================================
Generator: get_full_rect_matrix
Matrix size: (50, 100), Batch size: 100
======================================================================
BatchedScipyOMP          :    0.743 ms  (134529.0 problems/sec)
BatchedScipySequential   :    3.234 ms  ( 30923.9 problems/sec)
Lap1015                  :    8.440 ms  ( 11848.5 problems/sec)
Lap1015Sequential        :    8.269 ms  ( 12093.5 problems/sec)
Lap1015SequentialLambda  :    8.276 ms  ( 12082.6 problems/sec)
Lap1015SequentialNoEps   :    4.355 ms  ( 22959.5 problems/sec)
Lap1015SequentialNoEpsLambda:    4.287 ms  ( 23323.6 problems/sec)
Scipy                    :    3.386 ms  ( 29536.3 problems/sec)
ScipyMP8                 :  476.685 ms  (   209.8 problems/sec)

--- Rectangular matrices (100x50) ---

======================================================================
Generator: get_full_rect_matrix
Matrix size: (100, 50), Batch size: 10
======================================================================
BatchedScipyOMP          :    0.571 ms  ( 17517.0 problems/sec)
BatchedScipySequential   :    0.647 ms  ( 15447.0 problems/sec)
Lap1015                  :    0.883 ms  ( 11330.4 problems/sec)
Lap1015Sequential        :    0.858 ms  ( 11659.5 problems/sec)
Lap1015SequentialLambda  :    0.856 ms  ( 11677.7 problems/sec)
Lap1015SequentialNoEps   :    0.502 ms  ( 19900.5 problems/sec)
Lap1015SequentialNoEpsLambda:    0.478 ms  ( 20924.1 problems/sec)
Scipy                    :    0.364 ms  ( 27504.0 problems/sec)
ScipyMP8                 :  472.656 ms  (    21.2 problems/sec)

======================================================================
Generator: get_full_rect_matrix
Matrix size: (100, 50), Batch size: 50
======================================================================
BatchedScipyOMP          :    0.422 ms  (118401.8 problems/sec)
BatchedScipySequential   :    1.839 ms  ( 27188.1 problems/sec)
Lap1015                  :    4.908 ms  ( 10187.1 problems/sec)
Lap1015Sequential        :    4.878 ms  ( 10249.5 problems/sec)
Lap1015SequentialLambda  :    4.739 ms  ( 10551.0 problems/sec)
Lap1015SequentialNoEps   :    2.703 ms  ( 18500.2 problems/sec)
Lap1015SequentialNoEpsLambda:    2.595 ms  ( 19266.0 problems/sec)
Scipy                    :    1.858 ms  ( 26910.0 problems/sec)
ScipyMP8                 :  573.949 ms  (    87.1 problems/sec)

======================================================================
Generator: get_full_rect_matrix
Matrix size: (100, 50), Batch size: 100
======================================================================
BatchedScipyOMP          :    0.960 ms  (104121.4 problems/sec)
BatchedScipySequential   :    5.376 ms  ( 18601.8 problems/sec)
Lap1015                  :    9.550 ms  ( 10471.6 problems/sec)
Lap1015Sequential        :    9.555 ms  ( 10465.9 problems/sec)
Lap1015SequentialLambda  :    9.331 ms  ( 10716.6 problems/sec)
Lap1015SequentialNoEps   :    5.360 ms  ( 18655.1 problems/sec)
Lap1015SequentialNoEpsLambda:    5.251 ms  ( 19043.5 problems/sec)
Scipy                    :    3.685 ms  ( 27138.9 problems/sec)
ScipyMP8                 :  462.433 ms  (   216.2 problems/sec)

--- Masked square matrices (100x100) ---

======================================================================
Generator: get_masked_square_matrix
Matrix size: (100, 100), Batch size: 10
Valid size: [67 79 74 71 63 63 61 77 72 74]
======================================================================
BatchedScipyOMP          :    0.666 ms  ( 15004.7 problems/sec)
BatchedScipySequential   :    1.187 ms  (  8425.2 problems/sec)
Lap1015                  :    2.588 ms  (  3863.2 problems/sec)
Lap1015Sequential        :    2.617 ms  (  3821.2 problems/sec)
Lap1015SequentialLambda  :    2.640 ms  (  3788.5 problems/sec)
Lap1015SequentialNoEps   :    1.331 ms  (  7511.0 problems/sec)
Lap1015SequentialNoEpsLambda:    1.523 ms  (  6566.0 problems/sec)
Scipy                    :    1.132 ms  (  8834.6 problems/sec)
ScipyMP8                 :  501.296 ms  (    19.9 problems/sec)

======================================================================
Generator: get_masked_square_matrix
Matrix size: (100, 100), Batch size: 50
Valid size: [67 79 74 71 63 63 61 77 72 74 60 79 76 64 63 63 66 70 68 65 72 62 65 67
 69 75 63 70 71 60 72 63 61 78 79 76 66 61 73 68 62 69 60 78 65 73 66 70
 70 63]
======================================================================
BatchedScipyOMP          :    1.062 ms  ( 47069.9 problems/sec)
BatchedScipySequential   :    5.885 ms  (  8496.7 problems/sec)
Lap1015                  :   13.098 ms  (  3817.3 problems/sec)
Lap1015Sequential        :   12.956 ms  (  3859.3 problems/sec)
Lap1015SequentialLambda  :   12.719 ms  (  3931.2 problems/sec)
Lap1015SequentialNoEps   :    7.419 ms  (  6739.0 problems/sec)
Lap1015SequentialNoEpsLambda:    7.144 ms  (  6998.7 problems/sec)
Scipy                    :    6.180 ms  (  8090.1 problems/sec)
ScipyMP8                 :  459.232 ms  (   108.9 problems/sec)

======================================================================
Generator: get_masked_square_matrix
Matrix size: (100, 100), Batch size: 100
Valid size: [67 79 74 71 63 63 61 77 72 74 60 79 76 64 63 63 66 70 68 65 72 62 65 67
 69 75 63 70 71 60 72 63 61 78 79 76 66 61 73 68 62 69 60 78 65 73 66 70
 70 63 79 75 78 77 71 78 61 63 60 66 67 65 76 67 65 70 62 76 61 79 75 63
 60 76 74 74 75 61 67 62 77 72 66 61 66 66 74 72 77 69 62 74 75 71 75 69
 70 68 60 62]
======================================================================
BatchedScipyOMP          :    2.111 ms  ( 47359.7 problems/sec)
BatchedScipySequential   :   11.944 ms  (  8372.4 problems/sec)
Lap1015                  :   26.514 ms  (  3771.6 problems/sec)
Lap1015Sequential        :   27.155 ms  (  3682.6 problems/sec)
Lap1015SequentialLambda  :   27.567 ms  (  3627.5 problems/sec)
Lap1015SequentialNoEps   :   14.398 ms  (  6945.2 problems/sec)
Lap1015SequentialNoEpsLambda:   14.492 ms  (  6900.5 problems/sec)
Scipy                    :   11.982 ms  (  8345.7 problems/sec)
ScipyMP8                 :  504.157 ms  (   198.4 problems/sec)

======================================================================
LARGE MATRICES WITH SMALL BATCHES
======================================================================

--- Large square matrices (1000x1000) with small batches ---

======================================================================
Generator: get_full_square_matrix
Matrix size: (1000, 1000)
======================================================================
BatchedScipyOMP          :   32.155 ms
BatchedScipySequential   :   32.797 ms
Lap1015                  :   31.520 ms
Lap1015Sequential        :   31.126 ms
Lap1015SequentialLambda  :   31.063 ms
Lap1015SequentialNoEps   :   43.815 ms
Lap1015SequentialNoEpsLambda:   43.581 ms
Scipy                    :   31.588 ms
ScipyMP8                 :   31.212 ms

--- Large square matrices (5000x5000) with small batches ---

======================================================================
Generator: get_full_square_matrix
Matrix size: (5000, 5000)
======================================================================
BatchedScipyOMP          : 1516.832 ms
BatchedScipySequential   : 1473.716 ms
Lap1015                  : 1056.493 ms
Lap1015Sequential        : 1056.428 ms
Lap1015SequentialLambda  : 1061.757 ms
Lap1015SequentialNoEps   : 2188.951 ms
Lap1015SequentialNoEpsLambda: 1979.095 ms
Scipy                    : 1500.213 ms
ScipyMP8                 : 1516.988 ms

--- Large square matrices (10000x10000) with small batches ---

======================================================================
Generator: get_full_square_matrix
Matrix size: (10000, 10000)
======================================================================
BatchedScipyOMP          : 9003.271 ms
BatchedScipySequential   : 8806.452 ms
Lap1015                  : 5587.785 ms
Lap1015Sequential        : 4706.204 ms
Lap1015SequentialLambda  : 4926.049 ms
Lap1015SequentialNoEps   : 13166.499 ms
Lap1015SequentialNoEpsLambda: 12300.760 ms
Scipy                    : 7677.407 ms
ScipyMP8                 : 7604.816 ms

======================================================================
Benchmark suite complete!
======================================================================

