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      270.13           49.49           0.47       True
         custom int64:   999      251.99           47.21           0.45       True
      gather_1d int32:   999      253.47           47.05           0.49       True
      gather_1d int64:   999      285.77           47.48           0.46       True
       slice_1d int32:  1199      367.73           56.09           0.45       True
       slice_1d int64:  1199      424.55           57.59           0.45       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      254.19          173.56           2.86       True
         custom int64:   999      296.17           50.74           1.52       True
      gather_1d int32:   999      304.54           65.45           2.64       True
      gather_1d int64:   999      251.50           52.97           1.42       True
       slice_1d int32:  1199      383.00           61.03           1.55       True
       slice_1d int64:  1199      369.90           60.00           1.44       True

-----------------------
1d_passthrough_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      330.76           52.38           0.68       True
         custom int64:   999      248.73           47.23           0.51       True
      gather_1d int32:   999      251.63           47.04           0.57       True
      gather_1d int64:   999      250.96           47.17           0.60       True
           noop int32:   599      153.12           24.95           0.32       True
           noop int64:   599      162.82           27.02           0.37       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      248.19           65.52           2.67       True
         custom int64:   999      311.42           53.23           1.47       True
      gather_1d int32:   999      299.66           65.89           2.62       True
      gather_1d int64:   999      262.26           51.08           1.43       True
           noop int32:   599      172.27           32.55           0.70       True
           noop int64:   599      206.99           25.44           0.59       True

-----------------------
1d_opt_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      241.56           50.17           0.60       True
         custom int64:   999      274.60           45.33           0.54       True
      gather_1d int32:   999      250.73           46.58           0.61       True
      gather_1d int64:   999      248.57           48.70           0.62       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      246.41           64.57           2.68       True
         custom int64:   999      310.77           51.14           1.47       True
      gather_1d int32:   999      294.93           63.97           2.64       True
      gather_1d int64:   999      281.14           57.81           1.67       True

-----------------------
1d_worst_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      247.38           44.70           0.59       True
         custom int64:   999      292.02           45.35           0.58       True
      gather_1d int32:   999      246.84           45.51           0.62       True
      gather_1d int64:   999      300.03           45.80           0.62       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      243.62           64.06           2.68       True
         custom int64:   999      260.15           48.65           1.51       True
      gather_1d int32:   999      246.21           63.46           2.63       True
      gather_1d int64:   999      267.27           49.07           1.43       True

-----------------------
1d_random_50indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      328.59           47.27           0.51       True
         custom int64:   999      244.14           45.00           0.50       True
      gather_1d int32:   999      248.07           45.96           0.50       True
      gather_1d int64:   999      248.45           45.76           0.53       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      242.92           63.23           2.66       True
         custom int64:   999      304.61           49.49           1.49       True
      gather_1d int32:   999      250.36           64.44           2.60       True
      gather_1d int64:   999      311.66           49.92           1.42       True

-----------------------
2d_1index
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      244.17           45.56           0.55       True
         custom int64:   999      281.76           48.84           0.63       True
      gather_nd int32:  4199     1203.63          221.83          13.44       True
      gather_nd int64:  4199     1298.14          231.05          13.78       True
       slice_2d int32:  1199      411.79           55.39           0.69       True
       slice_2d int64:  1199      363.05           59.74           0.68       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      295.69           63.35           2.68       True
         custom int64:   999      273.45           51.69           1.51       True
      gather_nd int32:  4199     1279.92          245.86           5.25       True
      gather_nd int64:  4199     1302.49          226.11           3.84       True
       slice_2d int32:  1199      408.51           58.63           1.48       True
       slice_2d int64:  1199      393.60           59.52           1.58       True

-----------------------
2d_passthrough_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      244.95           45.76           1.18       True
         custom int64:   999      294.95           49.40           1.18       True
      gather_nd int32:  4199     1258.92          265.43          26.74       True
      gather_nd int64:  4199     1273.37          234.21          26.19       True
           noop int32:   599      153.18           24.05           0.38       True
           noop int64:   599      150.74           23.39           0.34       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      247.64           64.40           2.82       True
         custom int64:   999      245.74           49.09           1.58       True
      gather_nd int32:  4199     1278.94          250.06           6.27       True
      gather_nd int64:  4199     1271.17          228.30           4.71       True
           noop int32:   599      150.04           25.27           0.70       True
           noop int64:   599      173.63           28.34           0.70       True

-----------------------
2d_opt_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      330.94           53.73           8.17       True
         custom int64:   999      242.06           52.48           8.27       True
      gather_nd int32:  4199     1198.54          262.52          26.39       True
      gather_nd int64:  4199     1229.11          235.62          26.01       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      242.02           63.99           2.84       True
         custom int64:   999      307.42           49.68           1.58       True
      gather_nd int32:  4199     1278.37          242.09           6.27       True
      gather_nd int64:  4199     1226.66          227.20           4.62       True

-----------------------
2d_worst_100indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      241.92           58.62          12.23       True
         custom int64:   999      322.72           65.49          13.52       True
      gather_nd int32:  4199     1241.67          233.19          26.36       True
      gather_nd int64:  4199     1266.20          238.38          26.24       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      257.30           63.94           2.80       True
         custom int64:   999      253.37           48.49           1.59       True
      gather_nd int32:  4199     1216.68          242.45           6.28       True
      gather_nd int64:  4199     1284.54          229.27           4.60       True

-----------------------
2d_random_50indices
-----------------------
CPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      244.03           50.96           6.56       True
         custom int64:   999      247.18           51.50           6.67       True
      gather_nd int32:  4199     1216.78          232.16          21.64       True
      gather_nd int64:  4199     1248.36          260.70          22.38       True
GPU          op    dt:  size  setup_time  first_run_time  rest_run_time    correct
         custom int32:   999      324.30           63.39           2.96       True
         custom int64:   999      254.27           56.20           1.75       True
      gather_nd int32:  4199     1222.95          247.16           6.08       True
      gather_nd int64:  4199     1256.14          224.64           4.72       True
