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      323.28           58.37           0.61       True
            custom int64:  1199      304.71           58.20           0.61       True
         gather_1d int32:  1599      488.60           76.86           0.79       True
         gather_1d int64:  1599      452.63           78.40           0.75       True
            pad_1d int32:   999      326.92           45.23           0.47       True
            pad_1d int64:   999      347.68           43.05           0.47       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      344.40          185.90           3.59       True
            custom int64:  1199      315.50           69.92           2.48       True
         gather_1d int32:  1599      539.44          100.47           4.53       True
         gather_1d int64:  1599      450.98           85.00           3.10       True
            pad_1d int32:   999      291.10           47.89           1.42       True
            pad_1d int64:   999      288.26           46.87           1.40       True

-----------------------
1d_passthrough_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      428.19           62.91           1.65       True
            custom int64:  1199      296.98           56.87           1.66       True
         gather_1d int32:  1599      456.66           84.09           0.81       True
         gather_1d int64:  1599      502.75           77.39           0.82       True
              noop int32:   599      152.58           23.59           0.32       True
              noop int64:   599      176.99           25.84           0.33       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      343.47           76.48           3.30       True
            custom int64:  1199      307.32           60.24           2.06       True
         gather_1d int32:  1599      448.67           99.23           4.59       True
         gather_1d int64:  1599      507.09           90.49           3.35       True
              noop int32:   599      165.23           25.13           0.62       True
              noop int64:   599      212.11           25.03           0.58       True

-----------------------
1d_reverse_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      324.13           57.10           1.72       True
            custom int64:  1199      342.86           58.13           1.73       True
         gather_1d int32:  1599      498.07           79.97           0.82       True
         gather_1d int64:  1599      441.96           76.33           0.80       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      292.97           78.10           3.28       True
            custom int64:  1199      311.22           61.50           2.09       True
         gather_1d int32:  1599      531.48          100.09           4.67       True
         gather_1d int64:  1599      447.11           85.07           2.97       True

-----------------------
1d_random_50indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      349.99           56.59           1.19       True
            custom int64:  1199      297.48           56.24           1.17       True
         gather_1d int32:  1599      483.58           90.00           0.88       True
         gather_1d int64:  1599      500.59           78.00           0.99       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      343.04           78.74           3.31       True
            custom int64:  1199      315.09           60.43           2.07       True
         gather_1d int32:  1599      485.82          105.40           4.56       True
         gather_1d int64:  1599      452.05           88.06           3.04       True

-----------------------
2d_1index
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      302.42           58.74           1.51       True
            custom int64:  1199      359.43           58.10           1.46       True
custom_gather_cols int32:  3199     1105.62          190.22          13.38       True
custom_gather_cols int64:  3199     1108.64          180.30          13.19       True
         gather_nd int32:  6399     2106.08          369.27          17.86       True
         gather_nd int64:  6399     2162.73          374.12          17.55       True
            pad_2d int32:   999      310.25           48.90           4.17       True
            pad_2d int64:   999      316.39           47.08           4.19       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      340.57           75.97           3.43       True
            custom int64:  1199      352.97           60.50           2.18       True
custom_gather_cols int32:  3199     1069.15          202.82           6.12       True
custom_gather_cols int64:  3199     1123.76          185.32           4.57       True
         gather_nd int32:  6399     2181.23          401.07          10.14       True
         gather_nd int64:  6399     2144.64          385.07           7.80       True
            pad_2d int32:   999      366.42           48.99           1.47       True
            pad_2d int64:   999      290.06           48.14           1.58       True

-----------------------
2d_passthrough_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      351.50           64.61           7.67       True
            custom int64:  1199      300.51           66.04          10.60       True
custom_gather_cols int32:  3199     1159.31          178.80           3.13       True
custom_gather_cols int64:  3199     1076.47          179.96           3.01       True
         gather_nd int32:  6399     2037.60          370.86          31.57       True
         gather_nd int64:  6399     2149.89          378.93          30.52       True
              noop int32:   599      160.83           23.93           0.32       True
              noop int64:   599      163.63           27.01           0.35       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      341.49           77.70           3.48       True
            custom int64:  1199      322.35           62.72           2.21       True
custom_gather_cols int32:  3199     1105.74          214.35           6.11       True
custom_gather_cols int64:  3199     1082.74          184.17           4.70       True
         gather_nd int32:  6399     2119.10          402.07           9.84       True
         gather_nd int64:  6399     2185.39          381.52           8.08       True
              noop int32:   599      231.66           27.08           0.72       True
              noop int64:   599      152.65           25.06           0.64       True

-----------------------
2d_reverse_100indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      350.91           65.02           7.67       True
            custom int64:  1199      300.14           67.12          10.79       True
custom_gather_cols int32:  3199     1138.21          186.67          14.13       True
custom_gather_cols int64:  3199     1067.53          186.64          14.45       True
         gather_nd int32:  6399     2020.47          386.31          31.11       True
         gather_nd int64:  6399     2120.61          381.69          31.37       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      310.55           88.05           3.94       True
            custom int64:  1199      358.80           63.72           2.11       True
custom_gather_cols int32:  3199     1102.83          206.59           6.16       True
custom_gather_cols int64:  3199     1092.71          190.22           4.68       True
         gather_nd int32:  6399     2126.60          398.04          10.06       True
         gather_nd int64:  6399     2161.81          382.56           8.15       True

-----------------------
2d_random_50indices
-----------------------
CPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      349.12           70.64           7.85       True
            custom int64:  1199      306.98           73.87           9.52       True
custom_gather_cols int32:  3199     1128.99          186.23          14.21       True
custom_gather_cols int64:  3199     1061.75          184.16          13.93       True
         gather_nd int32:  6399     2058.95          391.73          25.53       True
         gather_nd int64:  6399     2070.18          399.25          26.02       True
GPU             op    dt:  size  setup_time  first_run_time  rest_run_time    correct
            custom int32:  1199      362.74           81.21           3.45       True
            custom int64:  1199      316.43           63.49           2.17       True
custom_gather_cols int32:  3199     1092.01          201.52           6.04       True
custom_gather_cols int64:  3199     1071.09          185.37           4.60       True
         gather_nd int32:  6399     2098.09          394.57          10.35       True
         gather_nd int64:  6399     2106.39          382.69           7.78       True
