Params:
- num_param_rows=200
- num_param_cols=50
- out_size=100
- num_ops=200
- num_runs=10
- dtype=<dtype: 'float32'>

Running tests:
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> pad_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> pad_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> pad_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> pad_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(1,), indices_shape=(1,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> noop: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> noop: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> noop: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> noop: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(100,), indices_shape=(100,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(50,), indices_shape=(50,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(50,), indices_shape=(50,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(50,), indices_shape=(50,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(50,), indices_shape=(50,), out_size=100
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(50,), indices_shape=(50,), out_size=100
--> gather_1d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(50,), indices_shape=(50,), out_size=100
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(50,), indices_shape=(50,), out_size=100
--> gather_1d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(50,), indices_shape=(50,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> pad_2d: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> pad_2d: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> pad_2d: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> pad_2d: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> custom_gather_cols: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> custom_gather_cols: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> custom_gather_cols: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> custom_gather_cols: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 1), indices_shape=(1,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> noop: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> noop: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> noop: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> noop: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom_gather_cols: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom_gather_cols: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom_gather_cols: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom_gather_cols: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom_gather_cols: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom_gather_cols: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom_gather_cols: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom_gather_cols: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 100), indices_shape=(100,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> custom: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> custom: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> gather_nd: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> gather_nd: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> custom_gather_cols: on_gpu=False, index_dtype=<class 'numpy.int32'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> custom_gather_cols: on_gpu=False, index_dtype=<class 'numpy.int64'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> custom_gather_cols: on_gpu=True, index_dtype=<class 'numpy.int32'>, params_shape=(200, 50), indices_shape=(50,), out_size=100
--> custom_gather_cols: on_gpu=True, index_dtype=<class 'numpy.int64'>, params_shape=(200, 50), indices_shape=(50,), out_size=100

-----------------------
1d_1index
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      787.98          397.07           6.77       True
            custom int64:  1199      796.00          392.63           6.11       True
         gather_1d int32:  1599     1284.30          534.92          22.42       True
         gather_1d int64:  1599     1312.47          538.64           1.54       True
            pad_1d int32:   999      866.54          262.48           0.86       True
            pad_1d int64:   999      802.09          261.07           0.84       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      753.79         1789.09          56.30       True
            custom int64:  1199      955.41          367.50          16.82       True
         gather_1d int32:  1599     1273.31          567.81          28.06       True
         gather_1d int64:  1599     1487.50          519.35           8.13       True
            pad_1d int32:   999      816.61          269.19           3.08       True
            pad_1d int64:   999      804.19          268.89           3.11       True

-----------------------
1d_passthrough_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      928.72          400.41           8.09       True
            custom int64:  1199      781.23          404.81           5.40       True
         gather_1d int32:  1599     1262.58          508.92           1.74       True
         gather_1d int64:  1599     1240.12          549.09           1.56       True
              noop int32:   599      389.00          129.20           0.35       True
              noop int64:   599      337.35          127.69           0.35       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      817.06          381.47          34.23       True
            custom int64:  1199      814.70          368.74          25.38       True
         gather_1d int32:  1599     1244.67          574.49          18.46       True
         gather_1d int64:  1599     1248.14          507.08           7.73       True
              noop int32:   599      377.63          133.61           0.62       True
              noop int64:   599      337.13          132.45           0.64       True

-----------------------
1d_reverse_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      792.05          394.57           5.55       True
            custom int64:  1199      741.95          404.31           7.08       True
         gather_1d int32:  1599     1450.34          496.51           1.67       True
         gather_1d int64:  1599     1275.88          540.10           1.69       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      789.12          390.48          33.39       True
            custom int64:  1199      946.45          383.57          29.21       True
         gather_1d int32:  1599     1281.46          569.98          13.32       True
         gather_1d int64:  1599     1423.00          510.03           7.75       True

-----------------------
1d_random_50indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      835.30          396.48           3.66       True
            custom int64:  1199      756.29          407.21           3.95       True
         gather_1d int32:  1599     1342.91          503.97           1.63       True
         gather_1d int64:  1599     1262.50          536.28           1.42       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      805.88          396.93          25.54       True
            custom int64:  1199      912.76          378.29          21.99       True
         gather_1d int32:  1599     1269.89          574.27          11.25       True
         gather_1d int64:  1599     1403.12          508.24           7.58       True

-----------------------
2d_1index
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      844.16          395.24           4.22       True
            custom int64:  1199      743.64          418.55           4.10       True
custom_gather_cols int32:  3199     3218.36         1159.00          30.20       True
custom_gather_cols int64:  3199     3166.03         1163.69          44.04       True
         gather_nd int32:  6399     5957.12         2026.45          29.11       True
         gather_nd int64:  6399     6055.01         2009.02          27.94       True
            pad_2d int32:   999      865.48          272.99           9.92       True
            pad_2d int64:   999      859.28          270.47           9.13       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      831.34          391.66          20.65       True
            custom int64:  1199      938.73          377.02          15.36       True
custom_gather_cols int32:  3199     3292.35         1186.05          17.22       True
custom_gather_cols int64:  3199     3331.25         1186.11          11.82       True
         gather_nd int32:  6399     6289.45         2128.59          25.15       True
         gather_nd int64:  6399     6085.72         2208.39          18.31       True
            pad_2d int32:   999      844.58          307.86           2.26       True
            pad_2d int64:   999      774.54          321.02           2.97       True

-----------------------
2d_passthrough_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      797.71          491.49          23.62       True
            custom int64:  1199      859.29          380.27          23.28       True
custom_gather_cols int32:  3199     3182.20         1123.78          10.78       True
custom_gather_cols int64:  3199     3193.40         1135.34          11.11       True
         gather_nd int32:  6399     5807.69         2029.84          43.50       True
         gather_nd int64:  6399     5983.76         2030.37          43.54       True
              noop int32:   599      490.24          161.14           0.33       True
              noop int64:   599      345.35          129.86           0.30       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      864.35          400.91          31.17       True
            custom int64:  1199      855.98          374.34          24.00       True
custom_gather_cols int32:  3199     3144.10         1158.93          15.46       True
custom_gather_cols int64:  3199     3187.06         1146.98          12.07       True
         gather_nd int32:  6399     5993.35         2056.34          20.52       True
         gather_nd int64:  6399     6200.37         2058.67          19.12       True
              noop int32:   599      379.36          132.76           0.78       True
              noop int64:   599      338.90          170.41           0.81       True

-----------------------
2d_reverse_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      980.66          372.05          23.73       True
            custom int64:  1199      835.89          373.41          15.31       True
custom_gather_cols int32:  3199     3321.98         1162.97          42.82       True
custom_gather_cols int64:  3199     3223.08         1168.16          45.32       True
         gather_nd int32:  6399     5827.79         2148.87          42.97       True
         gather_nd int64:  6399     5860.40         2003.21          41.82       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      826.92          444.40          31.00       True
            custom int64:  1199      887.30          443.24          27.63       True
custom_gather_cols int32:  3199     3265.14         1165.07          15.39       True
custom_gather_cols int64:  3199     3189.81         1131.31          11.44       True
         gather_nd int32:  6399     6204.59         2227.66          24.04       True
         gather_nd int64:  6399     6099.52         2066.12          17.44       True

-----------------------
2d_random_50indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      847.04          357.79          22.14       True
            custom int64:  1199      942.45          375.94          19.33       True
custom_gather_cols int32:  3199     3205.18         1150.79          38.34       True
custom_gather_cols int64:  3199     3202.19         1230.67          43.30       True
         gather_nd int32:  6399     5964.83         2175.80          41.22       True
         gather_nd int64:  6399     5994.99         2040.21          42.62       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      840.98          444.95          26.85       True
            custom int64:  1199      910.64          448.25          24.19       True
custom_gather_cols int32:  3199     3208.90         1154.19          15.86       True
custom_gather_cols int64:  3199     3103.76         1136.77           8.67       True
         gather_nd int32:  6399     6082.00         2095.91          23.74       True
         gather_nd int64:  6399     6034.92         2080.34          19.45       True
