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

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

-----------------------
1d_1index
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      320.75           45.50           0.38       True
         custom int64:   999      296.96           44.39           0.40       True
      gather_1d int32:   999      295.86           42.91           0.38       True
      gather_1d int64:   999      299.33           43.62           0.38       True
       slice_1d int32:  1199      436.06           51.91           0.44       True
       slice_1d int64:  1199      490.60           53.67           0.38       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      297.80          174.56           3.43       True
         custom int64:   999      347.15           47.54           1.48       True
      gather_1d int32:   999      358.76           64.43           3.37       True
      gather_1d int64:   999      296.95           46.71           1.43       True
       slice_1d int32:  1199      431.50           56.94           1.41       True
       slice_1d int64:  1199      434.22           57.84           1.42       True

-----------------------
1d_passthrough_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      348.77           43.69           0.45       True
         custom int64:   999      290.35           43.03           0.45       True
      gather_1d int32:   999      295.62           44.05           0.50       True
      gather_1d int64:   999      296.50           44.74           0.53       True
           noop int32:   599      183.25           22.37           0.23       True
           noop int64:   599      184.64           22.04           0.23       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      291.78           62.30           3.39       True
         custom int64:   999      347.08           48.77           1.51       True
      gather_1d int32:   999      347.28           63.79           3.32       True
      gather_1d int64:   999      296.90           48.46           1.44       True
           noop int32:   599      184.72           24.57           0.35       True
           noop int64:   599      243.74           24.87           0.37       True

-----------------------
1d_opt_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      291.16           44.91           0.53       True
         custom int64:   999      291.06           43.33           0.52       True
      gather_1d int32:   999      293.77           44.00           0.53       True
      gather_1d int64:   999      294.32           45.05           0.53       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      291.63           62.11           3.42       True
         custom int64:   999      346.50           47.64           1.52       True
      gather_1d int32:   999      346.05           64.68           3.39       True
      gather_1d int64:   999      293.72           48.36           1.39       True

-----------------------
1d_worst_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      290.93           43.36           0.56       True
         custom int64:   999      349.02           45.33           0.55       True
      gather_1d int32:   999      295.00           44.06           0.54       True
      gather_1d int64:   999      357.63           46.58           0.55       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      287.94           62.77           3.37       True
         custom int64:   999      292.87           47.09           1.54       True
      gather_1d int32:   999      292.88           62.39           3.28       True
      gather_1d int64:   999      295.61           48.46           1.41       True

-----------------------
1d_random_50indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      343.09           43.99           0.47       True
         custom int64:   999      289.61           42.92           0.53       True
      gather_1d int32:   999      292.00           43.48           0.44       True
      gather_1d int64:   999      293.71           45.18           0.44       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      290.33           62.52           3.34       True
         custom int64:   999      345.23           48.71           1.53       True
      gather_1d int32:   999      299.39           63.33           3.33       True
      gather_1d int64:   999      359.09           48.62           1.44       True

-----------------------
2d_1index
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      295.48           43.00           0.61       True
         custom int64:   999      293.17           42.90           0.60       True
      gather_nd int32:  4199     1433.14          212.55          11.54       True
      gather_nd int64:  4199     1486.82          208.42          11.60       True
       slice_2d int32:  1199      502.45           54.38           0.62       True
       slice_2d int64:  1199      426.90           52.70           0.62       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      345.74           64.34           3.33       True
         custom int64:   999      294.25           46.92           1.64       True
      gather_nd int32:  4199     1472.45          240.89           5.96       True
      gather_nd int64:  4199     1460.57          218.29           4.15       True
       slice_2d int32:  1199      473.06           58.97           1.54       True
       slice_2d int64:  1199      424.13           57.21           1.50       True

-----------------------
2d_passthrough_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      288.74           43.75           1.26       True
         custom int64:   999      347.49           44.81           1.29       True
      gather_nd int32:  4199     1477.65          217.58          22.96       True
      gather_nd int64:  4199     1478.16          223.51          22.54       True
           noop int32:   599      183.98           22.90           0.27       True
           noop int64:   599      186.67           22.45           0.27       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      289.78           62.28           3.56       True
         custom int64:   999      291.18           47.76           1.60       True
      gather_nd int32:  4199     1462.50          238.11           6.97       True
      gather_nd int64:  4199     1489.72          218.87           5.09       True
           noop int32:   599      186.51           24.55           0.50       True
           noop int64:   599      184.86           25.29           0.51       True

-----------------------
2d_opt_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      383.77           51.75           8.45       True
         custom int64:   999      290.95           52.54           9.03       True
      gather_nd int32:  4199     1422.86          220.36          22.15       True
      gather_nd int64:  4199     1460.88          222.07          21.92       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      290.06           62.33           3.51       True
         custom int64:   999      347.42           48.49           1.66       True
      gather_nd int32:  4199     1491.94          235.11           6.95       True
      gather_nd int64:  4199     1469.49          220.28           5.12       True

-----------------------
2d_worst_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      294.44           57.49          13.42       True
         custom int64:   999      378.89           59.36          14.39       True
      gather_nd int32:  4199     1473.05          221.41          22.68       True
      gather_nd int64:  4199     1471.69          225.48          23.21       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      288.68           62.21           3.50       True
         custom int64:   999      293.00           47.19           1.63       True
      gather_nd int32:  4199     1460.64          235.83           6.96       True
      gather_nd int64:  4199     1483.69          221.30           5.13       True

-----------------------
2d_random_50indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      293.86           51.43           7.00       True
         custom int64:   999      291.68           50.17           7.51       True
      gather_nd int32:  4199     1430.72          221.13          18.95       True
      gather_nd int64:  4199     1494.17          216.16          19.10       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      379.26           63.91           3.42       True
         custom int64:   999      293.32           48.20           1.62       True
      gather_nd int32:  4199     1474.12          237.52           7.02       True
      gather_nd int64:  4199     1459.50          218.64           5.10       True
